Plan 9 from Bell Labs
You must add a |reason=
parameter to this Cleanup template – replace it with {{Cleanup|March 2006|reason=<Fill reason here>}}
, or remove the Cleanup template.
File:Plan9bunnysmblack.jpg | |
Developer | Bell Labs |
---|---|
OS family | Unix successor |
Working state | Current |
Source model | Open Source |
Latest release | Fourth Edition / daily snapshots |
Kernel type | Hybrid |
License | Lucent Public License |
Official website | plan9.bell-labs.com |
Plan 9 from Bell Labs is a distributed operating system, primarily used as a research vehicle. It was developed as the research successor to Unix by the Computing Sciences Research Center at Bell Labs between the mid-1980s and 2002. Plan 9 is most notable for representing all system interfaces, including those required for networking and the user-interface, through the filesystem rather than specialized interfaces. Plan 9 aimed to provide users with a workstation-independent working environment through the use of the 9P protocols. Plan 9 continues to be used in some circles as a research operating system and by hobbyists.
The name "Plan 9 from Bell Labs" was coined from the science fiction movie Plan 9 from Outer Space.
History
Plan 9 replaced Unix at Bell Labs as the organization's primary platform for research and explores several changes to the original Unix model that improve the experience of using and programming the system, notably in distributed multi-user environments. Plan 9 was a Bell Labs internal project from its start during the mid 1980s. In 1992, the first public release was made available to universities. In 1995, a commercial second release version was made available to the general public. In the late 1990s, Lucent Technologies, who had inherited Bell Labs, dropped commercial interest for the project. In 2000, a non-commercial third release was made under an open source license. In 2002, a non-commercial fourth release was made under a new free software license.
Today, an installable runtime environment exists for x86, and Plan 9 has been ported to MIPS, Alpha, SPARC, PowerPC, ARM and other architectures. The system is written in a dialect of C. Several applications were originally written in a language called Alef, but have since been rewritten in the same C dialect. Plan 9 can import POSIX applications and can emulate the Berkeley socket interface through APE.
A user and development community, including current and former Bell Labs and MIT members, continues to produce daily minor releases as ISO images. Bell Labs still hosts development. [1] The development source tree is accessible over the 9P and HTTP protocols and are used to keep an installation up to date.[2]
Overview
All resources as files
One of the key features adopted from Unix was the use of the file system to access resources. Before Unix, most operating systems had different mechanisms for accessing different types of devices. For example, the API to access a disk drive was vastly different from the API used to send and receive data from a serial port, which in turn was different from the API used to send data to a printer. Unix attempted to remove these distinctions. All device drivers were required to support meaningful read and write operations as a means of control. This lets programmers create utilties like mv and cp to send data from one device to another without being aware of the underlying implementation details.
However, at the time, many key concepts (such as the control of process state) did not seem to map neatly onto files. As new features like Berkeley sockets and the X Window System were added, they were incorporated to exist outside the file system. New hardware features (such as the ability to eject a CD in software) also encouraged the use of hardware-specific control mechanisms like the ioctl system call.
The Plan 9 research project rejected these different approaches. Each Plan 9 program views all available resources, including networking and the user-interface resources (like the window it is running in), as part of a hierarchical file system, rather than specialized interfaces.[1]
Unicode support
Plan 9 uses Unicode throughout the system. UTF-8 was invented by Ken Thompson to be used as the native encoding in Plan 9 and the whole system was converted to use it everywhere in 1992.[3] Plan 9 uses a windowing system called rio.
Research team
Plan 9 from Bell Labs was developed by members of the Computing Science Research Center at Bell Labs, the same group that developed UNIX, C, and C++.[4] The Plan 9 team was originally led by Rob Pike, Ken Thompson, Dave Presotto and Phil Winterbottom with support from Dennis Ritchie as head of the Computing Techniques Research Department. Over the years many notable developers have contributed to the project including Brian Kernighan, Tom Duff, Doug McIlroy, Bjarne Stroustrup and many others.[5]
Design concepts
Plan 9's designers were interested in goals similar to those of microkernels, but made different architecture and design choices to achieve them. Plan 9's design goals included:
- Resources as files: all resources are represented as files within a hierarchical file system
- Namespaces: the application view of the network is a single, coherent namespace that appears as a hierarchical file system but may represent physically separated (locally or remotely) resources
- Standard communication protocol: a standard protocol, called 9P, is used to access all resources, both local and remote
Filesystems, files, and names
Plan 9 extended 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 (similar in concept to the more widely known URI system of the world wide web). In Unix, devices such as printers had been represented by names using software converters in /dev
, but these addressed only devices attached by hardware, and did not address networked devices. Under Plan 9 printers were as virtualized as files, and both could be accessed over the network from any workstation.
Another Plan 9 innovation was the ability for users to have different names for the same "real world" objects. Each user could create a personalized environment by collecting various objects into their namespace. Unix has a similar concept in which users gain privileges by being copied from another user, but Plan 9 extends this to all objects. Users can easily spawn "clones" of themselves, modify them, and then remove them without affecting the resources from which they were created.
Union directories
Plan 9 also introduced the idea of union directories, directories that combine resources across different media or across a network, binding transparently to other directories. For example, another computer's /bin
(applications) directory can be bound to one's own, and then this directory will hold both local and remote applications and the user can access both transparently. Unix links and filesystem mounts, made the original directory disappear. Using the same system, under Plan 9 external devices and resources can be bound to /dev
, making all devices network devices without additional code.
/proc
To illustrate how these features worked together to produce a greater whole, consider the rather interesting /proc
directory, in which all running applications were listed. Applications are named objects under Plan 9, like anything else, and therefore it made sense to list them in a directory, like anything else. This simple change has fairly useful side-effects, allowing the user to use tools such as ls
to search and sort the process list, which was previously available only to specialized tools. But even more interesting, users could union remote applications into their namespace as well, interacting with them as if they were local, and making network-wide processing almost a triviality.
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 the existing hierarchical directory/name system familiar to most computer users. A user could "build" a system by collecting up directories on fileservers, applications running on servers, printers on the network and then bind them all together into their account running on a terminal.
Networking and distributed computing
Plan 9 is based on 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 multiple views of the distributed system can 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.
Key to supporting the network transparency of Plan 9 was a new low-level networking protocol known as 9P. The 9P protocol and its implementation connected named network objects and presented a file-like system interface. 9P is a fast byte-oriented (rather than block-oriented) distributed file system that can virtualize any object, not only those presented by an NFS server on a remote machine. The protocol is used to refer to and communicate with processes, programs, and data, including both the user interface and the network. With the release of the 4th edition, it was modified and renamed 9P2000.
Implementations

