LWN.net Logo

Author interview: UNIX and Linux System Administration Handbook

Author interview: UNIX and Linux System Administration Handbook

Posted Jul 15, 2010 10:07 UTC (Thu) by madhatter (subscriber, #4665)
Parent article: Author interview: UNIX and Linux System Administration Handbook

Garth wrote:

I'd like to see more focus on simplicity and predictability in Linux distributions and less concern about hypothetical scenarios and edge cases. A Linux server may be a lot more complicated than an iPhone, but it surely doesn't need to be 1000 times more complicated, as it currently is.

I think he may well be right about the first part, but the second contains, to my mind, a hidden assumption. In his essay "In the Beginning was the Command Line", Neal Stephenson writes:

We like plain dealings and straightforward transactions in America. If you go to Egypt and, say, take a taxi somewhere, you become a part of the taxi driver's life; he refuses to take your money because it would demean your friendship, he follows you around town, and weeps hot tears when you get in some other guy's taxi. You end up meeting his kids at some point, and have to devote all sort of ingenuity to finding some way to compensate him without insulting his honor. It is exhausting. Sometimes you just want a simple Manhattan-style taxi ride.

But in order to have an American-style setup, where you can just go out and hail a taxi and be on your way, there must exist a whole hidden apparatus of medallions, inspectors, commissions, and so forth--which is fine as long as taxis are cheap and you can always get one. When the system fails to work in some way, it is mysterious and infuriating and turns otherwise reasonable people into conspiracy theorists. But when the Egyptian system breaks down, it breaks down transparently. You can't get a taxi, but your driver's nephew will show up, on foot, to explain the problem and apologize.

Microsoft and Apple do things the Manhattan way, with vast complexity hidden behind a wall of interface. Linux does things the Egypt way, with vast complexity strewn about all over the landscape. If you've just flown in from Manhattan, your first impulse will be to throw up your hands and say "For crying out loud! Will you people get a grip on yourselves!?" But this does not make friends in Linux-land any better than it would in Egypt.

I felt this was powerfully true when I first read it, and I still think it is. A lot of the complexity of Linux systems is there because all the knobs are exposed, so you can twiddle them as need arises. And that is for your own good, if you are the sort of person who values freedom.

To make a system more simple is often to hide complexity; this is usually done by taking decisions on behalf of the user, and that reduces control. I don't think it's possible to make Linux systems as seamless iphones, and I don't think it's a desirable goal. If I want a beautiful, simple user interface, over which I lack control, I can buy a mac or an ipad; when I'm using Linux, I want that control, and I accept the exposed complexity, and the consequent requirement that I learn about it, as the price of that control.


(Log in to post comments)

Author interview: UNIX and Linux System Administration Handbook

Posted Jul 22, 2010 10:38 UTC (Thu) by obi (subscriber, #5784) [Link]

madhatter wrote:
To make a system more simple is often to hide complexity; this is usually done by taking decisions on behalf of the user, and that reduces control.
and:
when I'm using Linux, I want that control, and I accept the exposed complexity, and the consequent requirement that I learn about it, as the price of that control.

There's other ways. In the Ruby/Rails world there's a pattern of "Convention over Configuration". The idea is to make the common things really easy, and the uncommon things possible. By making some decisions and choosing some defaults up front, you cover 90% of the cases and make it really easy for anyone to jump in. But you still have the ability to override these choices explicitly.

The only criticism I've heard against this is "Explicit is better than implicit" (see f.e. "The Zen of Python"). The reasoning goes that with CoC there's a lot of magic, and little discoverability; one has to dig in the docs to know exactly what and how one can override. But IMHO it seems like a good thing that you have to do effort to deviate from the norm; and that when you do it becomes really obvious.

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds