Homogeneous Operating Systems Are Better

Recently I've had an encounter of two similar implementations of the same idea: homogeneous operating systems. A homogeneous operating system is an operating system that is created with one programming language all the way through. There are several benefits to this, which we will get to. There are no clear negative consequences to me using this paradigm, but I'd like to see other's thoughts on this. Anyways lets get to it.

Terry Davis's Temple OS is a great example of a homogeneous OS.

Isn't it beautiful?!

This OS is like a terminal on crack. Everything you see in the above screenshot can be modified with ease, because the entire system is built in fine C (actually HolyC, a C dialect).

From the device drivers up to its shell, C is the only programming language used. The flexibility shows in his 85 (and counting) demonstrations videos, where he shows how to draw directly to his screen from his C interpreter shell, jump to any function definition, or find source files with ease. I recommend checking them out, and promise they will interest you.

On any modern operating system, whether it be Linux-based, *BSD, Windows or Mac, I find it incredibly hard to modify most aspects of them without having to dive into an extremely convoluted manual or read through mailing lists and cast magical incantations. Why can't I just look in (yes Plan 9 does this very right) /sys/src/9/ip/tcp.c to see the TCP implementation (this is just an example, it could be anything)? Or even better, when I don't understand a certain function call, press SHIFT-F9, or whatever you choose, to jump to tcp.c and read the code? The best scenario is when the source files contain a nice little heading at the top explaining how the functions in the file are typically used. Then most of your documentation use-cases are covered.

But no, in these other systems, you're required to do some research before you begin anything of significance. Writing X or Win32 applications is a good example of this. They are both extremely convoluted when trying to read their documentation. In fact, there may be some documentation missing (isn't that the best?). This is not possible in Temple OS, or the other system I am going to mention shortly. All of the source is there to be used. No APIs are stopping you, the developer, to do what your heart desires. You truly have complete control of your operating system.

But Temple OS wasn't the first to do this. While reading the "Unix Haters Handbook" (which is a hilarious, great book by the way), the author talks a bit about LISP Machines and how glorious they were. I have to agree he has somewhat convinced me.

LISP Machines used a programming language called (here it comes) LISP. LISP is high level, but was used for the entire system. The processor processed LISP. The shell is a LISP interpreter. The GUI is coded with LISP. LISP Machine programmers breathe, eat and sleep LISP. As with Temple OS, LISP Machines' operating systems allowed developers to jump to any function, easily modify any aspect of their system, and had little restriction. Developers are free to use any LISP function anywhere they please. Why isn't it that easy for developers today?

Ask yourself right now, what is the best way to list all functions available to you on your system. Simply put, you can't, unless you are running a completely open-source OS and have compiled everything with debugging symbols (which is rare- if this is you are an eccentric computer user, which is unfortunate in this world...). Instead we are stuck with man pages, cryptic program names, html-based documentation, and a massive amount of libraries with duplicate functionality.


The next little bit of this text talks about Unixisms and is in no way mean to be interpreted as "Unixisms suck", only that we should consider how life could be changing the paradigm a bit.


Anyways, after thinking a bit about this paradigm, I began to think further...Just consider, that maybe the Unix philosophy of "write programs that do one thing and do it well" is just a little off. Maybe it should be written "write routines that do one thing and do it well". Maybe then we can get rid of Unix pipes (but keep the concept of streams), and pass data around through routines. Consequently we can use the programming language's typing system to define what data can be passed to routines. This is a much more flexible paradigm, and obsoletes text streams as the universal interface. Data is data, and there should be no restrictions on what said data is. This makes me think ideas like synthetic file-systems are silly and FIFO files are silly and only exist to help us deal with the mess that is the API and how we pass data. The file-system should be used for persistent storage, and RAM for temporary storage. Consequently, this also makes Unix philosophy rule 5, "Store data in flat text files", redundant. Store data as it should be intended to be stored. Don't go out of your way to mangle it so it is "human readable", these are computers! Some (actually I'd say most) data is not meant to be expressed as text.

The reason why we won't see a shift to this paradigm any time soon is primarily because of cost. Too many developers have spent their lives using a traditional OS and do not want to make the effort to switch. Thousands of businesses use traditional OSs and so their workers are forced to use them. Too many applications are written in too many different languages! It is just not possible unless everyone (or The Big Guys) decides we want to move this way.

Or maybe this is all just crazy and what we have is the best we will ever have in our lifetimes right now. :)


  1. Hi. The picture in this post hasn't loaded for me. Just to let you know. Also the post was interesting. Your posts feel raw, almost as if they haven't been edited... Not that that is necessarily a bad thing.

    Btw I saw you on hn. And just to let you know, my blog is https://blog.ismail-s.com.

    1. Yeah, I know. Terry decided to randomly get rid of the screenshot he had on his website for the longest time. I'll get a new one up there now.

      Yeah most of my posts have little editing. Sometimes I'll go back and cleanup certain parts if I feel they are too all over the place.

      I'll check out your blog! Thanks for stopping by.


Post a Comment

Popular Posts