Just because a tool can be misused is not an argument against it nor its inclusion.
I used to believe this, but now I couldn't disagree more. People can and do misuse things all the bloody time, and the more you enable them to do that, the worse your tool is. How people use what you make is every bit as important, possibly even more important than the technical merits of what you make.
I'd rather a builder use a second hand hammer to nail something than try doing it with a jackhammer.
>People can and do misuse things all the bloody time, and the more you enable them to do that
This is an excuse for educating people, not an excuse for kneecapping the majority due to an ignorant minority. This is the kind of thinking that plagues the GNOME3 devs and gets ridiculed so often around here. The user is an idiot so let's remove features.
I don't see many people harshing on Rails for the inclusion of WEBrick.
> People can and do misuse things all the bloody time and the more you enable them to do that, the worse your tool is.
In terms of avoiding accidents I agree, but in general, I don't like this kind of thinking.
One man's misuse is another man's hack. The flipside here is that the more you limit and subdivide a tool, the worse your tool becomes.
I'd also rather see builder using something else than a jackhammer to nail stuff, but then I also want him to have access to one if he needs it, and I strongly want people to stop shouting "omg you can't use X to do Y, because X was not meant to do Y". First principle of hacking: tools do not have inherent purpose, they can be used to do whatever we want; they only can be better or worse at a particular task. The world didn't collapse into logical contradiction the last time I cut pizza with a sound card, because of lack of any other sharp tool nearby.
> People can and do misuse things all the bloody time, and the more you enable them to do that, the worse your tool is.
By that measure, PostgreSQL is a horrible database. After all look what happens when I do this:
CREATE TABLE foo (
id serial not null unique,
bar text primary key
);
CREATE TABLE foobar (
chunk_id serial not null unique,
foos foo[]
);
INSERT INTO foobar (foos) values (array[row(1, null)::foo, row(2, '1323')::foo, row(3, '2222')::foo]);
select * from foobar;
I mean my gods. Such horrible misuse of a relational db!
I used to believe this, but now I couldn't disagree more. People can and do misuse things all the bloody time, and the more you enable them to do that, the worse your tool is. How people use what you make is every bit as important, possibly even more important than the technical merits of what you make.
I'd rather a builder use a second hand hammer to nail something than try doing it with a jackhammer.