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
(section)
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!
== 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>
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)
Search
Search
Editing
Plan 9 from Bell Labs
(section)
Add topic