Lightweight distributed computing

Plan 9 is an operating system originally developed by many of the same people at Bell Labs who created Unix. Plan 9 demonstrates a new and often cleaner way to solve most systems problems. The system as a whole is likely to feel tantalizingly familiar to Unix users but at the same time quite foreign.

In Plan 9, each process has its own name space. A process may rearrange, add to, and remove from its own name space without affecting the name spaces of unrelated processes. This includes the ability to mount a connection to a file server speaking 9P, a simple file protocol. The connection may be a network connection, a pipe, or any other file descriptor open for reading and writing with a 9P server on the other end. Customized name spaces are used heavily throughout the system, to present new resources (e.g., the window system), to import resources from another machine (e.g., the network stack), or to browse backward in time (e.g., the dump file system). For example, device drivers in Plan 9 work by exposing a 9P server, typically mounted in /dev, and can be imported from other systems, transparently.

Over time, Plan 9 has given rise to a number of offshoot projects. Inferno took many of the systems-level ideas, combined them with Limbo, a new concurrent programming language, and built them into a system which could run on bare hardware or hosted on another operating system. Plan9port takes many of the user-mode libraries and utilities and enables them to run on Unix-like systems. Each of these extends the ways Plan 9's ideas can be applied to different classes of problems.

In addition to these directly related projects, ideas from Plan 9 have found their way into many other operating systems and environments. The /proc filesystem in several unixes, the rfork() call in various BSD systems, the 9P interface WSL uses to talk to Linux systems, and even UTF-8 all come from Plan 9. The concurrent programming model in Go came directly from that found in Inferno's Limbo.

lightbulb_outline View ideas list


  • c
  • distributed systems
  • concurrency
  • golang


comment IRC Channel
email Mailing list
mail_outline Contact email

Plan 9 Foundation 2021 Projects

  • Dimitrios Iatrakis
    Add support for OAuth2 Login (i.e. OpenID Connect) authentication to factotum
    A proposal for the inclusion of OAuth 2.0 and OpenID Connect support in factotum. The main issue is that the structure of the OAuth landing page is...
  • Cameron Connell
    Modernize the underlying data struct of edwood
    Adding a modern edit buffer data structure to edwood and solving a few other issues, time permitting.