Driving Plan 9
Glenda_lives_on writes "OSnews has an alternative OS review on Plan 9. Plan 9 is a research OS produced by Bell Labs. It was open sourced a few years back, and has enjoyed a revival of sorts. Los Alamos National Labs is continuing to favor Plan 9 for their new generation of super computing because its the fastest thing out there. I have downloaded and ran Plan 9 before. In fact the Plan 9 live cd sits here on my desk. Its not an operating system for noobs however, and lacks some graphical refinement. Plan 9 is a very cool and a interesting test drive however. Its definitely worth the price of admission (free) for exploring, and education."
Before y'all go pulling down the ISO to try it out, the mirrors are listed at http://netlib.bell-labs.com/wiki/plan9/Mirrors/ind ex.html .
Plan 9 is a reference to the Ed Wood movie, Plan 9 from Outer Space, often regarded as the worst movie of all time. Aliens raise the dead to finally prove to humans that they exist (because that's certainly the most obvious, effective way to do it).
I've never used it, but Plan 9 offers a radically different archival storage system called Venti.
Basically it never deletes old blocks of data from the server. Blocks are write-once, identified by a really large hash (collisions are so improbable that the possibility can be totally ignored). This allows you to copy lots of redundant data to the server (such as periodic backups) without worrying about the storage space. If the blocks were ever copied there before and they have not changed, they won't take up any space!
The review is not so great in terms of accuracy i.e. there is no emacs (check out acme, sam, ed, and smacme instead) and the 640x480 resolution is nonsense. 9fans certainly isn't so grateful about this review.
Check out the Plan 9 documentation if you are interested in understanding Plan 9.
Plan 9 from Bell Labs.
"Plan 9 from Bell Labs" is the proper name of the OS.
/n/ftp
Plan 9 is now community driven, albiet from a small community, mostly the same people that have been there all along.
It has USB sound support and AC97 support is a new one on me.
I use it still because the user environment is the best one I have encountered for text editing and interecting with the shell. Most users use VNC to get to their X11/Windows desktops where their web browser lives.
Building a web browser from scratch is one of those never ending tasks that frankly, just isn't worth your while. That said there is Mothra - no tables, no css, no frames etc. that Tom Duff (yes that Tom Duff) wrote many moons ago and one of the community is beavering away at his project Abaco and has moderate success.
One of the main tenets to Plan 9 is "everything is a file" and the system is built around the notion of a distributed name space in the shape of a directory tree rather than being a reflection of the disk contents. The canonical example of this is ftps where the remote ftp site is presented as a directory tree at
Name spaces are process independent so you can build them per process which feels a bit like chrooting.
Exporting a name space is part of the deal, this presents many gifts that were not deliberately shoe-horned in such as remote step debugging across architectures, sending sound to a remote soundcard, importing a remote machine's network stack instead of using a gateway (including non-plan9 machines via ssh), importing remote filesystems (including non plan 9 machines). All this is facilitated by the 9p protocol.
As a micro/macro kernel hybrid all this is achieved in just 37 syscalls which is a source of amusement and a feeling of superiority when compared to Linux' 300+ (so many they are not even enumerated any more).
Linux is derided in the mailing list ("For amateurs, by amateurs") as well as the failings of the other braindead OSes we have to deal with ("If only they did it like us").
Linus has stopped by in 9fans to whine on about stuff and was seen off, Theo wanted our compilers when he didn't want the license (as imposed by Lucent lawyers) but since they have been dual licensed we've not seen him around.
Inferno isn't plan 9, it's another product built on similar principles that was sold off by Lucent.
Lucent's management of Plan 9 in hindsight could have prevented adoption when it was crucial - it was $300 per copy prior to v. 3 and once a free download had a "copies of all modifications must be sent to Lucent" clause and other annoying restrictions in it. These have been lifted now but they boat could already have sailed.
The notion of distributed computing has gained ground in recent times and Plan 9 could have been at the forefront with distributed computing being built in from the start.
All that said, Plan 9 was never intended as anything more than an experiment and some ideas have slowly crept into other products (or possibly independently invented) - notably Windows XP presenting their stuff as files/folders, ftpfs in Linux, single sign-on.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
What would really advance the state of the art is an "everything is an object" operating system.
1 /design_principles_behind_smalltalk.html
Smalltalk-80 fits that description pretty well. See:
http://users.ipa.net/~dwighth/smalltalk/byte_aug8
Smalltalk-80's modern descendent is Squeak:
http://www.squeak.org/
First of all there is Charon from Inferno. It supports html, EMCAScript (1.1 IIRC), CSS, DOM (level 1 IIRC) and https. (See screenshot however this one is a bit outdated)
Abaco is the most actively developed Plan 9 web browser. It supports most of html. DOM level 3 development has been started. Mozilla's Javascript engine has been ported to Plan 9 and can be used today for a Javascript shell. This will provide abaco with Javascript in the future. Work on CSS has started but I do not know what has been done or where it is heading. Abaco has been ported to Linux and friends via Plan 9 from Userspace. Package managers are encouraged to make packages of abaco for their systems. (See screenshot)
Then there are webpage, links, mothra, and htmlfmt.
Finally there are text web browsers for acme (htmlfmt for Plan 9 and see this for Inferno)
In other news, SDL now works on Plan 9.
Plan 9 from Bell Labs.
There is APE for POSIX support. And linuxemu for emulating linux binaries.
.Net and Java virtual machines which are stack based Dis is register based. This allows it to run on bare hardware and doesn't require a (according to some heavyweight) operation to translate it from stack to register. Dis provides virtually infinite registers like Parrot. For more information read Pike's paper, The design of the Inferno virtual machine.
I personally have not checked out Savaje OS. Inferno would be most comparable to such an OS. Inferno is based on many of Plan 9's ideas but with a new programming language, Limbo (famed for being the only other language than C Dennis Ritchie documented) and a virtual machine, Dis. Limbo can run on bare hardware without a host operating system with around 700KB of memory.
Rob Pike explains the advantages of the Dis virtual machine. Unlike the
Plan 9 from Bell Labs.
In addition to the Plan 9 papers, here's some nice reads:E ADYET.pdf
http://www.cs.unm.edu/~fastos/05meeting/PLAN9NOTD
http://www.collyer.net/who/geoff/9book.html
Plan 9 predates The Hurd
Erlang - don't think so. Limbo & Plan 9 C use CSP channels.
Stripped down plan 9 for RTOS - not as far as I'm aware, it's used more for clustering. LANL use it there, they might be the people to ask.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
>The "everything is a file" metaphor of Unix was revolutionary at the time, and Plan 9 taking it a little further really does little to advance the state of the art.
/dev
Sorry, this is where you're wrong.
Make the socket interface a filesystem, and all you do is mount a fileserver over that, to create
a socks proxy/http proxy/whatever. All apps get the capability of
doing networking over a proxy, transparently - no need for using libs or
prelinking hacks that usually don't work.
Have the ability to easily create fileservers in userspace, and create an mail
filesystem that can handle imap/pop/local mboxes etc. Mail clients doesn't need
to reimplement your favorite mail protocol in yet another broken and incompatible
way, or adhere to 4 different libraries with 4 different concepts. Just read/write files and
have the one fileserver do the job.
Sharing files AND resources becomes easy too. Want to play sound on another computer ? import hostname:/dev/audio
Having all resources being files, you get a standard way of access control (add ACLs if you really need to), couple it with private
namespaces, and you don't need the umpten hacks like freebsd jails, chroots, selinux, systrace, etc. Just use chmod/chown and set up a filesystem namespace only containing the resources (resources in this case is anything you request from the OS - networking interface, audio device, screen display, authentication privileges, or most other of the 400 syscalls or ioctls you might want to restrict access to in a read/change on traditional unixes.
Linux got the idea for /proc from Plan 9. However, it a very dumbed down version of Plan 9's. One of the major differences is that Plan 9's /proc controls processes while Linux really does nothing but represent them to some degree. One example is that you either kill a process by writing 'kill' to its clt (control) file or delete its directory. Plan 9 requires less syscalls thanks to this design. Inferno also has this design to manage its processes. Imagine this with Plan 9's distributing ideas...
Plan 9 from Bell Labs.
Linux copied the idea of /proc *from* Plan9, so there is certainly some resemblance!
/proc directly, without using a program, and get useful information (such as what files are open or the executable name, I've done both of these plenty of times).
Despite the limited nature of the copy (somebody else says that Linux version is pretty much read-only, I'm not sure) it shoud be obvious what a big win this is. Suddenly a whole lot of utilities like "ps" do not have to be recompiled to match the kernel. And you can peek into
The only other Plan-9 thing that is copied extensively is UTF-8 text encoding. This one is also a HUGE win, as suddendly we don't have to write two streams through all our programs for handiling Unicode and handling "legacy" ascii files, as they are now the same thing, as long as some (very minor) fixes are done to the "legacy" code. Plus UTF-8 seamlessly handled Unicode going past 65536 characters, while the "wide character" solution that Sun and HP and Dec and Microsoft struggled with for 20 years fell apart the moment this happened, by adding "surrogate characters" and thus deleting the *only* advantage it had over UTF-8.
Considering how incredibly useful both of these ideas are, I would certainly like to see a lot more of Plan 9 brought out into the real world. There is a lot there!
If you wish to try out Plan 9 without burning a CD and rebooting, Free OS Zoo offers an image of Plan 9 (108M) that works fine with theQemu emulator.
Step-by-step instructions for a Debian-based distro:
Other tips:
Good luck!
1) The live cd is the install cd. This isn't Linux... Installation is done by an interactive rc script ("everything is a file") in a running Plan 9 with or without rio. Try and imagine how simple it is to automate a Plan 9 installation. Unlike Linux we don't need Red Hat to develop some complex standard for doing something that should be simple.
/n/sources/extra/ or /n/sources/patches/. Or anything made or ported by anyone else that can be found in /n/sources/contrib/ and elsewhere. And it definitely is not missing anything that would be basic in any operating system.
/bin/ip/ like the rest of the IP tools (on x86 the actual location for IP's ping is /386/bin/ip/ping. /386/bin/ is bound to /bin/ during boot up on x86. Likewise /alpha/bin/ is bound to /bin/ during boot up on alpha. etc.). You use IP ping like this: ip/ping $ipadr. If you want skip the ip/ part then bind /bin/ip/ping to /bin/ping.
/bin/ip/ and http tools in /bin/http/) we don't just dump everything where ever we feel like it. What is the point of having a hierarchy without using it?
2) The cd comes with all the official software. Everything but the stuff that can be found in
3) It does include ping. Ping is not just limited to IP so you will find multiple ping programs for different things in their respected directories. The ping for IP is in
4) This all fits in 80MB. Plan 9's cd is small because it doesn't have bloat. (This includes: PDF/postscript reader, page; Word processor, troff; an advance shell, rc; a web server, httpd; plus thousands of other applications.)
5) Why didn't you ask any of your questions on 9fans before coming to your assumptions?
6) This isn't Linux there are rules (e.g. ip tools in
Plan 9 from Bell Labs.
Plan 9 installs and runs without any problem with Plan 9 GUI under under Microsoft Virtual Server 2005 R2 running on Windows XP SP2. I have created virtual machine with 128MB of RAM. It boots directly from the latest Plan 9 ISO image. I haven't tested with Microsoft Virtual PC 2004 but I guess result would be the same. Both virtualization software can be now downloaded for free.
The developers intentionally moved away from an everything is an object model for VERY good reasons. Files have well defined interfaces (read, write, etc) that make controlling your entire system with them far easier. In an object-based system, every object implements its own, non-uniform interface. If you want objects, look into Corba. It is much more complicated and not really more functional.
Rubish. EMACS is Editor MACroS. It was originally a set of TECO macros. People can't just backronym it.
Also, you talk as though UTF-8 were inherently superior to UTF-16 because of the smaller space taken up by ASCII-rage characters. However, for data that is say ... east Asian, UTF-8 is actually larger (characters in the unified Han range take up 3 bytes instead of 2).
Not everyone in the world speaks English, and UTF-8 is not optimal for everyone and every situation. There is more to life that ASCII compatibility.
Free Hans!