I wish people spent even half as much effort writing about other OSes as they did Plan 9. I want to have fun on computers by getting away from the mistakes of Unix, not even closer.
We can only hope that the nascent wave of open hardware combined with the now widely pervasive availability of common protocols and formats will lead to new OS experimentation.
Personally I would love a Lisp or Smalltalk OS that doesn’t have to waste mental space skirting around Unix stuff.
What do you see as the mistakes of Unix?
For starters, overemphasis on string parsing (from a language not really ideal for it, at that) and serialization as strings is one mistake that Plan 9 embraced further; it’s the “use more violence” conclusion to the problem.
Piles of strings, which aesthetically unpleasing, are always there for you and your users. /shrug
Sure, but if you’re designing the whole system from scratch, you can make sure that e.g. structured objects are always there for you and your users too.
One of the reasons I find Plan 9 so interesting is that it is the only distributed operating system that I’ve ever seen really work well in practice. Do you know of any others? Every other operating system that I’ve seen in use has still followed the old UNIX / Windows / Mac OS model of each machine being its own world, where a network is just a set of separate islands with the ability to send messages to each other.
I can illustrate this with a concrete example. I frequently work on remote machines:
Today, I find that I almost always do this over SSH. This sucks because it means that I’m restricted to using programs that work with a pseudo-teletype. I’ve used Vim for a couple of decades now (and Emacs, and pico, etc.) so I’m pretty efficient at doing this… but, come on, it’s 2021 and I’m using an interface that was obsolete in the 1980s. This is ridiculous.
There are GUI alternatives: VNC, RDP, X11 forwarding, Citrix, NX, etc. But I find them unusable over the Internet: the latency is just too painful. More importantly - and the point of this example - they still follow the same paradigm as SSH. They provide a remote desktop, rather than a remote teletype, but it’s still an attempt to provide the illusion that I’m sitting in front of the remote machine: it’s still a single machine, albeit one that’s physically distant.
This is very different from the distributed system that Plan 9 provides. It’s the use of namespaces in Plan 9, the way I can build up a system that consists of resources provided by disparate, distributed machines, and work with them all in a uniform manner, that really distinguishes Plan 9 from anything else I’ve used.
Occasionally, a single application provides a feature that has a similar feeling. For example, I love the way that I can use Tramp in Emacs to open a file on a remote machine, and then when I use Magit it operates on the remote git repository completely automatically and completely consistently with the way it works on local git repositories when I open a local file. It’s that kind of uniformity that Plan 9 provides, but at the level of the whole operating system, not just one feature within one application.
I don’t know of any other operating system that works in such a distributed way. Do you? What kind of OSes would you like to see people writing about?
Plan 9 shamelessly ripped off Domain in terms of its UI and system concepts. It’s hilarious how much they copied. No one really writes much about that though.
For distributed, there was a lot of research systems (Plan 9 is one of them that just overshadowed the rest) like Sprite. That all tapered off for reasons though (see utah2k). What ended up shipping is RPC; Microsoft gets a lot of mileage out of their RPC stack since all sorts of things on the system can take advantage of it. Nowadays, devs just want REST instead of RPC… Of course, keep in mind the fallacies of distributed computing. (edit: Microsoft got a lot of the people working on RPC from Apollo, and Apollo did much of the work for distributed computing in practice on workstations in the 80s.)
I’ve found RDP very usable over the internet, but X11 is a mess. VNC somewhere in between. Perhaps not transparent, but it is practical.
By Domain do you mean the Apollo OS? I’ve never used that - I’ve heard of it as I think it had an RPC mechanism that inspired CORBA, although I might be misremembering that. I hadn’t heard that it was similar to Plan 9 in any way though: what did the Bell Labs people take from Domain?
I’d like to read more about Sprite: I vaguely remember it being mentioned here on lobste.rs a while ago but I can’t remember any details. I’d love to see more distributed OS write-ups. It’s the thing that frustrates me most about modern computing: I have more devices than ever but still, in the third decade of the 21st century, they don’t work together properly!
Yes, Domain/OS was Apollo’s.
There’s a lot of stuff in Domain that also pops up in Plan 9 beyond distributed computing:
(I’ve never seen Pike et al acknowledge the similarities.)
But there’s also a lot they didn’t take. You might be interested in the design principles amongst other docs.
Thank you for the links to those documents! That’ll be my bedtime reading for a few nights :)
Somewhat tangentially, those similarities between Domain and Plan 9 seem a little tenuous - at least, there are well documented provenances for all of them that don’t involve Domain, so I expect they are more like convergent evolution than rip offs, but of course I don’t know for sure.
Out of curiosity, are there any specific operating systems you have in mind?
Timely! I’m trying out Plan 9 right now (specifically, 9front) as a possible way of noping out of a lot of what I see as wrong with other OSs and software development in general. Running in QEMU for now.
I never had any intentions of using Plan9, but reading this has converted me. I am more inclined to try out Plan9 for fun than ever before. Thank you to the author** for writing this, wherever they may be.
Thank you for writing this!
Thank you for writing this!
Whoa whoa whoa, thank you for the kind words, but this is not my work!
Credit where credit is due.
Ah apologies, I will modify my comment :)
What can I say. Awesome.
Thanks to this article’s research, there’s now a clear path to try a lot of things after installing plan9.
The section “Ndb as a Database” is pretty amazing in and of itself…
Many years ago, I tried out Plan 9 and Inferno in VMs. I think it was for an article in the Register.
Plan 9 I found very hard work, but the conceptually-somewhat-similar Inferno was much easier and more comprehensible. Its UI is informed by decades of subsequent work, which Plan 9 never was.
I suspect that even if the concepts of Inferno were too radical for many people, its UI could be backported or adapted back to Plan 9 to give it something more comprehensible to ordinary people…