« | Home | »

Happy Birthday, UNIX™

By Noah | August 26, 2009

40 years ago, in August of 1969, Ken Thompson‘s wife headed west for a few weeks on a family trip, leaving Ken the month it would take to allocate “one week each to the four core components of operating system, shell, editor and assembler” that he and Dennis Ritchie decided to write after work on Multics was canceled.  (see article on the BBC’s Web site.) 

If you want to get a sense of just how small and beautifully done Unix was in the early days, take a look at the Level 6 Source code (PDF) and accompanying commentary from John Lions.  In the late 1970’s, Lions’ notes and that source were what many of us used to learn the kernel.  Yes, the entire kernel really did come in at under 9000 lines of source, and it included such enduring achievements as the open/close/read/write abstraction for files and devices, fork/exec, pipes, block and raw devices registered in the filesystem, etc.  Perhaps most important, it showed that operating systems could be portable across hardware architectures.

I can offer one small anecdote relating to Ken and Unix:  at the 1983 ACM Symposium on Operating Systems Principles,  a small crowd of us gathered at night in the big open lounge area of the Mount Washington Hotel.  Ken was making the point that what distinguished Unix was its small size and internal consistency.  I asked him:  “but Ken, many of the systems I’ve worked on have grown big because new features were added, and eventually we wound up with several ways of doing the same things”.  “Ah,” he replied, “what makes Unix different is that whenever we add something, we take something out, so it stays small.”  I think of that discussion often when I see systems like Solaris, Red Hat, Linux, or even Cygwin.

Lest the above story be taken amiss, I have tremendous admiration for Ken, whom I’ve only met once or twice since.   He is one of the great computer scientists of the 20th century, and according to our several mutual friends a really nice guy.  His Turing award lecture Reflections on Trusting Trust is one of the most important (and enjoyable!) papers in computer science.  It includes the famous quote:

“The moral is obvious. You can’t trust code that you did not totally create yourself. (Especially code from companies that employ people like me.) No amount of source-level verification or scrutiny will protect you from using untrusted code.”

I also suspect that Ken would stand by what he said about keeping Unix small, notwithstanding some of the variants that have come along over the years.

Topics: History of computing | No Comments »

Submit a comment:

Please press the submit comment button below to submit your comment for posting. All comments are moderated, so your comment will not appear until it has been reviewed. The blog owner reserves the right to decline to post any comment for any reason. Also, by pressing the submit comment button, you confirm your acceptance of the legal agreement below. Please read it before submitting your comment.

Legal agreement: by pressing the submit comment button you grant to Noah Mendelsohn a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your comment contribution and derivative works thereof. Noah Mendelsohn reserves the right to republish such material in any form, though reasonable efforts will be made to retain the attribution to you. You also confirm that you have not knowingly violated copyright or other applicable laws pertaining to material that you have quoted or reproduced in your comment. (Note: if this agreement is not acceptable, an alternative is for you to post your comment on your own blog or other public Web site, and to post a link to that here. That way, you may retain more complete control of your own material.)