Do one thing, and do it well: 40 years of UNIX

40years
Generally speaking, 40 is considered “over the hill” in human beings. I’m 35, and as I get closer and closer to the crest of that hill, I can tell you with some certainty that the best is yet to come. I think the same holds true for operating systems. UNIX turns 40 this month. That’s right: it was four decades ago that Dennis Ritchie and Ken Thompson worked in the AT&T Bell Labs on the successor to Multics.

“Unix was created to solve a few problems,” said Dr [Peter] Salus, “the most important of which was to have something that was much more compact than the operating systems that were current at that time which ran on the dinosaurs of the computer age.” The UNIX philosophy is “Do one thing, and do it well.” Rather than have one monolithic kernel with lots and lots of functionality built in, UNIX had a very small kernel with a strong complement of little helper utilities. Things like ‘ls’ and ‘cat’ aren’t core parts of the kernel, but rather discrete binary programs.

Along came Doug McIlroy, who introduced the concept of “pipes”. You could take the output of one program and feed it as input to another program. In this way, many small utilities could be chained together to create amazingly functional processes. Another upshot of this design mentality is that fixing bugs is easier: rather than working through a complex monolithic kernel and worrying about complex regression testing, one could focus on a single, small binary application. New features could be added to such binaries, and whole new binary applications could be rolled out quickly and without much direct coordination from any central body.

It’s easy for us UNIX and Linux users to lob potshots at Microsoft for it’s monolithic DOS and Windows design models; but the Redmond products are good examples of some of the problems with monolithic software design. Do you think there’s anyone at Microsoft who knows, on his or her own, how all of the pieces of Windows work together? It’s nigh impossible for any one person to have the breadth and depth of experience to know how all the UI, networking, storage, scheduling and security systems work on their own, let alone in conjunction with one another. Instead you have teams of people working on various aspects of the system, and inter-team communication and coordination can become a real impediment to success.

Contrast that to the UNIX design model, where the kernel is pretty small, and people really can know most of what goes on in the kernel. Guys like Linus Torvalds and Andrew Morton can know the nitty gritty of the core kernel, without having to know — or even care, much — about the nitty gritty of the X Window system, or how the GNOME environment works: other people are responsible for those things because they are, literally, separate things. If you don’t like GNOME, you can use KDE, or XFCE, or Oroboros, or Blackbox, or any number of other window manager solutions. Not so with Windows, where the GUI they make is the only GUI you get, and making changes to it may have substantial effect on other, non-GUI aspects of the system. The same holds true for filesystems, and networking protocols, and all manner of other things that get added on to the kernel by way of modules: the kernel developers need only present a consistent and stable API and ABI to allow other folks to extend the kernel functionality with new modules.

If you haven’t used UNIX (Solaris, AIX, HP-UX, Linux, what-have-you), you owe it to yourself to give it an honest examination. Dr. Salus has a great quote in this BBC story:

Unix is the best screwdriver ever built

And, if you live anywhere near Columbus, OH, you can see Peter Salus and Doug McIlroy on Saturday, September 25 at The Ohio LinuxFest: both men will be presenting at the event. Registration is free! I’ve been involved with OLF for several years now, and it really is a great opportunity to learn more about Linux, and Free Software generally. Jon ‘maddog’ Hall wrote a pretty good overview of what OLF is, and why it’s worth attending. If you want to learn more about UNIX, Free Software, Linux, or just network with computer luminaries like McIlroy and Salus, come celebrate 40 years of UNIX with Ohio LinuxFest.