Main Page | See live article | Alphabetical index

Plan 9

Plan 9 is a Unix-like operating system developed by Bell Laboratories. The first edition of Plan 9 was released in 1993, a second shrink-wrapped version in 1995, and the third under a non-free licence (but with source code available) in 2000. A fouth release was made in 2002, and the license amended in 2003. Plan 9 may now be called Open Source according to the OSI's definition, as well as free software according to the Free Software Foundation's (FSF) definition. However, the license is judged not to be compatible with the GNU Public License (GPL).

Rights to a derivative product, Inferno, are held by a UK company, Vita Nuova. Inferno shares many of the same design concepts as Plan 9, but utilizes a new application programming language, Limbo, and an accompanying virtual machine, Dis. Inferno is marketed as an embedded operating system, and is proprietary software.

A readily installable runtime environment only exists for x86 currently, but Plan 9 can be made to run, and compile binaries for, the Intel, MIPS, DEC Alpha, and PowerPC architectures. It is written in a strict dialect of ISO/ANSI C. It can import POSIX applications and can emulate the Berkeley socket interface. It has complete UTF-8 support, and a windowing system called rio.

The name is based on the scifi movie Plan 9 from Outer Space directed by Ed Wood, which many consider one of the worst (or best, depending on your point of view) movies ever made.

Table of contents
1 History
2 Design concepts
3 License
4 See also
5 External links


Plan 9 started at about the same time that large-scale efforts were being made to productize microkernel operating systems. In the microkernel world, the "whole idea" is to reduce the kernel to the bare minimum functions needed by all operating systems at their core. This includes such duties as arbitrating access to hardware, memory, and time on the CPU. A complete OS would then be created as a selection of programs running on top of the kernel, known as servers, communicating to each other by passing messages. The advantage to this approach was that it modularized the operating system, as well as allowing those messages to be passed among machines to create a single larger computer.

Design concepts

Plan 9's designers were also interested in similar goals, but took a different route entirely. Instead of asking the question "what do all operating systems want to do", Plan 9 asked "what is Unix really trying to do?". The answers to these two questions are very different, and in the case of Plan 9 this included:

and nothing more.

The first issue was handled by extending the system beyond files to "names", that is, a unique path to any object whether it be a file, screen, user, or computer. All were handled using the existing Unix standards, but extended such that any object could be named and addressed (a similar need created the widely-used URI system).

In addition to this, the system allowed objects to have different names for different users, in effect each user could create their own customized "meta-computer" by collecting various named objects into their workspace. Unix has a similar concept in which users gain privileges by being copied from another user, but in Plan 9 this can be extended to any object. In fact the user can easily spawn another copy of themselves, modify that copy, and then dump it without it affecting any of the original resources. This kind of transparency is often implemented by union directories, where directories across different media or across a network can be bound to other directories transparently. For example, another computer's binary directory can be bound to one's own and then this directory will hold both local binaries and the remote binaries and can use both transparently. As such, external devices and resources can be bound to /dev.

The second issue resulted in a new low-level networking protocol known as 9P. Simply put, 9P was a system for connecting one named object to another using a file-like system. 9P can be thought of as a fast byte-oriented (as opposed to block-oriented) version of NFS, one that can talk to any object and not just an NFS server on the remote machine.

The result is a distributed computing environment assembled from separate machines – terminals that sit on users' desks, file servers that store permanent data, and other servers that provide faster CPUs, user authentication, and network gateways, all using 9P. The protocol is used to refer to and communicate with processes, programs, and data, including both the user interface and the network.

It is based on the best features of UNIX but was developed to demonstrate the concept of making communication the central function of the computing system -- all system resources are named and accessed as if they were files and allowing multiple views of the distributed system to be defined dynamically for each program running on a particular machine. This approach improves generality and modularity of application design by encouraging servers that hold any information to appear to users and to applications just like collections of ordinary files.


The source code is easily available, and Plan 9's license is now considered Open Source by OSI and free software by FSF, though judged not to be compatible with the GPL.

See also

Standard Plan 9 utilities

External links