3 ms·
Plan 9 is amazing. I just released my own ancient little operating system (see 'Show HN') which took some of Plan 9's ideas. Plan 9 was a massive inspiration at
by jacquesm 1y ago
Plan 9 is amazing. I just released my own ancient little operating system (see 'Show HN') which took some of Plan 9's ideas. Plan 9 was a massive inspiration at the time that it was released, I had it running on a really small machine for the time and I love the underlying concepts. It is a real pity that it never really took off.
Plan 9 is what Unix could have been, the whole idea that 'everything is a file' is so powerful that we ended up not believing it and the resulting hacks are all so ugly in comparison. Plan 9 does this so consistently that you can test a new version of the window manager in a window on the currently running window manager.
For fun I ran the Bell-Core window manager inside a Plan 9 window at some point just to see if it could be done.
https://en.wikipedia.org/wiki/ManaGeR https://en.wikipedia.org/wiki/ManaGeR
And yes, you could do it, and fairly easily so. This kind of structural coherency is a great feature for an operating system to have.
- Isamu 1y ago>the whole idea that 'everything is a file' is so powerful that we ended up not believing it and the resulting hacks are all so ugly in comparison I agree. People find it hard to wrap their heads around simple and uniform interfaces. They can’t simplify what they want to accomplish, they want to inflict their complexity on everyone. Simplifying is maybe emotionally deflating, it makes for a less satisfying solution. Career-wise, it is better to propose complex solutions that take lots of manpower. That’s how you climb the ladder.
- calvinmorrison 1y agoyet - you still have to learn opaque crap. example echo kill > /proc/123/ctl Sure, that works if you know kill, but you cannot inspect ctl and understand the interface, its a write interface. so you can certainly RTFM, read the dev proc list, etc. it's not discoverable so like /proc/net/stat or whatever, it means nothing to me... its gonna just be a TSV of bytes that mean something, unless you know it. so for all the simplicity, it's what i would call, not very usable.
- serbuvlad 1y agoOk, but there's nothing stopping from writing a "discoverable" GUI or TUI or CLI for this interaction. To the user it doesn't matter. To the developer, it makes a difference. /proc/<pid>/ctl is not any more or less simple or discoverable for the end user than TerminateProcess or kill(2). It's all opaque esoteric stuff. But for the developer /proc/<pid>/ctl is MORE discoverable than TerminateProcess or kill(2), since it's a file you can list, so you know it exists. Yeah, you still have to read the man page (you always have to read the docs as a developer), but you know there's a ctl file that probably controls some stuff about the process there. And you already know how to interact with it (the same IO interface as everything else).
- calvinmorrison 1y agoOf course. But it's not implemented. The OS is the spec.
- magicalhippo 1y agoI guess in theory there is nothing stopping the system from providing yet other files, like say "/proc/123/ctl/description" which provides a human-readable description of what "/proc/123/ctl" does, and "/proc/123/ctl/schema" which provides a standardized schema for interacting with the parent, akin to a XSD or JSON Schema.
- calvinmorrison 1y agoNo there's not. Other than plan9 does not have it and it was not considered important.
- Ferret7446 1y ago"everything is a file" is unix's equivalent of the Greek's "everything is a basic geometric shape" and epicycles, or heck, "everything is an object". These kinds of reductions are naive and result in kludges of representation.
- poncho_romero 1y agoBy that logic isn’t this argument equally reductive?
- jacquesm 1y ago> These kinds of reductions are naive and result in kludges of representation. I've spent a lot of time with these 'kludges' as well as all of the alternatives available and I far prefer the kludges. They make working with resources remote or local a breeze, they allow the same software to work with a COM port or a SCSI channel, they allow for all kinds of abstractions and get rid of an enormous amount of cruft in code to special case each and every device under the sun. The 'Unix' version of that statement is the one that is kludgy, I'll give you that. But I was looking well beyond Unix, see TFA.