Introduction to OS Abstractions Using Plan 9 from Bell Labs (2007) [pdf]
lsub.org
lsub.org
I'm reminded of this note from the README for 3Blue1Brown's `manim`, an animation library for his own use (and thus decidedly not a community project):
"But the tricky part about anything which confers the benefit of originality is that this benefit cannot be easily shared."
Just because a project has an open source license doesn't mean that it has, or should have, open governance.
Anyone that's ever built an open-source demo or example project has potentially contributed to someone else a lot, even if they can't directly use that project or have to make modifications to apply it to their situation.
If more people were willing to open up seemingly niche projects like this, it would surely help countless others.
Sites of interest:
We also have a Discord server I linked in another comment.
For another short overview, there's also Eric S. Raymond's take on Plan 9 in "The Art of Unix Programming": http://www.catb.org/esr/writings/taoup/html/plan9.html
It's a very, very nice OS to experiment on due to the simplicity of everything. The kernel is almost small enough to memorize.
Linux has a mature ecosystem and several flavors and components to choose from.
Plan9, while leagues ahead the *nix design architecturally, has a much smaller ecosystem, no real choice in components, and virtually no enterprise support.
I just wish similar caution was demonstrated from userspace component maintainers.
> Linux has a mature ecosystem and several flavors and components to choose from.
And certain high ranking userspace maintainers are chomping at the bit to pair the number of flavors and components right down, to ease their own workload.
I also think that old Smalltalk and Lisp systems (e.g. Xerox PARC) had a design much more suitable for the real world applications than this ``everything is a file'' idea.
Sadly it appears most people just stop at the middle, instead of the last version of Plan 9's evolution.
From Inferno OS page [1] :
>>>..As this is part of the underlying system, all applications gain these benefits automatically. 9P runs over various transport protocols including TCP/IP.
9P was originally developed for use with Plan 9 from Bell Labs. A simplified subset called Styx was used in Inferno for a few years, but now Inferno's protocol is exactly the same as 9P. Some manual pages and older papers still refer to Styx. <<<
I think major constraint (or advantage, depending how you look at it) -- is that you can only use GO-like programming language, Limbo, to develop for it. No other language runtime is supported.
I think better or worse isn't the important theme here. It's that we've lost variety...
Perhaps in 20 or 30 years we will have something akin to plan9 or inferno composed from nodes on these networks?
After all, at some point everything old becomes new again when it comes to computer technology.
Seems highly likely to occur within less than a decade. Tops. Just not on the blockchain. Likely something not-blockchain, e.g. https://ecsa.io/ (which /interacts/ with the blockchain, but isn't blockchain based.)
People massively underestimate just how fast technology progresses at the moment.
Blockchain: - A decentralized and distributed digital ledger that is used to record transactions across many computers so that the record cannot be altered retroactively without the alteration of all subsequent blocks and the collusion of the network.
Edit: One might question what the ledger tracks in terms of operating toward user needs as opposed to financial activity.
In any case the C APIs are the same as Plan 9 anyway.
To open a TCP connection, you use the dial(3) function, which basically does the following: write "tcp!name!port" to /net/cs and read out "1.2.3.4!80" (/net/cs resolves the name), then you write "connect 1.2.3.4" to /net/tcp/clone and read out a connection ID, and open /net/tcp/:id/data which is now a full-duplex TCP stream.
There's this emphasis on simple, sane ways of fulfilling tasks on plan9 that permeates the whole system. It's beautiful.
I mean, consider something like vim. It's a nice program, well designed - but undoubtedly insane, just because it's supposed to work in every imaginable context.
It strikes me that plan9 wouldn't be immune to the same phenomenon.
However, if the system permits arbitrary applications to be executed (which plan9 does), then it cannot be shielded from madness. Proof: plan9 has a POSIX compatibility layer (APE), a vt100 terminal emulator and a vim port. It even has an aging full-on linux emulator. I think it could run a really old version of Firefox, but the memory is vague. People swear by Mothra these days anyway.
Everything is a URL [0][1]
[0]https://doc.redox-os.org/book/introduction/how_redox_compare...
[1]https://doc.redox-os.org/book/design/url_scheme_resource/eve...
The most important distinction between evolution and design, IMO, is that evolution bars forethought, and any refactoring that trips local optima (which in this case, would be breaking backwards-compatibility).
Popular OSes are popular mainly because of their backwards-compatibility and momentum, and are therefore typically unable to be redesigned in any non-evolution fashion.
Almost every criticism of the Unix fundamentals* puts me in awe of the original design. It is so hard to maintain simplicity.
Regarding parsing, yes. That would be nice but I believe you'd some isolation to ensure that. Re sockets -- shrug.
* (rather than say the user space / shell)
For example, could the Erlang model be an OS? Say the OS provides a namespace for a constellation of communicating processes. You still have freedom to implement various languages and configuration systems but you submit your code to a process rather than store it in a 'file system'. Storage is accessed via a process and can be switched out with another process with a different implementation, etc.
Whether that's a good idea or not depends on who you talk to.
There's a 9fans Discord server lying around for anyone interested: https://discord.gg/6daut5T