Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Plan 9 from Bell Labs
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Research distributed operating system}} {{Good article}} {{Infobox OS | name = Plan 9 from Bell Labs | logo = Spaceglenda.svg{{!}}class=skin-invert | logo size = 120px | logo caption = Glenda, the Plan 9 mascot in a space suit, drawn by [[Renée French]]<ref>{{Cite web|url=https://9p.io/plan9/index.html|title=Plan 9 from Bell Labs}}</ref><ref>{{cite web|url = https://9p.io/plan9/glenda.html|title = Glenda, the Plan 9 Bunny |access-date = 2008-12-02|last = Lucent Technologies|author-link = Lucent Technologies|year = 2006}}</ref> | screenshot = Plan 9 Fourth Edition rio interaction screenshot.png | caption = [[rio (windowing system)|rio]], default user interface of Plan 9 from Bell Labs | developer = Plan 9 Foundation, succeeding {{nowrap|[[Bell Labs]]}} | source model = [[Open-source software|Open source]] | supported platforms = [[x86 architecture|x86]] / [[Vx32]], [[x86-64]], [[MIPS architecture|MIPS]], [[DEC Alpha]], [[SPARC]], [[PowerPC]], [[ARM architecture|ARM]] | kernel type = [[Monolithic kernel|Monolithic]]<ref name="Crawford 1999 pp. 11–15">{{cite journal | last=Crawford | first=Diane | title=Forum | journal=[[Communications of the ACM]] | publisher=[[Association for Computing Machinery]] (ACM) | volume=42 | issue=8 | year=1999 | issn=0001-0782 | doi=10.1145/310930.310939 | pages=11–15| s2cid=263897745 }}</ref> | ui = [[rio (windowing system)|rio]] / [[Rc (Unix shell)|rc]] | family = | released = {{nowrap|{{Start date and age|1992}} (universities) /}} {{nowrap|{{Start date and age|1995}} (general public)}} | latest release version = Fourth Edition | latest release date = {{Start date and age|2015|01|10}}<ref>{{cite web |url = http://plan9.bell-labs.com/plan9checksums.txt |archive-url = https://web.archive.org/web/20170601074943/http://plan9.bell-labs.com/plan9checksums.txt |archive-date = 2017-06-01 |title = plan9checksums |access-date = 2019-07-25 |publisher = Bell Labs |quote = Sat Jan 10 04:04:55 EST 2015 ... plan9.iso.bz2 }}</ref> | discontinued = no | marketing target = Operating systems research, networked environments, general-purpose use | programmed in = Dialect of [[ANSI C]] | prog language = | language = English | updatemodel = | package manager = | working state = Current<ref>{{cite web |title=Plan 9 Foundation: Activities |url=http://plan9foundation.org/activities.html |website=plan9foundation.org |access-date=23 March 2021}}</ref><ref>{{cite web |title=9legacy |url=http://9legacy.org/patch.html |website=9legacy.org |access-date=23 March 2021}}</ref> | license = 2021: [[MIT License|MIT]]<ref>{{cite web |title=Plan 9 License |url=http://p9f.org/license.html |website=p9f.org |access-date=14 June 2021 |archive-date=14 June 2021 |archive-url=https://web.archive.org/web/20210614163403/http://p9f.org/license.html |url-status=live}}</ref><ref name="plan9 copyright transfer" /><br />2014: [[GNU General Public License|GPL-2.0-only]]<ref>{{cite web |title=Plan9License |url=http://akaros.cs.berkeley.edu/files/Plan9License |website=akaros.cs.berkeley.edu |access-date=14 June 2021 |quote=''The University of California, Berkeley, has been authorised by Alcatel-Lucent to release all Plan 9 software previously governed by the Lucent Public License, Version 1.02 under the GNU General Public License, Version 2.''|archive-date=13 February 2014 |archive-url=https://web.archive.org/web/20140213172858/http://akaros.cs.berkeley.edu/files/Plan9License}}</ref><br />2002: [[Lucent Public License|LPL-1.02]]<ref>{{cite web |title=Lucent Public License Version 1.02 |url=http://plan9.bell-labs.com/plan9dist/license.html |website=plan9.bell-labs.com |access-date=14 June 2021 |archive-date=3 October 2003 |archive-url=https://web.archive.org/web/20031003143445/http://plan9.bell-labs.com/plan9dist/license.html}}</ref><br />2000: Plan 9 OSL<ref>{{cite web |title=Plan 9 Open Source License - Version 1.4 - 09/10/02 |url=http://plan9.bell-labs.com/plan9dist/license.html |website=plan9.bell-labs.com |access-date=14 June 2021 |archive-date=18 December 2002 |archive-url=https://web.archive.org/web/20021218022657/http://plan9.bell-labs.com/plan9dist/license.html}}</ref><ref>{{cite web |title=Plan 9 Open Source License - Version 1.2 - 10/29/00 |url=http://plan9.bell-labs.com/plan9dist/license.html |website=plan9.bell-labs.com |access-date=14 June 2021 |archive-date=6 December 2000 |archive-url=https://web.archive.org/web/20001206083100/http://plan9.bell-labs.com/plan9dist/license.html}}</ref><ref>{{cite web |title=Plan 9 Open Source License - Version 1.1 - 09/20/00 |url=http://plan9.bell-labs.com/plan9dist/license.html |website=plan9.bell-labs.com |access-date=14 June 2021 |archive-date=26 October 2000 |archive-url=https://web.archive.org/web/20001026141512/http://plan9.bell-labs.com/plan9dist/license.html}}</ref><ref>{{cite web |title=Plan 9 Open Source License Agreement |url=http://plan9.bell-labs.com/plan9dist/license.html |website=plan9.bell-labs.com |access-date=14 June 2021 |archive-date=16 August 2000 |archive-url=https://web.archive.org/web/20000816164219/http://plan9.bell-labs.com/plan9dist/license.html}}</ref> | website = {{URL|http://p9f.org/}} | influenced by = [[Research Unix]], [[Cambridge Distributed Computing System]]{{r|design-paper}} | succeeded by = [[Inferno (operating system)|Inferno]]<br />[[#Derivatives and forks|Other derivatives and forks]] | repo = {{URL|http://9p.io/sources/plan9/sys}}<ref>{{cite web| url = http://akaros.org/files/plan9.tar.bz2| title = GPLv2 source code}}</ref> }} '''Plan 9 from Bell Labs''' is a [[distributed operating system]] which originated from the Computing Science Research Center (CSRC) at [[Bell Labs]] in the mid-1980s and built on [[UNIX]] concepts first developed there in the late 1960s. Since 2000, Plan 9 has been [[Free and open-source software|free and open-source]]. The final official release was in early 2015. Under Plan 9, UNIX's ''[[everything is a file]]'' metaphor is extended via a pervasive network-centric [[file system|filesystem]], and the [[addressable cursor|cursor-addressed]], [[computer terminal|terminal]]-based [[input/output|I/O]] at the heart of [[Unix-like|UNIX-like]] operating systems is replaced by a [[windowing system]] and [[graphical user interface]] without cursor addressing, although [[Rc (Unix shell)|rc]], the Plan 9 [[shell (computing)|shell]], is text-based. The name ''Plan 9 from Bell Labs'' is a reference to the [[Ed Wood]] 1957 [[Cult film|cult]] [[science fiction]] [[Z-movie]] ''[[Plan 9 from Outer Space]]''.<ref name="taoup"/> The system continues to be used and developed by operating system researchers and hobbyists.<ref name="9front-announcement"/><ref name="9atom-home"/> == History == [[File:Plan 9 Fourth Edition installing file system screenshot.png|thumb|Screenshot of Plan 9 installation]] Plan 9 from Bell Labs was originally developed, starting in the late 1980s,<ref name="9atom-home" /> by members of the Computing Science Research Center at Bell Labs, the same group that originally developed [[Unix]] and the [[C (programming language)|C programming language]].<ref name="creators" /> The Plan 9 team was initially led by [[Rob Pike]], [[Ken Thompson (computer programmer)|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 Bruce Ellis.<ref name="developers" /> Plan 9 replaced Unix as Bell Labs's primary platform for operating systems research.<ref>{{Cite web |last=Proven |first=Liam |date=2022-03-29 |title=The weird world of non-C operating systems |url=https://www.theregister.com/2022/03/29/non_c_operating_systems/ |access-date=2022-09-01 |website=www.theregister.com |language=en}}</ref> It explored several changes to the original Unix model that facilitate the use and programming of the system, notably in distributed [[multi-user]] environments. After several years of development and internal use, Bell Labs shipped the operating system to universities in 1992. Three years later, Plan 9 was made available for commercial parties by AT&T via the book publisher [[Harcourt Brace]]. With source licenses costing $350, AT&T targeted the embedded systems market rather than the computer market at large. Ritchie commented that the developers did not expect to do "much displacement" given how established other operating systems had become.<ref>{{cite news |newspaper=[[InfoWorld]] |first=Yvonne L. |last=Lee |title=AT&T Bell Labs ships Plan 9 OS for embedded systems |url=https://books.google.com/books?id=3joEAAAAMBAJ&pg=PA16 |date=24 July 1995}}</ref> By early 1996, the Plan 9 project had been "put on the back burner" by AT&T in favor of [[Inferno (operating system)|Inferno]], intended to be a rival to [[Sun Microsystems]]' [[Java (software platform)|Java platform]].<ref>{{cite news |title=AT&T reveals plans for Java competitor |url=https://books.google.com/books?id=xT4EAAAAMBAJ&pg=PA3 |newspaper=InfoWorld |first=Jason |last=Pontin |date=19 February 1996 |page=3}}</ref> In the late 1990s, Bell Labs' new owner [[Lucent Technologies]] dropped commercial support for the project and in 2000, a third release was distributed under an [[open-source license]].<ref name=":0">{{Cite web |last= |first= |date=2021-11-14 |title=Bell Labs: A Complete Guide — History, Products, Founding, and More |url=https://history-computer.com/bell-labs-history/ |access-date=2022-09-01 |website=History-Computer |language=en-US}}</ref> A fourth release under a new [[free software]] license occurred in 2002.<ref name="osnews-4th-edition-release" /> In early 2015, the final official release of Plan 9 occurred.<ref name=":0" /> A user and development community, including current and former [[Bell Labs]] personnel, produced minor daily releases in the form of [[ISO image]]s. Bell Labs hosted the development.<ref name="how-to-contribute" /> The development source tree is accessible over the [[9P (protocol)|9P]] and [[Hypertext Transfer Protocol|HTTP]] protocols and is used to update existing installations.<ref name= "staying-up-to-date" /> In addition to the official components of the OS included in the ISOs, Bell Labs also hosts a repository of externally developed applications and tools.<ref>{{cite web|url=https://9p.io/plan9/addons.html|title=Plan 9 — Additional Software|date=2009|access-date=2016-03-06}}</ref> As [[Bell Labs]] has moved on to later projects in recent years, development of the official Plan 9 system had stopped. On March 23, 2021, development resumed following the transfer of copyright from [[Bell Labs]] to the Plan 9 Foundation.<ref name="plan9 copyright transfer">{{cite web |last1=Sorace |first1=Anthony |title=Transfer of Plan 9 to the Plan 9 Foundation |url=https://marc.info/?l=9fans&m=161650489113326|website=marc.info |access-date=2020-04-14 |archive-date=13 April 2021 |archive-url=https://web.archive.org/web/20210413225220/https://marc.info/?l=9fans&m=161650489113326}}</ref><ref>{{cite web |last1=Weldon |first1=Marcus |title=Plan 9 from Bell Labs in Cyberspace! |url=https://www.bell-labs.com/institute/blog/plan-9-bell-labs-cyberspace/ |website=Nokia Bell Labs |date=23 March 2021 |access-date=23 March 2021}}</ref><ref>{{Cite web|last=Sharwood|first=Simon|title=Bell Labs transfers copyright of influential 'Plan 9' OS to new foundation|url=https://www.theregister.com/2021/03/24/bell_labs_transfers_plan9pto_foundation/|access-date=2021-03-24|website=[[The Register]]|language=en}}</ref> Unofficial development for the system also continues on the 9front fork, where active contributors provide monthly builds and new functionality. So far, the 9front fork has provided the system [[Wi-Fi]] drivers, Audio drivers, [[USB]] support and built-in game emulator, along with other features.<ref>{{Cite web|url=http://fqa.9front.org/fqa1.html|title=FQA 1 - Introduction To 9front|website=fqa.9front.org|access-date=2018-02-15}}</ref><ref>{{Cite web |last=Proven |first=Liam |title=New version of Plan 9 fork 9front released |url=https://www.theregister.com/2022/11/02/plan_9_fork_9front/ |access-date=2022-11-05 |website=[[The Register]] |language=en}}</ref> Other recent Plan 9-inspired operating systems include Harvey OS<ref>{{Cite web|url=https://harvey-os.org/about/|title=Harvey OS|website=harvey-os.org|language=en|access-date=2018-02-15}}</ref> and Jehanne OS.<ref>{{Cite web|url=http://jehanne.h--k.it/pages/overview.html|title=Jehanne|website=jehanne.h--k.it/|access-date=2023-01-08}}</ref> {| class="wikitable" |- ! Date ! Release ! Comment |- | 1992 | Plan 9 1st edition | Released by Bell Labs to universities |- | 1995 | Plan 9 2nd edition | Released by Bell Labs for non-commercial purposes<ref name="firstpublic" /> |- | 2000 | Plan 9 3rd ed. (''Brazil'') | Released by Lucent Technologies under an open source license |- | 2002 | Plan 9 4th edition | Released by Lucent Technologies under a new free software license |} == Design concepts == {{quote box| |quote = Plan 9 from Bell Labs is like the [[Quakers]]: distinguished by its stress on the 'Inner Light,' noted for simplicity of life, in particular for plainness of speech. Like the Quakers, Plan 9 does not proselytize. |source = —Sape J. Mullender, Pierre G. Jansen.<br />''Real Time in a Real Operating System''<ref name = "HerbertJones2004" /> |align = right |width = 33% |salign = right}} Plan 9 is a [[distributed operating system]], designed to make a network of [[heterogeneous computing|heterogeneous]] and geographically separated computers function as a single system.<ref name = "reinventing-unix" /> In a typical Plan 9 installation, users work at terminals running the window system [[rio (windowing system)|rio]], and they access CPU servers which handle computation-intensive processes. Permanent data storage is provided by additional network hosts acting as file servers and archival storage.<ref name= "distributed-system" /> Its designers state that, {{Blockquote|[t]he foundations of the system are built on two ideas: a per-process [[namespace|name space]] and a simple message-oriented file system protocol.|Pike ''et al.''{{r|use-of-namespaces}}}} The first idea (a per-process name space) means that, unlike on most operating systems, [[Process (computing)|processes]] (running programs) each have their own view of the ''namespace'', corresponding to what other operating systems call the file system; a single path name may refer to different resources for different processes. The potential complexity of this setup is controlled by a set of conventional locations for common resources.{{r|welch}}{{r|man4namespace}} The second idea (a message-oriented filesystem) means that processes can offer their services to other processes by providing virtual files that appear in the other processes' namespace. The [[client–server model|client]] process's input/output on such a file becomes [[inter-process communication]] between the two processes. This way, Plan 9 generalizes the Unix notion of the [[Unix filesystem|filesystem]] as the central point of access to computing resources. It carries over Unix's idea of [[device file]]s to provide access to peripheral devices ([[computer mouse|mice]], removable media, etc.) and the possibility to [[mount (Unix)|mount]] filesystems residing on physically distinct filesystems into a hierarchical namespace, but adds the possibility to mount a connection to a server program that speaks a standardized protocol and treat its services as part of the namespace. For example, the original window system, called 8½, exploited these possibilities as follows. Plan 9 represents the user interface on a terminal by means of three pseudo-files: {{mono|mouse}}, which can be read by a program to get notification of mouse movements and button clicks; {{mono|cons}}, which can be used to perform textual input/output; and {{mono|bitblt}}, writing to which enacts graphics operations (see [[bit blit]]). The window system multiplexes these devices: when creating a new window to run some program in, it first sets up a new namespace in which {{mono|mouse}}, {{mono|cons}} and {{mono|bitblt}} are connected to itself, hiding the actual device files to which it itself has access. The window system thus receives all input and output commands from the program and handles these appropriately, by sending output to the actual screen device and giving the currently focused program the keyboard and mouse input.{{r|distributed-system}} The program does not need to know if it is communicating directly with the operating system's device drivers, or with the window system; it only has to assume that its namespace is set up so that these special files provide the kind of input and accept the kind of messages that it expects. Plan 9's distributed operation relies on the per-process namespaces as well, allowing client and server processes to communicate across machines in the way just outlined. For example, the {{mono|cpu}} command starts a remote session on a computation server. The command exports part of its local namespace, including the user's terminal's devices ({{mono|mouse}}, {{mono|cons}}, {{mono|bitblt}}), to the server, so that remote programs can perform input/output using the terminal's mouse, keyboard and display, combining the effects of [[remote login]] and a shared network filesystem.{{r|distributed-system}}{{r|use-of-namespaces}} === 9P protocol === {{Main |9P (protocol)}} All programs that wish to provide services-as-files to other programs speak a unified protocol, called 9P. Compared to other systems, this reduces the number of custom [[application programming interface|programming interfaces]]. 9P is a generic, medium-agnostic, [[byte-oriented]] protocol that provides for messages delivered between a server and a client.<ref name="unix-spirit-set-free" /> The protocol is used to refer to and communicate with processes, programs, and data, including both the user interface and the network.<ref name="not_dead" /> With the release of the 4th edition, it was modified and renamed 9P2000.<ref name="osnews-4th-edition-release" /> Unlike most other operating systems, Plan 9 does not provide special [[application programming interface]]s (such as [[Berkeley sockets]], [[X resources]] or [[ioctl]] system calls) to access devices.<ref name="unix-spirit-set-free" /> Instead, Plan 9 device drivers implement their control interface as a file system, so that the hardware can be accessed by the ordinary file [[input/output]] operations ''read'' and ''write''. Consequently, sharing the device across the network can be accomplished by mounting the corresponding directory tree to the target machine.<ref name="taoup" /> === Union directories and namespaces === {{anchor|Union directory|Name}} Plan 9 allows the user to collect the files (called ''names'') from different directory trees in a single location. The resulting ''[[Union (set theory)|union]] directory'' behaves as the concatenation of the underlying directories (the order of concatenation can be controlled); if the constituent directories contain files having the same name, a listing of the union directory ({{mono|ls}} or {{mono|lc}}) will simply report duplicate names.{{r|valerie-aurora}} Resolution of a single path name is performed top-down: if the directories {{mono|top}} and {{mono|bottom}} are unioned into {{mono|u}} with {{mono|top}} first, then {{mono|u/name}} denotes {{mono|top/name}} if it exists, {{mono|bottom/name}} only if it exists ''and {{mono|top/name}} does not exist'', and no file if neither exists. No recursive unioning of subdirectories is performed, so if {{mono|top/subdir}} exists, the files in {{mono|bottom/subdir}} are not accessible through the union.{{r|4.4bsd}} A union directory can be created by using a sequence of {{mono|bind}} commands: <pre> bind /arm/bin /bin bind -a /acme/bin/arm /bin bind -b /usr/alice/bin /bin </pre> In the example above, {{mono|/arm/bin}} is mounted at {{mono|/bin}}, the contents of {{mono|/arm/bin}} replacing the previous contents of {{mono|/bin}}. [[Acme (text editor)|Acme]]'s {{mono|bin}} directory is then union mounted after {{mono|/bin}}, and Alice's personal {{mono|bin}} directory is union mounted before. When a file is requested from {{mono|/bin}}, it is first looked for in {{mono|/usr/alice/bin}}, then in {{mono|/arm/bin}}, and then finally in {{mono|/acme/bin/arm}}. The separate process namespaces thus usually replace the notion of a [[PATH (variable)|search path]] in the shell. A path environment variable ({{code|$path}}) still exists in the [[Rc (Unix shell)|rc]] shell (the shell mainly used in Plan 9); however, rc's path environment variable conventionally only contains the {{code|/bin}} and {{code|.}} directories and modifying the variable is discouraged, instead, adding additional commands should be done by binding several directories together as a single {{code|/bin}}.<ref name="rc_the_plan_9_shell">{{cite book |last1=Duff |first1=Tom |title=Rc — The Plan 9 Shell |url=http://doc.cat-v.org/plan_9/4th_edition/papers/rc|section=18|work=Plan 9, 4th edition}} ([https://www.scs.stanford.edu/nyu/04fa/sched/readings/rc.pdf PDF]);</ref><ref name= "distributed-system" /> Unlike in Plan 9, the path environment variable of Unix shells should be set to include the additional directories whose executable files need to be added as commands. Furthermore, the kernel can keep separate mount tables for each process,<ref name="HerbertJones2004"/> and can thus provide each process with its own file system [[namespace]]. Processes' namespaces can be constructed independently, and the user may work simultaneously with programs that have heterogeneous namespaces.<ref name = "use-of-namespaces" /> Namespaces may be used to create an isolated environment similar to [[chroot]], but in a more secure way.<ref name="unix-spirit-set-free" /> Plan 9's union directory architecture inspired [[4.4BSD]] and [[Linux]] [[union mount|union file system]] implementations,{{r|valerie-aurora}} although the developers of the BSD union mounting facility found the non-recursive merging of directories in Plan 9 "too restrictive for general purpose use".{{r|4.4bsd}} {{clear}} === Special virtual filesystem === ==== /proc ==== [[File:Plan 9 from Bell Labs (process management).png|thumb|right|Listing processes with [[ls|list contents of directory (ls, lc) command]]<ref name="unix-plan9-command-translation" /> in {{mono|/proc}}]] {{Main |procfs}} Instead of having system calls specifically for [[process management (computing)|process management]], Plan 9 provides the {{mono|/proc}} file system. Each [[Process (computing)|process]] appears as a directory containing information and control files which can be manipulated by the ordinary file IO system calls.<ref name = "design-paper" /> The file system approach allows Plan 9 processes to be managed with simple file management tools such as [[ls]] and [[cat (Unix)|cat]]; however, the processes cannot be copied and moved as files.<ref name="design-paper" /> ==== /net ==== Plan 9 does not have specialised system calls or [[ioctl]]s for accessing the networking stack or networking hardware. Instead, the {{mono|/net}} file system is used. Network connections are controlled by reading and writing control messages to control files. Sub-directories such as {{mono|/net/tcp}} and {{mono|/net/udp}} are used as an interface to their respective protocols.<ref name="design-paper" /> === Unicode === {{Further|UTF-8|Comparison of Unicode encodings}} To reduce the complexity of managing [[character encoding]]s, Plan 9 uses [[Unicode]] throughout the system. The initial Unicode implementation was [[ISO/IEC 10646-1:1993]]. [[Ken Thompson (computer programmer)|Ken Thompson]] invented UTF-8, which became the [[native (computing)|native]] encoding in Plan 9. The entire system was converted to general use in 1992.<ref name= "utf8" /> UTF-8 preserves backwards compatibility with traditional [[null-terminated string]]s, enabling more reliable information processing and the chaining of multilingual string data with [[Unix pipe]]s between multiple processes. Using a single UTF-8 encoding with characters for all cultures and regions eliminates the need for switching between code sets.<ref name="Lunde1999" /> === Combining the design concepts === Though interesting on their own, the design concepts of Plan 9 were supposed to be most useful when combined. For example, to implement a [[network address translation]] (NAT) server, a union directory can be created, overlaying the [[router (computing)|router]]'s {{mono|/net}} directory tree with its own {{mono|/net}}. Similarly, a [[virtual private network]] (VPN) can be implemented by overlaying in a union directory a {{mono|/net}} hierarchy from a remote [[gateway (telecommunications)|gateway]], using secured 9P over the public Internet. A union directory with the {{mono|/net}} hierarchy and filters can be used to [[sandbox (computer security)|sandbox]] an untrusted application or to implement a [[Firewall (computing)|firewall]].<ref name="unix-spirit-set-free" /> In the same manner, a distributed computing network can be composed with a union directory of {{mono|/proc}} hierarchies from remote hosts, which allows interacting with them as if they are local. When used together, these features allow for assembling a complex distributed computing environment by reusing the existing hierarchical name system.<ref name="design-paper" /> == Software for Plan 9 == {{Further|List of Plan 9 applications}} As a benefit from the system's design, most tasks in Plan 9 can be accomplished by using [[ls]], [[Cat (Unix)|cat]], [[grep]], [[cp (Unix)|cp]] and [[rm (Unix)|rm]] utilities in combination with the [[rc shell]] (the default Plan 9 shell). [[Factotum (software)|Factotum]] is an [[authentication server|authentication]] and [[key management]] server for Plan 9. It handles authentication on behalf of other programs such that both [[secret key]]s and implementation details need only be known to Factotum.<ref name="auth-paper" /> === Graphical programs === [[File:Plan 9 from Bell Labs (with acme).png|thumb|right|Plan 9 running [[acme (text editor)|acme]] and rc]] Unlike [[Unix]], Plan 9 was designed with graphics in mind.<ref name="not_dead" /> After booting, a Plan 9 terminal will run the [[rio (windowing system)|rio]] windowing system, in which the user can create new windows displaying [[Rc (Unix shell)|rc]].<ref name="osnews-investigating" /> Graphical programs invoked from this shell replace it in its window. The [[plumber (Plan 9)|plumber]] provides an [[inter-process communication]] mechanism which allows system-wide hyperlinking. [[sam (text editor)|Sam]] and [[acme (text editor)|acme]] are Plan 9's text editors.<ref name="usethis-interview-russ-cox" /> === Storage system === Plan 9 supports the [[Kfs]], [[PAQ|Paq]], [[Cwfs]], [[File Allocation Table|FAT]], and [[Fossil (file system)|Fossil]] file systems. The last was designed at Bell Labs specifically for Plan 9 and provides snapshot storage capability. It can be used directly with a hard drive or backed with [[Venti (software)|Venti]], an archival file system and permanent data storage system. === Software development === The distribution package for Plan 9 includes special compiler variants and programming languages, and provides a tailored set of libraries along with a windowing [[user interface]] system specific to Plan 9.<ref name="Dixon2004" /> The bulk of the system is written in a dialect of C ([[ANSI C]] with some extensions and some other features left out). The compilers for this language were custom built with portability in mind; according to their author, they "compile quickly, load slowly, and produce medium quality object code".<ref name="auug-new-c-compiler" /> A [[concurrent programming language]] called [[Alef (programming language)|Alef]] was available in the first two editions, but was then dropped for maintenance reasons and replaced by a [[Thread (computing)|threading]] library for C.<ref>{{cite web|last=Pike|first=Rob|title=Rio: Design of a Concurrent Window System|url=http://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf|access-date=8 March 2013}}</ref><ref>{{man|2|thread|Plan 9}}</ref> === Unix compatibility === Though Plan 9 was supposed to be a further development of Unix concepts, compatibility with preexisting Unix software was never the goal for the project. Many [[command-line utilities]] of Plan 9 share the names of Unix counterparts, but work differently.<ref name="unix-plan9-command-translation" /> Plan 9 can support [[POSIX]] applications and can emulate the [[Berkeley socket interface]] through the [[ANSI/POSIX Environment]] (APE) that implements an [[runtime environment|interface]] close to [[ANSI C]] and [[POSIX]], with some common extensions (the native Plan 9 C interfaces conform to neither standard). It also includes a POSIX-compatible shell. APE's authors claim to have used it to port the [[X Window System]] (X11) to Plan 9, although they do not ship X11 "because supporting it properly is too big a job".<ref name="docs-ape" /> Some Linux binaries can be used with the help of a "linuxemu" (Linux emulator) application; however, it is still a work in progress.<ref name="linuxemu" /> Vice versa, the [[Vx32]] virtual machine allows a slightly modified Plan 9 kernel to run as a user process in Linux, supporting unmodified Plan 9 programs.{{r|vx32}} == Reception == === Comparison to contemporary operating systems === In 1991, Plan 9's designers compared their system to other early nineties operating systems in terms of size, showing that the source code for a minimal ("working, albeit not very useful") version was less than one-fifth the size of a [[Mach (kernel)|Mach]] [[microkernel]] without any device drivers (5899 or 4622 [[lines of code]] for Plan 9, depending on metric, vs. 25530 lines). The complete kernel comprised 18000 lines of code.{{r|distributed-system}} (According to a 2006 count, the kernel was then some 150,000 lines, but this was compared against more than 4.8 million in [[Linux]].{{r|unix-spirit-set-free}}) Within the operating systems research community, as well as the commercial Unix world, other attempts at achieving distributed computing and remote filesystem access were made concurrently with the Plan 9 design effort. These included the [[Network File System]] and the associated [[vnode]] architecture developed at [[Sun Microsystems]], and more radical departures from the Unix model such as the [[Sprite (operating system)|Sprite]] OS from [[University of California, Berkeley|UC Berkeley]]. Sprite developer Brent Welch points out that the SunOS vnode architecture is limited compared to Plan 9's capabilities in that it does not support remote device access and remote inter-process communication cleanly, even though it could have, had the preexisting [[UNIX domain sockets]] (which "can essentially be used to name user-level servers") been integrated with the vnode architecture.{{r|welch}} One critique of the "everything is a file", communication-by-textual-message design of Plan 9 pointed out limitations of this paradigm compared to the [[static typing|typed]] interfaces of Sun's [[object-oriented operating system]], [[Spring (operating system)|Spring]]: {{Blockquote|Plan 9 constrains everything to look like a file. In most cases the real interface type comprises the protocol of messages that must be written to, and read from, a file descriptor. This is difficult to specify and document, and prohibits any automatic [[type checking]] at all, except for file errors at run time. (...) [A] path name relative to a process' implicit root context is the ''only'' way to name a service. Binding a name to an object can only be done by giving an existing name for the object, in the same context as the new name. As such, interface references simply ''cannot'' be passed between processes, much less across networks. Instead, communication has to rely on conventions, which are prone to error and do not scale.|Roscoe; emphasis in the original.{{r|roscoe}}}} A later retrospective comparison of Plan 9, Sprite and a third contemporary distributed research operating system, [[Amoeba (operating system)|Amoeba]], found that {{Blockquote|the environments they [Amoeba and Sprite] build are tightly coupled within the OS, making communication with external services difficult. Such systems suffer from the radical departure from the UNIX model, which also discourages portability of already existing software to the platform (...). The lack of developers, the very small range of supported hardware and the small, even compared to Plan 9, user base have also significantly slowed the adoption of those systems (...). In retrospect, Plan 9 was the only research distributed OS from that time which managed to attract developers and be used in commercial projects long enough to warrant its survival to this day.|Mirtchovski, Simmonds and Minnich{{r|integrated}}}} === Impact === [[File:Wmii-3.6 screenshot.png|thumb|right|The [[wmii]] [[X window manager]] was inspired by [[acme (text editor)|acme]], a text editor from the Plan 9 project.<ref name="wmii" />]] Plan 9 demonstrated that an integral concept of Unix—that every system interface could be represented as a set of files—could be successfully implemented in a modern distributed system.<ref name="osnews-investigating" /> Some features from Plan 9, like the UTF-8 character encoding of Unicode, have been implemented in other operating systems. Unix-like operating systems such as Linux have implemented 9P2000, Plan 9's protocol for accessing remote files, and have adopted features of [[rfork]], Plan 9's process creation mechanism.{{r|opensources}} Additionally, in [[Plan 9 from User Space]], several of Plan 9's applications and tools, including the sam and acme editors, have been ported to Unix and Linux systems and have achieved some level of popularity. Several projects seek to replace the [[GNU]] operating system programs surrounding the Linux kernel with the Plan 9 operating system programs.<ref name="glendix" /><ref name="gentoo" /> The 9wm [[X window manager|window manager]] was inspired by [[8½ (Plan 9)|8½]], the older windowing system of Plan 9;<ref name="9wm" /> [[wmii]] is also heavily influenced by Plan 9.<ref name="wmii" /> In computer science research, Plan 9 has been used as a [[grid computing]] platform{{r|9grid}}{{r|integrated}} and as a vehicle for research into [[ubiquitous computing]] without [[middleware]].{{r|ubiquitous}} In commerce, Plan 9 underlies [[Coraid]] storage systems. However, Plan 9 has never approached Unix in popularity, and has been primarily a research tool: {{Blockquote|[I]t looks like 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.|[[Eric S. Raymond]]<ref name="taoup" />}} Other factors that contributed to low adoption of Plan 9 include the lack of commercial backup, the low number of end-user applications, and the lack of [[device driver]]s.<ref name="osnews-investigating" /><ref name="usethis-interview-russ-cox" /> Plan 9 proponents and developers claim that the problems hindering its adoption have been solved, that its original goals as a distributed system, development environment, and research platform have been met, and that it enjoys moderate but growing popularity.{{Citation needed|date=October 2015}} [[Inferno (operating system)|Inferno]], through its hosted capabilities, has been a vehicle for bringing Plan 9 technologies to other systems as a hosted part of heterogeneous computing grids.<ref name="vitanuova-grid" /><ref name="rutgers" /><ref name="york" /> Several projects work to extend Plan 9, including 9atom and 9front. These [[fork (software)|fork]]s augment Plan 9 with additional [[hardware driver]]s and software, including an improved version of the Upas [[e-mail]] system, the [[Go (programming language)|Go]] compiler, [[Mercurial (software)|Mercurial]] [[version control system]] support (and now also a git implementation), and other programs.<ref name="9atom-home" /><ref name="9front" /> Plan 9 was [[porting|ported]] to the [[Raspberry Pi]] single-board computer.<ref name="rasppi"/><ref name="raspinst"/> The Harvey project attempts to replace the custom Plan 9 C compiler with [[GNU Compiler Collection|GCC]], to leverage modern development tools such as [[GitHub]] and [[Coverity]], and speed up development.{{r|harvey}} Since [[Windows 10 version 1903]], the [[Windows Subsystem for Linux]] implements the [[9P (protocol)|Plan 9 Filesystem Protocol]] as a server and the host [[Windows]] operating system acts as a client.<ref>{{Cite web|url=https://devblogs.microsoft.com/commandline/whats-new-for-wsl-in-windows-10-version-1903/|title=What's new for WSL in Windows 10 version 1903?|date=February 16, 2019|website=Windows Command Line Tools For Developers}}</ref> ==== Derivatives and forks ==== * [[Inferno (operating system)|Inferno]] is a descendant of Plan 9, and shares many design concepts and even source code in the kernel, particularly around devices and the Styx/9P2000 protocol. Inferno shares with Plan 9 the Unix heritage from Bell Labs and the [[Unix philosophy]]. Many of the command line tools in Inferno were Plan 9 tools that were translated to [[Limbo (programming language)|Limbo]]. * ''9atom''<ref>{{cite web |title=9atom |url=http://www.9atom.org/ |url-status=usurped |archive-url=https://web.archive.org/web/20201111224911/http://www.9atom.org/ |archive-date=11 November 2020}}</ref> augments the Plan 9 distribution with the addition of a 386 [[Physical Address Extension|PAE]] kernel, an amd64 cpu and terminal kernel, nupas, extra pc hardware support, IL and Ken's fs.<ref>{{cite web |title=9atom |url=https://quanstro.net/plan9/9atom/ |website=quanstro.net |access-date=15 June 2023 |archive-url=https://web.archive.org/web/20180609134709/https://quanstro.net/plan9/9atom/ |archive-date=9 June 2018}}</ref><ref>{{cite web |title=9atom |url=https://archiveos.org/9atom/ |website=ArchiveOS |access-date=15 June 2023 |date=3 May 2022}}</ref> * ''9front''<ref>{{Cite web|url=http://9front.org/|title=9FRONT.ORG THE PLAN FELL OFF|website=9front.org}}</ref> is a fork of Plan 9. It was started to remedy a perceived lack of devoted development resources inside Bell Labs, and has accumulated various fixes and improvements. * ''9legacy''<ref>{{Cite web|url=http://www.9legacy.org/|title=9legacy|website=www.9legacy.org}}</ref> is an alternative distribution. It includes a set of patches based on the current Plan 9 distribution. * ''Akaros''<ref>{{Cite web|url=http://akaros.org/|title=Akaros|website=akaros.org}}</ref> is designed for many-core architectures and large-scale SMP systems. * ''Harvey OS''<ref>{{Cite web|url=https://harvey-os.org/|title=Harvey OS|website=harvey-os.org}}</ref> is an effort to get the Plan 9 code working with gcc and clang. * ''JehanneOS''<ref>{{cite web|url=https://gitea.it/JehanneOS|title=JehanneOS|date=17 November 2021 }}</ref> is an experimental OS derived from Plan 9. Its userland and modules are mostly derived from 9front, its build system from Harvey OS, and its kernel is a fork of the Plan9-9k 64-bit Plan9 kernel. * ''NIX''<ref>{{cite web|url=http://lsub.org/ls/nix.html|title=NIX|date=21 November 2020}}</ref>{{Better source needed|reason=Source is a self-published blog|date=June 2023}} is a fork of Plan9 aimed at multicore systems and cloud computing. * ''node9''<ref>{{cite web|url=https://github.com/jvburnes/node9|title=node9|website=[[GitHub]]|date=14 January 2022}}</ref> is a scripted derivative of Plan9/Inferno that replaces the [[Limbo (programming language)|Limbo]] programming language and DIS virtual machine with the [[Lua (programming language)|Lua]] language and LuaJit virtual machine. It also replaces the Inferno per-platform hosted I/O with Node.js' libuv eventing and I/O for consistent, cross-platform hosting. It's a proof-of-concept that demonstrates that a distributed OS can be constructed from per-process namespaces and generic cloud elements to construct a single-system-image of arbitrary size. * ''Plan B''<ref>{{cite web|url=https://lsub.org/plan-b/|title=Plan B|date=26 November 2020}}</ref> designed to work in distributed environments where the set of available resources is different at different points in time. Originally based on the third edition Plan 9 kernel, Plan B was moved into user space to run on current Plan 9 systems.<ref>{{cite web |title=Download |url=https://9p.io/wiki/plan9/download/ |website=Plan 9 wiki |publisher=9p.io |access-date=15 June 2023}}</ref><ref name="BF03192352">{{cite journal |last1=Ballesteros |first1=Francisco J. |last2=Muzquiz |first2=Gorka Guardiola |last3=Algara |first3=Katia Leal |last4=Soriano |first4=Enrique |last5=de las Heras Quirós |first5=Pedro |last6=Castro |first6=Eva M. |last7=Leonardo |first7=Andres |last8=Arévalo |first8=Sergio |title=Plan B: Boxes for networked resources |journal=Journal of the Brazilian Computer Society |date=February 2004 |volume=10 |issue=1 |pages=33–44 |doi=10.1007/BF03192352 |s2cid=6766935 |doi-access=free }}</ref><ref name="PERCOM.2006.43">{{cite book |last1=Ballesteros |first1=F.J. |last2=Soriano |first2=E. |last3=Leal |first3=K. |last4=Guardiola |first4=G. |title=Fourth Annual IEEE International Conference on Pervasive Computing and Communications (PERCOM'06) |chapter=Plan B: An Operating System for Ubiquitous Computing Environments |date=2006 |pages=126–135 |doi=10.1109/PERCOM.2006.43 |isbn=0-7695-2518-0 |s2cid=1730651 |chapter-url=<!-- https://www.semanticscholar.org/paper/337e4193407acf87566c98cbd2d7d42c9add8870 -->https://www.researchgate.net/publication/4228234 |access-date=15 June 2023}}</ref> == License == Starting with the release of Fourth edition in April 2002,<ref name="osnews-4th-edition-release" /> the full source code of Plan 9 from Bell Labs is freely available under [[Lucent Public License]] 1.02, which is considered to be an [[open-source license]] by the [[Open Source Initiative]] (OSI), [[free software]] license by the [[Free Software Foundation]], and it passes the [[Debian Free Software Guidelines]].<ref name="unix-spirit-set-free" /> In February 2014, the [[University of California, Berkeley]], was authorized by the current Plan 9 [[copyright holder]] – [[Alcatel-Lucent]] – to release all Plan 9 software previously governed by the Lucent Public License, Version 1.02 under the [[GNU General Public License|GPL-2.0-only]].<ref name="theregister-gpl-release" /> On March 23, 2021, ownership of Plan 9 transferred from [[Bell Labs]] to the Plan 9 Foundation,<ref>{{Cite web|url=https://plan9foundation.org/|title=Plan9 Foundation | website=plan9foundation.org|language=en|access-date=2021-10-13}}</ref> and all previous releases have been relicensed to the [[MIT License]].<ref name="plan9 copyright transfer" /> == See also == {{Portal|Free and open-source software}} * [[Alef (programming language)]] * [[Rendezvous (Plan 9)]] * [[Inferno (operating system)]] * [[Redox (operating system)]] * [[Minix]] * [[HelenOS]] == References == {{Reflist|30em|refs= <!-- Please keep the refs in alphabetical order --> <!-- ref name= "bluegene">{{cite web |url=http://go.cs.bell-labs.com/fastos/doc/lanl.bglport.pdf |format = [[PDF]] | title =Plan9 BG Presentation |first=Ron |last=Minnich |work=[[Los Alamos National Laboratory]] | access-date = 2011-11-30}}</ref --> <!--ref name="computing-systems">{{cite journal |url=https://books.google.com/books?id=tVtVAAAAMAAJ |title = [[USENIX]], EUUG | pages= 233–36 | journal = Computing systems: the journal of the USENIX Association | date = 1995 | publisher=[[University of California Press]] |access-date= 2011-12-25}}</ref--> <ref name="9atom-home">{{cite web |url=http://www.quanstro.net/plan9/9atom/ |title=9atom |access-date=2011-11-11 |archive-date=2013-07-26 |archive-url=https://web.archive.org/web/20130726030400/http://www.quanstro.net/plan9/9atom/ |url-status=dead }}</ref> <ref name="9front">{{cite web |url=http://9front.org |title=9FRONT.ORG THE PLAN FELL OFF | access-date = 2021-10-14}}</ref> <ref name="9front-announcement">{{cite web |url= http://www.osnews.com/story/24957/Plan_9_Forked_Continues_as_9front |title= Plan 9 Forked, Continues as 9front |first= James |last= Robertson | work =[[OSNews]] |date=2011-07-16 |access-date= 2011-12-31}}</ref> <ref name="9grid">{{cite web |url=http://cm.bell-labs.com/wiki/plan9/9grid/ |title=9grid |work=[[Bell Labs]] |publisher=[[Lucent Technologies]] |access-date=2006-03-28 |url-status=dead |archive-url=https://web.archive.org/web/20060314051632/http://cm.bell-labs.com/wiki/plan9/9grid/ |archive-date=2006-03-14 }}</ref> <ref name="9wm">{{cite web |url=http://unauthorised.org/dhog/9wm.html |title=The 9wm Window Manager |work=9wm | access-date =2012-01-02 |quote= 9wm is an X window manager which attempts to emulate the Plan 9 window manager 8-1/2 as far as possible within the constraints imposed by X.}}</ref> <ref name="auth-paper">{{cite web |url=http://9p.io/sys/doc/auth.html |title=Security in Plan 9 | first1 =R. |last1= Cox |first2= E. |last2= Grosse |first3= R. |last3=Pike |author-link3=Rob Pike |first4= D. | last4 = Presotto |first5=S. |last5= Quinlan |work= Bell Labs |publisher= Lucent Technologies |access-date = 2016-02-26}}</ref> <ref name= "auug-new-c-compiler">{{cite journal |url= http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf | title = A new C Compiler |first =Ken |last =Thompson |author-link=Ken Thompson |pages=31–41 |journal= Australian UNIX Systems User Group Newsletter |volume= 13 |issue= 1 |publisher=[[AUUG]] |location= [[Kensington, New South Wales|Kensington]], [[Australia|AU]] |date=February 1992 |access-date=2011-12-25 |issn= 1035-7521}}</ref> <ref name= "creators">{{cite press release |url= http://www.lucent.com/press/0795/950718.bla.html |archive-url= https://archive.today/20060209203907/http://www.lucent.com/press/0795/950718.bla.html |url-status= dead |archive-date= 2006-02-09 | title= From the inventors of UNIX system comes Plan 9 from Bell Labs |publisher= Lucent Technologies |date= 1995-07-18 }}</ref> <ref name= "design-paper">{{cite web |url= http://9p.io/sys/doc/9.html | title= Plan 9 from Bell Labs | first1 =R. |last1=Pike |author-link1=Rob Pike |first2=D. |last2=Presotto |first3= S. |last3= Dorward | first4 = B. | last4=Flandrena |first5=K. |last5=Thompson |author-link5=Ken Thompson |first6=H. |last6=Trickey | first7 =P. |last7=Winterbottom |work=Bell Labs |publisher=Lucent Technologies |access-date= 2016-02-26}}</ref> <ref name= "developers">{{cite web |url= http://9p.io/sys/man/preface.html | title = Preface | edition = 2nd |last=McIlroy |first=Doug |date=Mar 1995 |work= Bell Labs |publisher= Lucent Technologies | access-date = 2016-02-26}}</ref> <ref name="4.4bsd">{{cite conference |last1=Pendry |first1=Jan-Simon |last2=McKusick |first2=Marshall Kirk |title=Union Mounts in 4.4BSD-Lite |year=1995 |conference=Proc. Winter [[USENIX]] Conf. |url=http://www.usenix.org/publications/library/proceedings/neworl/full_papers/mckusick.ps}}</ref> <ref name= "distributed-system">{{cite conference |citeseerx =10.1.1.41.9192 |title= Plan 9, A Distributed System | first1=Dave |last1=Presotto |first2=Rob |last2= Pike |author-link2= Rob Pike |first3= Ken |last3 = Thompson | author-link3 =Ken Thompson |last4=Trickey |first4=Howard |conference=Proc. Spring 1991 EurOpen Conference}}</ref> <ref name= "Dixon2004">{{cite book |url= https://books.google.com/books?id=9b_vVPf53xcC&pg=PA213 |title= Open source software law |first=Rod |last=Dixon |page=213 |year=2004 |publisher=[[Artech House]] |isbn = 978-1-58053-719-3 | access-date = 2011-12-25}}</ref> <ref name= "docs-ape">{{cite web |url= http://9p.io/sys/doc/ape.html |title= APE – The ANSI/POSIX Environment |first= Howard |last= Trickey |work= Bell Labs | publisher= Lucent Technologies | access-date = 2016-02-26}}</ref> <ref name="firstpublic">{{cite web|url=http://9fans.net/archive/1995/07/16|title=Announcement of the first release to general public|publisher=9 fans|date=1995-07-16|url-status=dead|archive-url=https://web.archive.org/web/20080706034735/http://9fans.net/archive/1995/07/16|archive-date=2008-07-06}}</ref> <ref name="gentoo">{{cite web |url=http://soc.dev.gentoo.org/~rps/plan9/ |archive-url=https://archive.today/20121220185417/http://soc.dev.gentoo.org/~rps/plan9/ |url-status=dead |archive-date=2012-12-20 |title=Plan 9 From Gentoo: Plan 9 Meets Gentoo |work=[[Gentoo Linux]] |access-date=2011-12-01 }}</ref> <ref name= "glendix">{{cite web |url=http://www.glendix.org/ |title= Glendix: Bringing the beauty of Plan 9 to Linux |access-date=2011-12-01 }}</ref> <ref name="harvey">{{cite conference |first1=Álvaro |last1=Jurado |first2=Rafael |last2=Fernández |first3=David |last3=du Colombier |first4=Ron |last4=Minnich |first5=Aki |last5=Nyrhinen |first6=John |last6=Floren |title=Harvey |conference=USENIX ATC BOF session |url=http://harvey-os.org/docs/Harvey-Usenix-2015-ATC-BOF-slides.pdf}}</ref> <ref name= "HerbertJones2004">{{cite book |chapter-url=https://books.google.com/books?id=O897whP-DYAC&pg=PA211 | chapter =Real Time in a Real Operating System |first1=Sape J. |last1=Mullender |first2=Pierre G. |last2=Jansen | title = Computer systems: theory, technology, and applications: a tribute to Roger Needham | editor1-first = Andrew J. |editor1-last=Herbert |editor2-first=Karen |editor2-last=Spärck Jones |editor2-link=Karen Spärck Jones |publisher=[[Springer Science+Business Media]] |isbn=978-0-387-20170-2 |date=2004-02-26 |page=211 |access-date=2011-12-24 }}</ref> <ref name= "how-to-contribute">{{cite web |url=http://9p.io/wiki/plan9/How_to_contribute/ | title = How to contribute |work=Bell Labs |publisher=Lucent Technologies |access-date=2011-11-30 }}</ref> <ref name="integrated">{{cite conference |last1=Mirtchovski |first1=Andrey |first2=Rob |last2=Simmonds |first3=Ron |last3=Minnich |title=Plan 9—an integrated approach to grid computing |conference=Proc. 18th Int'l Parallel and Distributed Processing Symp. |year=2004 |publisher=IEEE |citeseerx=10.1.1.97.122}}</ref> <ref name= "linuxemu">{{cite web |url=http://9p.io/wiki/plan9/Linux_emulation/ |title= Linux emulation |work=Bell Labs |publisher=Lucent Technologies |access-date= 2016-02-26}}</ref> <ref name= "Lunde1999">{{cite book |url=https://archive.org/details/cjkvinformationp00lund |url-access=registration |title= CJKV information processing |first=Ken |last=Lunde |publisher=[[O'Reilly Media]] |date=Jan 1999 |isbn = 978-1-56592-224-2 | page=[https://archive.org/details/cjkvinformationp00lund/page/n489 466] |access-date= 2011-12-23}}</ref> <ref name="man4namespace">{{man|4|namespace|Plan 9}}</ref> <ref name="not_dead">{{cite web |url=http://www.cs.unm.edu/~fastos/05meeting/PLAN9NOTDEADYET.pdf |title=Why Plan 9 is not dead yet And What we can learn from it |first=Ron |last=Minnich |work=[[Los Alamos National Laboratory]] |year=2005 |access-date=2016-02-26 |url-status=dead |archive-url=https://web.archive.org/web/20160225074407/http://www.cs.unm.edu/~fastos/05meeting/PLAN9NOTDEADYET.pdf |archive-date=2016-02-25 }}</ref> <ref name="osnews-4th-edition-release">{{cite web |url=http://www.osnews.com/story/1001/Bell_Labs_Releases_New_Version_of_Plan_9 |title=Bell Labs Releases New Version of Plan 9 |first=Eugenia | last =Loli-Queru |date=2002-04-29 |work=[[OSNews]] |access-date= 2011-12-31}}</ref> <ref name="opensources">{{cite encyclopedia |title=The Linux edge |first=Linus |last=Torvalds |encyclopedia=Open Sources: Voices from the Open Source Revolution |year=1999 |publisher=O'Reilly |url=https://archive.org/details/isbn_9781565925823 |isbn=1-56592-582-3 |url-access=registration }}</ref> <ref name="theregister-gpl-release">{{cite web |url=https://www.theregister.co.uk/2014/02/14/plan_9_moves_to_gnu_space/ |title=Plan 9 moves out from Lucent licence space |first=Simon |last=Sharwood |date=2014-02-14 |work=[[TheRegister]] |access-date=2014-04-20}}</ref> <ref name="osnews-investigating">{{cite web |url= http://www.osnews.com/story/15235/Investigating_the_Plan_9_Operating_System | title= Investigating the Plan 9 Operating System |first= Andrew | last = Hudson |date=2006-07-19 |work=[[OSNews]] |access-date=2011-12-31}}</ref> <ref name="raspinst">{{cite web |url=http://elinux.org/Plan_9_on_Raspberry_Pi| title=How to install Plan 9 on a Raspberry Pi | publisher = eLinux | access-date= 2014-11-16}}</ref> <ref name="rasppi">{{cite web|url=http://www.techradar.com/news/software/operating-systems/raspberry-pi-operating-systems-5-reviewed-and-rated-1147941 |title=Raspberry Pi operating systems: 5 reviewed and rated |first=David |last=Hayward |work=[[TechRadar]] |date=2013-05-09 |access-date=2014-04-20 |url-status=dead |archive-url=https://web.archive.org/web/20130607040944/http://www.techradar.com/news/software/operating-systems/raspberry-pi-operating-systems-5-reviewed-and-rated-1147941 |archive-date=June 7, 2013 }}</ref> <ref name= "reinventing-unix">{{cite journal |first= Brian |last= Hancock |title= Reinventing Unix: an introduction to the Plan 9 operating system |journal=Library Hi Tech |volume=21 |issue=4 |pages=471–76 |year = 2003 |publisher=MCB UP |doi=10.1108/07378830310509772}}</ref> <ref name="roscoe">{{cite thesis |first=Timothy |last=Roscoe |title=The Structure of a Multi-Service Operating System |type=Ph.D. |year=1995 |url=http://people.inf.ethz.ch/troscoe/pubs/UCAM-CL-TR-376.pdf |publisher=University of Cambridge |pages=22–23}}</ref> <ref name= "rutgers">{{cite press release | url = http://www.vitanuova.com/solutions/grid/news/rutgers.pdf |title = Rutgers University Libraries Install Inferno Data Grid |publisher=[[Vita Nuova]] |date = 2004-05-12 |access-date=2006-03-28}}</ref> <ref name= "staying-up-to-date">{{cite web |url=http://9p.io/wiki/plan9/staying_up_to_date/ |title = Staying up to date |work=Bell Labs |publisher=Lucent Technologies |access-date= 2019-07-24}}</ref> <ref name= "taoup">{{cite book |last= Raymond |first= Eric S. |author-link=Eric S. Raymond |title= [[The Art of UNIX Programming]] |chapter=Plan 9: The Way the Future Was |chapter-url=http://catb.org/~esr/writings/taoup/html/plan9.html |publisher=[[Addison-Wesley]] |isbn=0-13-142901-9 |date=2003-09-17 |access-date = 2007-05-07}}</ref> <ref name="ubiquitous">{{cite conference |last1=Ballesteros |first1=Francisco J. |first2=Gorka |last2=Guardiola |first3=Enrique |last3=Soriano |first4=Katia |last4=Leal Algara |title=Traditional systems can work well for pervasive applications. A case study: Plan 9 from Bell Labs becomes ubiquitous |conference=IEEE Intl' Conf. on Pervasive Computing and Communications |year=2005 |citeseerx=10.1.1.109.8131}}</ref> <ref name= "unix-plan9-command-translation">{{cite web |url= http://9p.io/wiki/plan9/UNIX_to_Plan_9_command_translation/ |title= UNIX to Plan 9 command translation |work=Bell Labs |publisher = Lucent Technologies |access-date=2011-12-02}}</ref> <ref name= "unix-spirit-set-free">{{cite video |url=https://video.fosdem.org/2006/FOSDEM2006-plan9.avi |format=[[Audio Video Interleave|AVI]] |title=The Unix Spirit set Free: Plan 9 from Bell Labs |first=Uriel M. |last=Pereira |publisher=[[FOSDEM]] |date=2006 |access-date=2011-12-02 }} * {{cite web |author=Uriel |title=The Unix Spirit set Free: Plan 9 from Bell Labs |website=Bell Labs |url=http://cm.bell-labs.com/sources/contrib/uriel/slides/fosdem06/slides.pdf |access-date=2007-11-14 |archive-date=2007-11-28 |archive-url=https://web.archive.org/web/20071128062452/http://cm.bell-labs.com/sources/contrib/uriel/slides/fosdem06/slides.pdf |url-status=dead }}</ref> <ref name= "use-of-namespaces">{{cite web | url= http://9p.io/sys/doc/names.html | title = The Use of Name Spaces in Plan 9 | first1= R. |last1= Pike |author1-link= Rob Pike |first2= D. | last2 = Presotto | first3 = K. |last3=Thompson |author3-link= Ken Thompson |first4=H. |last4= Trickey |first5= P. |last5= Winterbottom |work= Bell Labs | access-date= 2016-02-26}}</ref> <ref name="usethis-interview-russ-cox">{{cite web |url=http://russ.cox.usesthis.com/ |title=An interview with Russ Cox |date=2011-04-09 |work=The Setup |publisher=Uses this |access-date=2012-01-01 |archive-date=2011-12-28 |archive-url=https://web.archive.org/web/20111228020221/http://russ.cox.usesthis.com/ |url-status=dead }}</ref> <ref name="utf8">{{cite web |url= http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt |title= UTF-8 History | last = Pike |first=Rob |author-link=Rob Pike |date=2003-04-30 |access-date=2006-04-27}}</ref> <ref name="valerie-aurora">{{cite web |last=Valerie |first=Aurora |title= Union file systems: Implementations, part I |url=https://lwn.net/Articles/325369/ |work=[[LWN.net]] |date=2009-03-25 |access-date= 2011-12-05}}</ref> <ref name= "vitanuova-grid">{{cite press release | url = http://www.vitanuova.com/solutions/grid/news/evotecoai.pdf | title = Vita Nuova Supplies Inferno Grid to Evotec OAI | publisher = [[Vita Nuova]] | date =2004-05-18 | access-date = 2006-03-28}}</ref> <ref name="vx32">{{cite conference |first1=Bryan |last1=Ford |first2=Russ |last2=Cox |title=Vx32: Lightweight, User-level Sandboxing on the x86 |year=2008 |conference=[[USENIX]] Annual Tech. Conf. |pages=293–306 |url=https://www.usenix.org/legacy/event/usenix08/tech/full_papers/ford/ford_html/index.html|citeseerx=10.1.1.212.9353 }}</ref> <ref name="welch">{{cite journal |last=Welch |first=Brent |title=A comparison of three distributed file system architectures: Vnode, Sprite, and Plan 9 |journal=Computing Systems |volume=7 |issue=2 |year=1994 |pages=175–199 |citeseerx=10.1.1.46.2817}}</ref> <ref name="wmii">{{cite web |url=http://wmii.suckless.org/ |title=window manager improved 2 |work=suckless.org |access-date=2012-01-02 |quote=[wmii] has a 9p filesystem interface and supports classic and tiling (acme-like) window management. |url-status=dead |archive-url=https://web.archive.org/web/20111231012144/http://wmii.suckless.org/ |archive-date=2011-12-31 }}</ref> <ref name= "york">{{cite press release | url= http://www.vitanuova.com/solutions/grid/news/Yorkbiology.pdf |title= The University of York Department of Biology install Vita Nuova's Inferno Data Grid | publisher =[[Vita Nuova]] |date=2004-05-04 |access-date= 2006-03-28}}</ref> }} == External links == {{Commons category|Plan 9 from Bell Labs}} <!--{{Official website}} ← This default template is convenient, but suggest being more explicit to clarify the distinction between 9p.io vs. plan9.bell-labs.com--> * [https://9p.io/plan9/ 9p.io]: Archived mirror of the original official Plan 9 Web site at [https://plan9.bell-labs.com/plan9/ plan9.bell-labs.com] {{Webarchive|url=https://web.archive.org/web/20210524142649/https://plan9.bell-labs.com/plan9/ |date=2021-05-24 }} * [https://9fans.topicbox.com/groups/9fans 9fans]: Semi-official mailing list for Plan 9 users and developers * [https://plan9foundation.org Plan 9 Foundation] {{Plan 9 commands}} {{Unix}} {{Rob Pike}} {{Ken Thompson}} {{FOSS}} {{Distributed operating systems}} {{Authority control}} {{DEFAULTSORT:Plan 9 From Bell Labs}} [[Category:Plan 9 from Bell Labs| ]] [[Category:1992 software]] [[Category:ARM operating systems]] [[Category:Computing platforms]] [[Category:Distributed computing architecture]] [[Category:Embedded operating systems]] [[Category:Free software operating systems]] [[Category:Operating system distributions bootable from read-only media]] [[Category:Software projects]] [[Category:PowerPC operating systems]] [[Category:MIPS operating systems]] [[Category:X86-64 operating systems]] [[Category:IA-32 operating systems]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Anchor
(
edit
)
Template:Authority control
(
edit
)
Template:Better source needed
(
edit
)
Template:Blockquote
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Clear
(
edit
)
Template:Code
(
edit
)
Template:Commons category
(
edit
)
Template:Distributed operating systems
(
edit
)
Template:FOSS
(
edit
)
Template:Further
(
edit
)
Template:Good article
(
edit
)
Template:Infobox OS
(
edit
)
Template:Ken Thompson
(
edit
)
Template:Main
(
edit
)
Template:Man
(
edit
)
Template:Mono
(
edit
)
Template:Plan 9 commands
(
edit
)
Template:Portal
(
edit
)
Template:Quote box
(
edit
)
Template:R
(
edit
)
Template:Reflist
(
edit
)
Template:Rob Pike
(
edit
)
Template:Short description
(
edit
)
Template:Unix
(
edit
)
Template:Webarchive
(
edit
)
Search
Search
Editing
Plan 9 from Bell Labs
Add topic