Union mounts and 9P are already available in Linux.[1][2] What other things would you like to see?
[1] - https://lwn.net/Articles/325369/
[2] - https://www.mjmwired.net/kernel/Documentation/filesystems/9p...
It's also not really a central concept. plan9 doesn't have a $PATH env var, for example - you just union mount all your binaries into `/bin`.
Again, yes there's an implementation on 9p for linux - but it's not baked in and it's not used by the system as a unifying abstraction - this makes it fairly useless:
> Unlike most other operating systems, Plan 9 does not provide special application programming interfaces (such as Berkeley sockets, X resources or ioctl system calls) to access devices.
> Instead, Plan 9 device drivers implement their control interface as a file system, so that the hardware can be accessed by the ordinary file input/output operations read and write.
> Consequently, sharing the device across the network can be accomplished by mounting the corresponding directory tree to the target machine.
It's really having this stuff baked in and then combining them that gives you the power & elegance: https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Combinin...
C replaced by Go, as Inferno replaced it with Limbo for userpace applications.
As for your SML hint, I leave here "Unix system programming in OCaml" :)
> "Unix allows file systems to be built up from disparate resources using concepts such as links and file system mounts. These features masked the original directory; if one mounts a new filesystem on the directory named "net", one can no longer access its previous contents until the operation is reversed.
> Plan 9 introduced the idea of union directories, directories that combine resources across different media or across a network, binding transparently to other directories. For example, another computer's /bin (applications) directory can be bound to one's own, and then this directory will hold both local and remote applications and the user can access both transparently.
> Using the same system, under Plan 9 external devices and resources can be bound to /dev, allowing any device to be shared over the network without any additional code."
So, you can union mount other machines /dev/cpu/ folders into your machine's /dev/cpu folder and then have access to all the CPU's. Same for all other hardware, software and storage.
Just these two things - Union Mounts and 9P - when built into the whole system, create a very dynamic distributed computing environment. I really, really wish more of this would make it into Linux. We've kinda got some of it, but without joining up all the other bits, the real power isn't quite there.
More:
http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs http://plan9.bell-labs.com/plan9/ http://en.wikipedia.org/wiki/9P2000 http://en.wikipedia.org/wiki/V9fs http://en.wikipedia.org/wiki/List_of_distributed_computing_p... http://en.wikipedia.org/wiki/Inferno_\(operating_system\) http://doc.cat-v.org/plan_9/4th_edition/papers/plumb http://swtch.com/plan9port/