Recently I have been exploring the Plan 9 research operating system. I was asked by a colleague what the attraction is, so here are some of my reasons.
First, I started using Unix some time ago (Version 6 on a DEC PDP-11 in 1980). I find myself in agreement with some of the reactions of the Unix/Plan 9 founders to the way Unix developed. When the Berkeley sockets API arrived I had two reactions, namely "how come they aren't files?" and "how come they are so hard to use?". I had the same questions when System V arrived and brought with it a twisted model of shared memory and ftok(). So a system designed to push what I regard as the best features of Unix is naturally attractive to me.
Second, to my taste Solaris and Linux (the most-used Unix descendants) are experiencing very rapid feature bloat and associated feature confusion. One example I recently came across: The cdrecord command, used to record onto CD/DVD media, has a truly bewildering command-line interface. Some options are specified the traditional way (-dummy performs a dry-run recording), but unaccountably the device you wish to record onto is specified as dev=ATAPI:0,0,0 (note the utter absence of a filename for the device). Plan 9's cdfs is not only simpler but conceptually coherent.
Third, I would like to see what it's like to live in a system which is designed from the ground up to be distributed. So far the more I've tried it the more I like it.
Fourth, I am interested, not only by "microkernels" (whatever that means), but generally by non-monolithic kernels. Having a tarball file system (mount a tarball and you can read the README where it sits) just feels right, and any system which won't let me do that feels unnecessarily cramped. Looking at it another way, the Plan 9 kernel source (port/ plus pc/) is roughly 40,000 lines of code, well within the ability of a single person to read.
Fifth, the system and community as things stand are small enough that new things can be tried. Linux is busy (very busy) trying to re-create Windows & Office on the desktop. I'm glad, since I'd prefer a BSD or Linux desktop to a Windows desktop any day, but that can't be the final goal. Here's Jef Raskin on the topic: The World Has Changed, But We Forgot To.
Speaking of Raskin, I recommend his book The Humane Interface. Interestingly, there are several areas of agreement between Plan 9 and what Raskin advocates:
- Your computer should be designed not to lose your data (P9: centralized, snapshot-based file system),
- All text should be executable, unlike the situation in modern GUIs, where menu items are the only text which can be executed (P9: acme),
- Functionality should be added to the system not via monolithic applications but by plug-ins to a core application, the editor (P9: acme),
- Avoidance of icons.