IMO, this misses the point of Plan 9. The userspace commands are pleasantly simple, but nothing to write home about. The key insight of Plan 9 is that there’s a single narrow waist for all of userspace: 9p.
That means that a simple program and a set of binds can transparently interpose over nearly any system interrface. You want to replace your network stack with an ssh proxy? mount a virtual /net file system. You want to interact with http via a proxy? mount something under webfs. There’s a simple, easily implementable interface with under 15 functions for basically every system interaction.
I don’t need to ask ‘how do I route this odd ioctl with a system dependent binary layout’, or ‘what does this mmaped file over nfs need to do when you use this odd sequence of system calls’; there’s just 9p.
You can’t reduce the number of degrees of freedom you need to consider when you run plan 9 software under unix, and that reduction in degrees of freedom to consider is the core of why Plan 9 is pleasant.
Edit – I want to be clear: 9p itself isn’t magical – the magic is that a 9p server is implementable in an afternoon, and that you only have to think about 9p. Anything that’s both easy to implement, and completely covers everything you need to consider when interacting with userspace, would provide the same magic.
It really shows how good primitive sets slice through the Gordion knot! With this simple protocol touching everything, so many concerns are wiped away; a chat app on Plan9 is just sharing a text document, a video hosting site just sharing a folder etc.
IMO, this misses the point of Plan 9. The userspace commands are pleasantly simple, but nothing to write home about. The key insight of Plan 9 is that there’s a single narrow waist for all of userspace: 9p.
https://man.9front.org/5/intro
That means that a simple program and a set of binds can transparently interpose over nearly any system interrface. You want to replace your network stack with an ssh proxy? mount a virtual /net file system. You want to interact with http via a proxy? mount something under webfs. There’s a simple, easily implementable interface with under 15 functions for basically every system interaction.
I don’t need to ask ‘how do I route this odd ioctl with a system dependent binary layout’, or ‘what does this mmaped file over nfs need to do when you use this odd sequence of system calls’; there’s just 9p.
You can’t reduce the number of degrees of freedom you need to consider when you run plan 9 software under unix, and that reduction in degrees of freedom to consider is the core of why Plan 9 is pleasant.
Edit – I want to be clear: 9p itself isn’t magical – the magic is that a 9p server is implementable in an afternoon, and that you only have to think about 9p. Anything that’s both easy to implement, and completely covers everything you need to consider when interacting with userspace, would provide the same magic.
It really shows how good primitive sets slice through the Gordion knot! With this simple protocol touching everything, so many concerns are wiped away; a chat app on Plan9 is just sharing a text document, a video hosting site just sharing a folder etc.
That’s my port of sam, always nice to see it mentioned in the wild.
It’s definitely languished though. I just don’t have the time anymore, sadly.
Under “plumber-related” I always found godothecorrectthing.sh by Andrew Chambers of Hermes and Janet very cool.