💾 Archived View for posixcafe.org › blogs › lessons_learned_from_plan9.gem captured on 2021-12-17 at 13:26:06. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2020-09-24)
-=-=-=-=-=-=-
It's been about 2½ years since I first stumbled across the magic land of namespaces and cartoon rabbits, and I felt the urge to write about my experiences with the system so far. I wont be talking about just the technical musings of the system, there is plenty of that to be discovered on your own. What I want to focus on is instead the transitive knowledge that I've felt like I've gained from my pleasent vacation.
Perhaps the most jarring introduction most people get to the systems is that Plan9 is not UNIX, nor does it pretend to be. Your favorite terminal emulator doesn't work, there is no x11 and there is no UNIX sockets. I would say that people who arrive at plan9 looking for these comforts are missing the forest for the trees. The point of plan9 is not to be better UNIX++, in a lot of ways it faces the ugly issues of UNIX head on and offers a solution. This means there is a decent amount of friction to the use of existing UNIX tools, and thus it is often much better to just reimplement the code ground up from the spec. This is fine, and in fact it can be used to prevent the system form incurring the technical debt associated with supporting unreasonably complex pieces of software. It also gives the chance for the code to be rewritten to work better within the workflow of the system(Ori's work on git9 is a great example of this). Plan9 makes it painfully obvious the issues with systems and programs that are too complex to reimplement are not code bases anyone wants to work with, and the encouragment to reimplement things is a great motivator for expanding the feature set without lowering the system to the lowest common denominator. Plan9 encourages the programmer to favor things they could implement themselves over a weekend, the kind of portable code or standard that doesn't require a single codebase where the amount of #ifdefs trend torwards infinity. Plan9 makes it obvious that just because you use a library to offload complexity in your program, you have not escaped the complexity itself.
It's no secret that open source these days is not controlled by the programmers themselves, it is often controlled by those with deep pockets. Gone are the days of paying for your mail server, instead now the trend seems to be to find an open source project and then hire programmers to mold the open project to the companies needs. This has started to bleed in to how the open source community itself operates. Modern open source projects dont say 'no' to features just as companies dont say 'no' to customers. The projects are put on a tight lesh, and everyone is all ears to make every last user happy. No longer are users expected to offer up patches for things they want included, instead they reqyest a feature and hope that the benevlonet controllers appease their request. This is not much different to how paid software contracts work. Those who maintain 9front are not afraid to say no, they aren't there to make you happy, and this is for the better. The project becomes slowly molded in to what the maintainers would like to see out of it. Users are expected to make features happen themselves, they are actually encouraged to offer up patches with no gurentee that things will get added. This leaves the project free from the burden of 'gaining traction', it lets those who are interested in the ideals show up naturally and with enough pushing, be apart of how the system grows.
Plan9 is designed from the ground up to be a programmers wonderland, plain text everywhere, a heavy focus on programability, an amazing stdlib and a damn good shell. The ease of how the entire system is exposed to the programmer is not something I've seen replicated in much other systems to this date outside of projects like TempleOS. Using the system is a lot of fun because there is so much you can do in such a small base system. This also extends over to the code base itself, an emphasis is put on how easy code is to work on and study, and the lack of large complex codebases has helped in this quite a bit.
Plan9 is not perfect, it will not replace your UNIX install. What it does is provide a nice escape hatch in to a land in which software is judged based on its actual merit and not on its ability to make someone money. It should be treated as a systen to learn from, some of the best C code I've ever seen has been witnessed in my adventures through the system. As someone who is new to their professonal life I have enjoyed this chance to learn.