An installable runtime environment exists for x86, and Plan 9 has been ported to MIPS, Alpha, SPARC, PowerPC, ARM and other architectures. The system is written in a dialect of ISO/ANSI C. Several applications were originally written in a language called Alef, but have since been rewritten in the same C dialect. Plan 9 can import POSIX applications and can emulate the Berkeley socket interface through APE. Recently, a new application called linuxemu was developed that can be used to run Linux binaries; it is, however, still a work in progress.
Impact
Plan 9 demonstrated that a central concept of Unix—that every system interface could be represented as sets of files—could be implemented and made functional in a modern distributed system. Some ideas from Plan 9 have been implemented in other operating systems. Unix-like operating systems such as Linux have implemented some of Plan 9's file system, the UTF-8 character encoding, and limited forms of rfork-like system calls. Additionally, several of Plan 9's applications and tools have been ported to Unix and Linux systems and have achieved some level of popularity.
However, Plan 9 itself has never surpassed Unix in popularity, and remains primarily a research tool. Plan 9 has been criticized as "seem[ing] to function mainly as a device for generating interesting papers on operating-systems research." Eric S. Raymond in his book The Art of Unix Programming speculates on Plan 9's lack of acceptance:
- "Plan 9 failed simply because it fell short of being a compelling enough improvement on Unix to displace its ancestor. Compared to Plan 9, Unix creaks and clanks and has obvious rust spots, but it gets the job done well enough to hold its position. There is a lesson here for ambitious system architects: the most dangerous enemy of a better solution is an existing codebase that is just good enough."[6]
Other critics of Plan 9 include those critical of Unix in general, where Plan 9 is considered the epitome of the "Worse is better" school of operating system design, taking simplicity as a design goal to an extreme.[citation needed]
Plan 9 proponents and developers claim that the problems hindering its adoption have been solved, and its original goals as a distributed system, development environment, and research platform have been met, and that it enjoys moderate but growing popularity. Inferno, through its hosted capabilities, has been a vehicle to bring Plan 9 technologies to other systems as part of heterogeneous computing grids.[7][8][9][10]
License
The full source code is freely available under Lucent Public License 1.02, and considered open source by the OSI and free software by the FSF. It passes the Debian Free Software Guidelines.
Related work
Inferno
Inferno is a derivative product, originally started by the same group that created Plan 9, and now developed by a British company, Vita Nuova. Inferno shares many of the same design concepts as Plan 9, but uses a new application programming language, Limbo, and an accompanying virtual machine, Dis. Inferno is marketed as an open source embedded operating system.
Plan 9 from User Space
Plan 9 from User Space (or plan9port or p9p) is a port of most of the notable Plan 9 libraries and applications to Unix-like operating systems.
References
- ^ a b "Plan 9 from Bell Labs". Lucent Technologies. 2006. Retrieved April 27.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ "Staying up to date". Plan 9 community. 2006. Retrieved April 27.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ Pike, Rob (2003). "UTF-8 History". Retrieved April 27.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ "From the inventors of UNIX system comes Plan 9 from Bell Labs". Lucent Technologies. 1995. Retrieved April 2.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ McIlroy, Doug (1995). "Preface to the Second (1995) Edition". Lucent Technologies. Retrieved April 2.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ Raymond, Eric S. "Plan 9: The Way the Future Was". Retrieved March 28.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ "9grid (Plan 9 wiki)". Plan 9 wiki. 2006. Retrieved March 28.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ ""Press Release: Vita Nuova Supplies Inferno Grid to Evotec OAI" (PDF). Vita Nuova Holdings Limted. 2004. Retrieved March 28.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ ""Press Release: Rutgers University Libraries Install Inferno Data Grid"" (PDF). Vita Nuova Holdings Limited. 2004. Retrieved March 28.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help) - ^ ""Press Release: The University of York Department of Biology install Vita Nuova's Inferno Data Grid"" (PDF). Vita Nuova Holdings Limited. 2004. Retrieved March 28.
{{cite web}}
: Check date values in:|accessdate=
(help); Unknown parameter|accessyear=
ignored (|access-date=
suggested) (help)
See also
Standard Plan 9 utilities
- rc - the Plan 9 shell
- sam - a text editor
- acme - a user interface for programmers
- plumber - interprocess messaging
- Mk - a tool for building software, analogous to the traditional Unix make utility
- rio - the new Plan 9 windowing system
- 8½ - the old Plan 9 windowing system
- Fossil and Venti - the new archival file system and permanent data store
See the article about Plan 9 applications for a more complete list.
Implementation artifacts
- 9P - a filesystem protocol
- rendezvous - a basic synchronization mechanism
- Brazil - what became the Fourth Edition of Plan 9
Influenced
- Plan 9 from User Space - a port of many Plan 9 libraries and applications to Unix-like operating systems
- Inferno - distributed operating system following up Plan 9
- Plan B - research operating system based on Plan 9
- 9wm - X Window manager that clones the Plan 9 interface
- wmii - X Window manager that uses a file system-like interface based on 9P
External links
Bell Labs
- Plan 9 homepage
- Plan 9 Overview
- The papers
- Browsable full source code
- Plan 9 Wiki - powered by wikifs
- Plan 9 documentation index
- Plan 9 manual
- Plan 9 download
- Installation notes
- Plan 9 FAQ
Lectures
- Slides - Video from FOSDEM 2006
- Plan 9 is not dead at FAST-OS 2005
Other
- 9fans, the Plan 9 mailing list hosted by Penn State
- #plan9, the Plan 9 IRC channel hosted by Freenode
- Boxed version of Plan 9 by Vita Nuova
- "Plan 9: The Way the Future Was" from Eric S. Raymond's book The Art of Unix Programming
- Plan 9 as a Qemu image
- Incomplete list of organizations using Plan 9
- Reinventing UNIX: An introduction to the Plan 9 operating system, by Hancock, B., Giarlo, M.J., & Triggs, J. A., published in Library Hi Tech, 21(4), 471-476.