Every so often I re-read a book that I read years ago to remember what it is about. Mostly, I re-read sci-fi or notable works such as Neuromancer (William Gibson) or The Hitchhiker’s Guide to the Galaxy (Douglas Adams) since those are the types of books that I kept over the years.
However, I kept a book from 1989 called Life with UNIX (Don Libes & Sandy Ressler) that I remember using as a good UNIX reference a long time ago. While browsing the Net, I happened across a recent review of it that said it was “a timeless book on everything UNIX – 90% of it still applies today.”
So, I decided to re-read it. And boy, am I glad I did! It truly lives up to its title.
Over half of the book teaches you UNIX structure, commands, programming, etc. I know all of that stuff already, but I read through it anyways because I was shocked at how well the authors communicated the information in an easy-to-understand way. I have written many textbooks on UNIX and Linux – mastering UNIX and the ability to teach UNIX are two very different skill sets that are rarely seen together, and these authors have both.
The rest of the book is the exciting part for me. The authors give a detailed account of UNIX history and introduce the main purpose of UNIX (“the UNIX way”), which is often overlooked in UNIX books:
- UNIX is much more than such simplistic definitions. It is more than an operating system. It is a philosophy of programming. The main tenet is that the power of UNIX comes from the relations between the programs rather than the programs themselves. UNIX encourages one to take existing programs and combine them into a new, more useful program.
Moreover, the authors enlighten us as to how the UNIX way developed, and it’s early focus on the DEC PDP-11:
- However, the PDP-11 line was clearly based around a 16-bit address space. Because of this, all of he programs were limited to 64KB. Ironically, this emphasized the building of small programs. With the advent of pipes to support cooperating processes, and exec(), which supported program chaining, it was possible to build large systems by linking together several smaller utilities. This is a hallmark of UNIX programming, and it is possible that we have the restricted address space of the PDP-11 to thank for it.
This book discusses how UNIX split into two streams: the BSD (Berkeley Software Distribution) UNIX stream was the research arm of UNIX, while the AT&T System V UNIX stream was the commercial arm that was licensed to hundreds of vendors. Moreover, since UNIX was easily ported to different hardware platforms, it became the first example of an “open” system:
UNIX is a wonderfully open system. Openness isn’t something bestowed or permitted – it is an attribute of the underlying architecture of a system. While many systems claim to be “open,” UNIX pioneered the concept even before the word was coined.
As a result, UNIX proliferated in the 1980s. The U.S. Government and DARPA eventually went with UNIX because it was common in research fields at the time and because it was “open”, changes and improvements could be made without begging a proprietary vendor to do them. For software developers, it made you feel better to support and develop a system that is used on a wide range of the market, and hardware vendors preferred “open” systems like UNIX over the numerous proprietary systems out there in the 80s since there was more support. If you hired people, they likely knew UNIX.
Now comes the really exciting part of the book: the authors speculate on the future of UNIX based on their knowledge of it in 1989. And like Nostradamus, they were bang on! Although they didn’t foresee Linux, they predicted Mac OS X perfectly. Mac OS X is the world’s most advanced OS today – it has an amazing graphical interface that anyone can use, and under the hood the whole system is a BSD-like UNIX system derived from NeXTSTEP/OPENSTEP with a Mach UNIX kernel.
These are some quotes from the book regarding UNIX in the future (from 1989):
What about the Apple Macintosh? Well, the Macintosh can hardly be called a competitor. Apple’s A/UX operating system for the Mac II is UNIX with an Apple front-end. This could only help UNIX for the future.
Mach is a modern version of UNIX. Mach was specifically designed to support multiprocessor and parallel computation while retaining the features of UNIX. With a completely rewritten kernel, Mach is potentially a UNIX for the next generation.
If UNIX is to survive into the next decade, we are going to have to do something about its user interface. … Undoubtedly, we will see implementations of Mac-like front-ends on top of UNIX systems.
Although less impressive, the authors also predicted the proliferation of laptop computers and large computer networks such as the Internet:
- The future of portable systems seems clear. They will continue to decrease in price and weight. The will increase in power and functionality. Lastly, expected future increases in data transmission rates over dialup lines will provide portables with the ability to network with geographically distant LANs.
What an amazing read. Complaints about this book should be redirected to /dev/null.