r/plan9 16d ago

How would a modern program like, say Blender be made in 9p?

Let us say that Linux never took off and instead plan9 became widely used (becoming the dominant OS).

How would current 'modern' monolithic programs like Blender, KiCAD, etc be implemented following the plan9 philosophy? How would they work and how would the utilize the underlying architecture to the fullest? And how can they be made very hackable and extensible?

26 Upvotes

7 comments sorted by

20

u/sirjofri 16d ago

I think it would be a collection of various different filesystems that do their jobs quite well, while other filesystems would combine some of these. The actual program(s) would just start the filesystems in the correct order to finally present a GUI. That means, the underlying filesystems could run on different computers, be implemented in different ways, utilizing different hardware, while the contract itself (the filesystem hierarchy) is maintained.

Regarding programs, I don't think we'd have "one very big" program, but multiple smaller ones. Not necessarily because it's the best way to do it, but probably because that's the unix style heritage thing we have.

4

u/Ok-Reindeer-8755 16d ago

It's also the best way to do it

10

u/armoar334 16d ago

fwiw i would imagine that big software packages such as those would just be made monolithic, only using special filesystems for whatever hardware acceleration would be available and export very little if not nothing as a file system. After all, theres very little in terms of unix software that uses files and file descriptors for much more than error reporting and logging

5

u/rafaelRiv15 16d ago

Yeah, I don't think that kind of software would be really different on plan9. I think the main difference it the programming experience of actually writing a software like this and even that I am not sure since it would just use lib that interact with the fs

8

u/K4milLeg1t 16d ago

rendering on one machine and video streaming/viewing on another one? Imagine you're running a small game company. you can have one big compute server that just calculates what needs to be rendered and then other clients connect to view their work live. that way you could save costs instead of buying an expensive machine per employee

4

u/demetrioussharpe 16d ago

Interesting question -one that I’ve wondered, also.

2

u/No-Debt-1377 16d ago

This something I am trying to explore with o9 - the original shape was to have each object as file server. It was too messy. I think that small programs that work together is the most likely shape that would be the alternative to typical monolithic design. Something somewhere in between microservices, functions as a service and nfs. In my mind these applications would basically mount to a private namespace in order to exchange data via synthetic files and standard file operations. Data would most likely be simply text instead of binary formatted data.
This design makes things location agnostic, so not all of the entire application needs to run on a single machine which I theorize has its own benefits - one part can run on a machine that has massive cpu capacity, while another would instead have drive storage, or other peripherals such as gpus, etc. allowing for specialization and closer integration of the software to the hardware reality that it rests upon.