Remix.run Logo
packetlost 4 hours ago

We once again discover that Plan9 and UNIX were right. The most powerful, lowest common denominator interface is text files exposed over a file system. Now to get back to making 9p2026.

The article gets some fundamentals completely wrong though: file systems are full graphs, not strict trees and are definitely not acyclic

andai 2 hours ago | parent [-]

So what are Plan 9's killer features, and can they be bolted on with FUSE or is there a deeper magic at play?

packetlost an hour ago | parent | next [-]

Plan9 doesn't really have a single killer feature beyond 9P and the universal consistency and simplicity of its APIs. It has a very clean syscall interface and takes "everything is a file" to its logical conclusion and does it well (IMO). Pretty much everything is a file(system) and it's all accessed via the 9P protocol.

You could sorta bolt these features on with FUSE, but to see real benefits you'd want something closer to Inferno, which is like an OS/application runtime that runs on top of another OS host.

In my mind, the security model is the closest thing to a killer feature it has. Because everything is a file(system) and the fork/rfork and bind syscalls let you precisely control what resources/files/services/etc. a child process has access to via easily understandable shell commands (or using libc functions if you want), it means you don't need special APIs for namespacing (ie. containers) and access controls. It's very clean. When a parent process forks or spawns a child process, it can chose whether that process inherits the namespace or gets a clean slate that it can then bind filesystems onto, controlling precisely what it has access to.

anthk an hour ago | parent | prev [-]

namespaces and no difference between local and remote devices. You just bind directories. FUSE it's a dog slow toy in comparison.

You don't even need root permissions to do tons of stuff in 9front with filesystems. You don't even need a root account.