Sunday, May 27, 2007

UNIX: A Personal Retrospective

I first started using UNIX at university back in 1980: it wasn't the first operating system that I had used – I had also programmed on an ICL 1909 and a IBM 360, but UNIX was definitely the first operating system that seemed to me to have a distinct identity and shape: something you could understand and get your head around.

UNIX had been developed at Bell Labs back when AT&T had neither interest nor mandate to get into the commercial software business, and so they made the software available free to the academic community. (In the old days, AT&T was guaranteed a 15% ROE by the government by virtue of being the national telephone monopoly, and as a result was constrained in terms of entering into new businesses.) One consequence of this lack of commercial interest by AT&T was that UNIX was essentially open-source from the very beginning.

The "open-source" aspect of UNIX in those pre-Internet days seems very quaint today: magnetic tapes containing the UNIX distribution and other goodies went around from one university to another. When a tape arrived, the smartest Comp Sci student around would grab the latest stuff off the tape, add any local contributions, and then send the tape on to another university.

Students and researchers would make little (or large) tools that they would dump onto the tape and pass along to another university. My personal favorite was "fred" (for "friendly editor"): a modified version of "vi" with an extended set of commands and improved UI.

Looking at the gigantic ball of code that is Windows today, what seems particularly remarkable is that in the early 1980s is that we had a very strict, highly circumscribed definition of an "operating system". Only the UNIX kernel was considered to be the OS; everything else, including the shell, was considered an add-on or tool. The kernel had to be mean, lean and clean at all times: a high-performance, highly reliable platform that would leave all the user interactions and functions to the applications and tools.

This provided a lot of flexibility: choosing between "vi" and "fred", or, at a more fundamental level, between the original shell and the new-fangled Korn shell was easy and non-destructive to your fellow user. It also provided a lot of stability, since it was difficult for any single application to crash the entire computer.

My first full-time job was as a UI developer at Bell Labs. All of our work was done on UNIX, using Vax 750s from Digital Equipment. I don't remember what their specs were, but given Moore's Law it is probably safe to assume that they collectively had less horsepower than my cellphone today.

Bell Labs was a great place to work if you were into UNIX and C coding. The atmosphere was very relaxed, more like a university campus than an office, and you had access to great talent. I still remember attending a lunch-time lecture by Richard Feynman; his opening remarks were: "I am going to assume that everyone here is familiar with advanced quantum mechanics..." A bunch of people immediately left the lecture.

And here's a piece of trivia that I picked up at Bell Labs: when Ken Thompson and Dennis Ritchie wanted to work on building a new operating system, they needed to come up with some sort of business justification for the project. At that time AT&T was filing patent applications at a furious rate – they were averaging one patent grant per business day! – so they had a critical need for a good typesetting program with which to lay out their patent applications.

Thompson and Ritchie proposed to build a new typesetting program called "roff" (which later became "troff"). This was approved. Thompson and Ritchie then proposed to build a new operating system to better support the new typesetting program. Since the typesetting program was considered essential for dealing with all those patent applications, they got the go-ahead to built UNIX.

For a while the official raison d'etre for UNIX was that it supported AT&T's patent filings. This quickly changed once people realized that UNIX was small, high-performing, and very stable: in other words, ideal for the new super-fast switches that AT&T was building.

So, even as we take sides in the great Microsoft vs Linux Patent Debate, it is worth remembering that it was AT&T's need to file patents that helped give birth to UNIX in the first place... (And without UNIX would we have Linux today?)

0 Comments:

Post a Comment

<< Home