In that case Unix was misdesigned. Proper design stops its users from doing stupid things and enables them to do clever things. It makes the right thing obvious and easy and the wrong thing difficult to impossible.
It seems like your comment misses the point of the Unix philosophy, which is that the designers do not undertake to know in advance exactly which user actions are “stupid” and which are “clever”. Unix is supposed to be a solid framework in which you can do things; figuring out what’s stupid and what’s clever is left to the user. It is an expression of fundamental designer trust in the user.
A car can be driven on the road, or it can go onto a sidewalk and kill pedestrians and the driver. In comparison, a train or trolley can’t easily go off its rails.
Is a car misdesigned because it is an open-ended, unconstrained tool? Not necessarily; you must weigh the costs of other possibilities against their benefits.
Unix is deliberately built as a general open-ended collection of tools. It enables many more things to be done than other systems which start by presuming a list of things the user wants to do. And some of the things it enables are mostly harmful, although they too are sometimes useful. It’s not misdesigned; it makes a design tradeoff that is the correct one in some situations, and not in others.
I think the chief obstacle to preventing stupidity without preventing cleverness is that there are clever ideas you haven’t thought of yet that sound stupid. There’s also the fact that what is stupid under one set of circumstances is clever under others.
Suppose I was designing a new car radiator, and I decided that I wanted to prevent idiots from, say, filling it with motor oil, so I built a system which would prevent the addition of anything other than water or antifreeze. Then suppose the radiator sprang a leak. At this point, the owner of the car might want to use the old shade-tree mechanic’s trick of putting an egg in the radiator that will flow to the leak and produce a plug (or, more intelligently, a synthetic compound that does it more effectively and with less likely damage to the machinery) … but they can’t, because of the thing I did to prevent stupidity.
These two concepts do not contradict each other. Unix can allow “doing stupid things” AND at the same time make them “difficult to impossible”. So, the conclusion that Unix was misdesigned is not correct, at least not basing on your definition
When the right thing can be made obvious and easy, it generally does so. It also makes the wrong thing difficult. However, short of giving it AI, there is no way for Unix to tell a clever thing from a wrong thing, so it lets you do both, but only if you’re logged in as root.
Upvoted, but I feel that it could be more clear: You’re focused on the idea of “Make new mistakes instead of trying to repeat previous successes”, right?
That is, commit new stupidities instead of old stupidities or old successes.
In that case Unix was misdesigned. Proper design stops its users from doing stupid things and enables them to do clever things. It makes the right thing obvious and easy and the wrong thing difficult to impossible.
It seems like your comment misses the point of the Unix philosophy, which is that the designers do not undertake to know in advance exactly which user actions are “stupid” and which are “clever”. Unix is supposed to be a solid framework in which you can do things; figuring out what’s stupid and what’s clever is left to the user. It is an expression of fundamental designer trust in the user.
A car can be driven on the road, or it can go onto a sidewalk and kill pedestrians and the driver. In comparison, a train or trolley can’t easily go off its rails.
Is a car misdesigned because it is an open-ended, unconstrained tool? Not necessarily; you must weigh the costs of other possibilities against their benefits.
Unix is deliberately built as a general open-ended collection of tools. It enables many more things to be done than other systems which start by presuming a list of things the user wants to do. And some of the things it enables are mostly harmful, although they too are sometimes useful. It’s not misdesigned; it makes a design tradeoff that is the correct one in some situations, and not in others.
I think the chief obstacle to preventing stupidity without preventing cleverness is that there are clever ideas you haven’t thought of yet that sound stupid. There’s also the fact that what is stupid under one set of circumstances is clever under others.
Suppose I was designing a new car radiator, and I decided that I wanted to prevent idiots from, say, filling it with motor oil, so I built a system which would prevent the addition of anything other than water or antifreeze. Then suppose the radiator sprang a leak. At this point, the owner of the car might want to use the old shade-tree mechanic’s trick of putting an egg in the radiator that will flow to the leak and produce a plug (or, more intelligently, a synthetic compound that does it more effectively and with less likely damage to the machinery) … but they can’t, because of the thing I did to prevent stupidity.
These two concepts do not contradict each other. Unix can allow “doing stupid things” AND at the same time make them “difficult to impossible”. So, the conclusion that Unix was misdesigned is not correct, at least not basing on your definition
When the right thing can be made obvious and easy, it generally does so. It also makes the wrong thing difficult. However, short of giving it AI, there is no way for Unix to tell a clever thing from a wrong thing, so it lets you do both, but only if you’re logged in as root.
Being able to design stupid things is an important skill for any designer. Steering away from it tends to reduce your process to cached thoughts.
Upvoted, but I feel that it could be more clear: You’re focused on the idea of “Make new mistakes instead of trying to repeat previous successes”, right?
That is, commit new stupidities instead of old stupidities or old successes.
You can still hammer your thumb with a hammer. That doesn’t make it a badly designed tool for driving nails.
In unix, all you have to refrain from doing is
rm -rf /
and you will be fine.