Unix and Linux are quite dominant in the OS research worlds. I want to learn about some alternative ways of thinking about operating systems and how we interact with them. What are some niche, unpopular, weird, or otherwise less heard of OS ideas?
These could be slight changes to OS philosophy or an entirely different approach to how we think about OSes as a whole.
An example of something that I think is interesting is Twizzler: a data-centric OS for Non-volatile Memory.
hi prepare yourself for an essay
So, the first of the unique OSes I like to think about is Plan 9; its essentially the logical conclusion of the Unix ideals: everything is a file. Plan 9 eliminates most things not related to opening files - no IOCTLs, I’m pretty sure there isn’t mmap, there’s no memfds, there’s nothing like that. All resources are exposed through files and directories, and there’s not a single global file system, which is the killer thing.
A prime example of this is Rio. In Plan 9, the kernel makes /dev/cons, /dev/mouse and /dev/draw available, so that a windowing system can use them - it gives access to keyboard, mouse and screen IO. Funnily enough, proccesses on Rio also have access to those files, but Rio manages those files, and puts their content into a window. Because Rio uses the same interface as the hardware does, you can run Rio inside Rio, no special effort required, because all Rio does is use those files. Here’s some slides: http://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
A lot of other cool stuff can be done with this functionality. For instance, Plan 9 programs don’t have to implement TLS support most of the time, due to the magic of tlsserv. How do you access the network in Plan 9? Files! So, if you run a program ‘under’ tlsserv, then those network connection files get filtered through tlsserv, which handles all the ssl - the program doesn’t have to be SSL aware!
Plan 9 is also very network focused, and the birthplace of UTF 8, but that’s better covered elsewhere.
Another interesting school of thought is the rejection of the operating system.
Alan Kay has famously said that the operating system is what you failed to fit into your programming language, which is reflected in his Smalltalk programming language.
Smalltalk is more than just a programming language (feed it some source code, it spits out an executable/executes it). Rather, Smalltalk is a system entirely in itself. It’s graphical, it’s interactive, it’s dynamic. Smalltalk is famed for the fact that everything is Objects, and everything is modifiable at runtime. I’m not really doing it justice with this description, but the entire system is at your fingertips to be played, forked, modified, etc. You can change the entire colour of the system with a couple of lines, and there’s the eternally famous story of Steve Jobs visiting, and having smooth scrolling implemented into the running system in front of his very eyes. The most brazen example of Smalltalk’s dynamicity is the
become: message, which tells an object to become another. You can have all instances of True become: False, and totally break your system!
Another approach to ‘no operating system’ is stuff like MirageOS. MirageOS is an ‘operating system as a library’ - it’s mainly oriented at cloud workflows. Mirage is a library that you link into your program, to produce an operating system rather than an executable at the end. You execute this program in your cloud provider’s VM, and it has no syscall overhead, no boot overhead, etc, because everything is executing at the kernel level, because there is no userspace! This is the complete rejection of an operating system, instead opting to make your program the only thing that matters. Of course, libraries like these will provide various APIs to make writing applications actually possible - memory allocators, TCP, etc.
i swear one time we found a whitepaper on an OS based around CLOS, but we haven’t been able to track it down since. it was a really cool concept tho, instead of programs passing bits of text around as an exchange medium like in unix, they’d just use CLOS objects.
The Big Issue TM I’d take here is the main reason the Unix philosophy of passing around text works is because text places structure. You can’t write very many useful functions that can generalise to any object, because objects are just… objects. Like, an object is almost too general to benefit from the ‘Unix philosophy’ wherein you have many primitives that all operate on one opaque data container (you don’t operate on the data itself all that much with the Unix filters, that’s the big innovation)
So a CLOS OS would be a great idea, because everything is an object is a cool system! But generally OO OSes try to avoid the Unix patterns, because they just don’t work with objects
yeah idk, it was just something we saw one time and we would love if we could find the paper again. at this point its hard to tell if we just imagined it in a state of delirium or something
Is this what you’re looking for?
This is a great write up and exactly what I wanted to see when I posted this thread :)
I’ve always heard about how amazing plan 9 is and I guess I’ve never heard any actually reasons why it’s so cool until now. (I rlly like acme but that’s sorta seperate)
dont worry, ive yet to post my takes :)
POG. I can’twait! I’ll be sure to update this soon once I’ve read more papers on the matter as well. I wonder where I can find communities of people interested in this stuff.
You’re already off to a better start than most people just by being here. Anyway, have some interesting ones in the pipe, will dust them off and try writing descriptions to do them justice as soon as I can get out of bed, stop procrastinating, and log on.
awesome can’t wait! I love hearing about all these interesting ideas
BTW found another super interesting OS idea: DBOS: A Database-Oriented Operating System
An OS based entirely on a distributed database.
True become: False. my beloved (I was hoping for something more fun than an instant death tho )
I believe there is a flavor of Linux out there which is trying to replicate LCARS from Start Trek The Next Generation. I actually like the idea of a retro future OS instead of the direction OS are moving to now.
What specifically about it is retro?
A lot of bright colored boxes separating text, mostly. Probably not the best use of space but it really depends on your screen size. Here’s the link for it; https://lcarsde.github.io/
i think on older smalltalk it would fuck up the system a lot