Plan 9 from Bell Labs(github.com)
github.com
Plan 9 from Bell Labs
https://github.com/0intro/plan9
20 comments
In truth it's closer to this
"To get people to switch to X competitor, it needs to not be better, but 10 times better"
I am sure I hacked that quote up badly but, the point is, sure plan9 is cool, but it wasn't better-er enough to get people to switch.
Instead people brought a lot of plan9 concepts TO other systems. That's a good thing.
"To get people to switch to X competitor, it needs to not be better, but 10 times better"
I am sure I hacked that quote up badly but, the point is, sure plan9 is cool, but it wasn't better-er enough to get people to switch.
Instead people brought a lot of plan9 concepts TO other systems. That's a good thing.
Only because I was just reading the Wikipedia page before I posted this :)
It 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. RaymondThe 9p filesystem found its way into KVM's VirtFS. Curious if there's other active places where parts of Plan 9 are being used.
The original Cisco PIX firewall used modified Plan 9 as the operating system. In fact, despite the official history, the name PIX came from Plan 9, or Plan IX. I know this because the person who wrote the entire PIX software stack, Brantley Coile, told me.
Much of the Golang toolchain came from Plan 9:
https://news.ycombinator.com/item?id=8817990
EDIT: and the Gopher mascot was designed by Reneé French who also designed Glenda the Plan 9 bunny:
https://golang.org/doc/faq#gopher
https://news.ycombinator.com/item?id=8817990
EDIT: and the Gopher mascot was designed by Reneé French who also designed Glenda the Plan 9 bunny:
https://golang.org/doc/faq#gopher
Shoot, much of the Go lang team came from Plan 9. And they brought a lot of code and ideas with them.
Currently on my mind os `os.FileMode`; here's a comment I wrote in some Go code that interfaces with Python:
Currently on my mind os `os.FileMode`; here's a comment I wrote in some Go code that interfaces with Python:
// A StatMode represents a file's mode and permission bits, as represented in Python
// (i.e. `os.stat()`'s `st_mode` member). Similar to how Go's `os.FileMode` assigns bits to have
// the same definition on all systems for portability, Python's `stat` assigns bits to have the same
// definition on all systems for portability. And it just so happens that Go's bits match those of
// Plan 9, and Python's bits match those of the Linux kernel.
type StatMode uint16
PS: If you weren't aware, Renée French's connection to Plan 9 and Go is largely that she's married to Rob Pike.I did not know the about Reneé and Rob! Thanks!
The image and image/draw package design[1] is also inspired by Plan 9.
[1] https://blog.golang.org/image-draw
[1] https://blog.golang.org/image-draw
It's used, bizarrely enough, to communicate between the Windows and Linux sides of Windows Subsystem for Linux 2 - if I remember correctly, it's used to expose NTFS to the Linux side.
And in roughly the same role (Host FS parts exposed to the VMs) in ChromeOS's Crostini container runtime.
https://chromium.googlesource.com/chromiumos/docs/+/HEAD/con...
https://chromium.googlesource.com/chromiumos/docs/+/HEAD/con...
Isn't WSL using 9p to mount the linux fs on windows side? https://devblogs.microsoft.com/commandline/whats-new-for-wsl...
Why is the 9P filesystem used to frequently for these applications? Is it just that much better than the alternatives?
In general, 9P2000 is simple and fairly elegant. If you don't need POSIX semantics (and fs metadata), it's really quite simple to implement. For a bit more cost in terms of complexity you can go for 9P2000.u which makes things POSIXy enough if you've got a single client (as you do with VM -> host). This is great if you want to provide virtual filesystems, either proxied from the host or backed by something more exotic. In addition to QEMU, the gVisor folks (https://gvisor.dev/) have made heavy use of 9P (with enhancements) for similar reasons (in addition to Google being generally populated with Plan 9 aficionados).
Then, there's 9P2000.L... This has that "let's just take the filesystem vtable and export it as a protocol" flavor. This works well enough on Linux if you're just looking to translate the calls over into syscalls. I wouldn't recommend implementing a bespoke server for it, though. You're better off just implementing things with FUSE.
Then, there's 9P2000.L... This has that "let's just take the filesystem vtable and export it as a protocol" flavor. This works well enough on Linux if you're just looking to translate the calls over into syscalls. I wouldn't recommend implementing a bespoke server for it, though. You're better off just implementing things with FUSE.
9front is the fork you're looking for.
Here's the 9front FAQ:
http://fqa.9front.org
And the 9front install guide (shields eyes from 90's HTML):
http://fqa.9front.org/fqa4.html
Or maybe this is more useful:
https://gist.github.com/99z/740bd7fdc020154049ebd1476f55ada2
HTH.
http://fqa.9front.org
And the 9front install guide (shields eyes from 90's HTML):
http://fqa.9front.org/fqa4.html
Or maybe this is more useful:
https://gist.github.com/99z/740bd7fdc020154049ebd1476f55ada2
HTH.
When you are done praising Plan 9, head on to Inferno and Limbo, which are actually the last OS developed by the authors at Bell Labs and contain the genesis of Go.
http://doc.cat-v.org/inferno/
http://www.vitanuova.com/inferno/
http://www.vitanuova.com/inferno/docs.html
http://doc.cat-v.org/inferno/
http://www.vitanuova.com/inferno/
http://www.vitanuova.com/inferno/docs.html
This is an interesting argument and perhaps has merit, but as a matter of fact: It became open source in 2002, 10 years after the initial 1992 release; albeit under a GPL-incompatible license. In 2014 it was released under the GPLv2; 22 years after the initial release. Either way; less than 30 years.