Hello all! Recently I have mentioned a research paper I wrote about Plan 9 for school. I first mentioned it at OLF during my "Rocky Linux is My $HOME" talk. I figure now is the perfect time to make it public. The paper is by no means perfect, but that's fine. I plan to flesh it out in the future as a book or series of books.
Enjoy!
https://docs.google.com/document/d/1vti9d6d_HM1dINoQThsTSw_lgYXnhaIBHgZ0VaJaSbo/edit?usp=sharing
@maxinehayes Just skimmed your paper. Did you delve into union mounts? I'm no pro, but I would say that was the biggest architectural difference *at the time*, especially allowing it to occur in userspace. https://lwn.net/Articles/325369/
@knapjack I had not unfortunately. I had focused on getting the main points across, though I will cover union mounts in the future. They're very useful for overriding devices and configuration files on a system. For example in Plan 9 using a VPN is as simple as mounting the /net of the remote machine over the /net of the local machine.
1. “Everything is a file” idea makes a lot of old-time programmers very nervous, because shared files means locks to them, and a lot of things they hoped to ever forget.
2. Plan 9 might be a great idea, but the implementation is 1980s, and it shows. WM which makes me dream about twm, obsession with mouse (very 1980s), plenty of things which were tried and hugely developed in meantime (factotum -> metamail -> MIME), NFS, etc.
Somebody should reimplement those ideas from scratch.
@mcepl the least complicated part of 9p synthetic filesystems is the locking. Fids can be used for ensuring a pseudo client connection to the file where data is multiplexed using a mapping system.
The most complicated part of 9p synthetic filesystems is on demand filesystem generation. Clients must not assume they can cache the contents of a filesystem as this may cause major issues. A notable issue being the client thinks a file still exists when it does not. There is also the unlikely issue of running out of Qids on the server side. The 9p specification requires that servers never reuse Qids as clients may keep track of them for whatever reason they desire. In order to adhere to the specification servers must generate a new Qid for each file they generate on demand, though this is a potential issue when taking a functional programming approach. For imperative or object oriented the problem becomes more complicated.
@mcepl I recognize Qid IDs are 64 bit unsigned integers, however I believe with enough load it may be possible to run out, though this is to be tested.
I do recognize that Plan 9 is quite behind in some areas compared to modern systems, however Plan 9 is ahead in others. IoT devices exemplify this. The UNIX design is not capable of handling the IoT world which society is increasingly moving toward. Technically speaking Inferno may be better suited for some IoT devices, but that is for a later date. I do agree someone should reimplement major portions of Plan 9 for the modern world and I hope to encourage that.
Perhaps IoT will be Plan9’s saving grace. Good for it! I am just thoroughly disinterested in them. When I look at https://youtu.be/dP1xVpMPn8M there is a lot I like (and BTW, in similar vein there was a lot I liked in https://en.wikipedia.org/wiki/GEM_(desktop_environment), just other way around), but somebody should really take these ideas out of the 1980s implementation and make them around. You know, a text editor which would be actually useful and such (spellchecker, syntax highlighting, LSP, key bindings, etc.).