Open Source Release Of Bell Labs' Plan 9
Joined by dozens of other readers, johnmullin writes: "Bell Labs has made the third release of its Plan 9 computer operating system available on the World Wide Web under an open-source agreement. Anyone interested in using Plan 9 may download the system, including source code and documentation, from http://plan9.bell-labs.com/plan9dist/. Check out the full story here here." Note for the lazy: An English company called Vita Nuova will also be selling "a full boxed set with CDs and manuals." Surely, systems research is not dead ...
DISCLAIMER: even though my email address says @bell-labs.com I'm not speaking for anyone other than myself here.
Having lived pretty much exclusively in Plan9 and Inferno for several years now, allow me to make the following observations:
To answer the question about the Sparc kernel: cross compilers are distributed for:
Kernel source is distributed for:
Absent from this list is the Sparc kernel.
So: there is a Sparc compiler, but no kernel. However, if you have Plan 9 2nd edition, you have a sparc kernel that could quickly be ported to the new system.
NOTE: The underlying system architecture is largely irrelevant in Plan 9. I italicized cross because there is no distinction between compiling and/or debugging something for the architecture you're running on vs. some other architecture.
When people describe one of Plan 9's features as "everything is a file", it's misleading. Especially since your typical nix weenie will come back with "But everything in my nix is a file too".
You'll get a better picture of the Plan 9 environment by thinking of a device driver as a "file server". That is, a device driver exports a hierarchical filesystem rather than a single file. The driver entry points correspond to the basic filesystem operations (rather than the basic *file* operations, as in nix). To make a horrible analogy, think of a Plan 9 device driver as implementing the vnode interface. In actual fact, it implements an interface to the "9p" protocol.
For example, here's a du(1) of the /net directory.
A few devices are bound into /net:
Also, a couple of user level file servers have posted communication channels in /net:
Plan 9 is different than the usual Unix ways of doing these, and in some respects, better. One of the cool things about Plan9 (and its follow-on Inferno, which I've been looking at lately) is that pretty much *everything* is network extensible and *completely* location transparent, and this is all built in and does not rely on bolt-ons like AFS directory services, etc. (Imagine being able to relocate any service, part, or function of the OS as easily and effectively as you redirect an X display and you'll start to get the idea... And on top of that, they actually managed to make it quite small and efficient!)
Yes, you *can* make Unix jump through those hoops, but in many ways it's just pretending. Plan 9 was arguably the first really serious attempt to write a true network-centric OS that recognized the power and potential of networked computing. I'm not sure if Plan 9 is the same as Inferno in this regard, but one of the things that's impressing me about Inferno is that to a much greater degree than Unix, *everything* is a file. This makes it possible to write scripts that have incredible power, for instance, to open a TCP connection, you just write a connect command with the proper parameters to the TCP device file, so pretty much everything can now be done from the command line. This is a higher level of functional abstraction that makes scripting much more powerful, allowing those of us that love the power and leverage of Unix' superior text processing and scripting tools to really shine. In this respect, although it's clearly post-Unix, it's actually truer to the "Unix philosophy" than Unix itself! (Not to start a flame war, but I've always believed that unless you're writing bit-banging code like device drivers, resorting to C reflects a substantial lack of imagination and knowledge of Unix on the part of the programmer.)
I think we all recognize that assuming from the get-go that the network is an ever-present and reliable service would lead to an operating environment very different in some important respects from what we have today. Plan 9 and Inferno are the result of one approach to taking that assumption to its logical conclusion.
You really need to read up on it yourself to appreciate it, but don't think that Plan 9 is either "just another Unix clone", "something bolted onto Unix", or "just the same old thing." It really is a different spin on the role of the network from the OS point of view. Although there may be better obscure examples, Plan 9/Inferno is the most network-aware, network-integrated OS I know of. Check it out - I'm going to!
P.S.: One of the interesting side-effects of this philosophy is it's impact on the prevalence and power of interpreted languages in general. Now that Open Source is here to stay, and Moore's law is outrunning the hardware nedds of most of us, do we really even need compiled languages anymore? (The classical reasons are speed and secrecy of source for comercial reasons - those are now both becoming increasingly irrelevant. I personally believe interpreted languages will triumph in the end, as I have believed since 1985. We're not there yet, but we're getting much closer...)
"The future's good and the present is nothing to sneeze at." - Roblimo's last