O p e r a t i n g S y s t e m W o e s
" a spectre is haunting the computer industry - the spectre of
object/capability systems. All the powers of old computing
have entered into a holy alliance to exorcise this spectre. "
Recently, a friend pointed me to this thing written by Rob Pike, way
back in the year 2000. Love him or hate him, but it is pretty spot on
I think:
http://doc.cat-v.org/bell_labs/utah2000/utah2000.html
Ignore the Microsoft and or programming language comments in there if
you don't agree with them, or if they haven't aged well - The essense
of the talk - how monetization destroyed innovation, and how there's
little to no real systems and OS innovation happening rings very true
And I would say things have gotten worse since Rob gave this talk in
2000, much worse.
A lot of us have come to believe Unix is pretty great. Treat
everything as a file, have simple small utilities that do one thing
well, etc,...
After all, if all we have to compare against is GUI systems such as
those used on Microsoft's Windows OS'es, this approach seems a lot
more flexible.
But, can you imagine better ways a system might work? Believe it or
not, there is a lot more to computer history than Unix (+derivatives)
and Windows, and we've thrown out a lot of good ideas with the bath-
water in the name of standardization, and it not making short-term
business-sense to work on new groundbreaking OS technology for most
companies.
Imagine an operating system where you can just grab variables/objects
out of another process without having to worry about inter-process
communications. Things like serialization, and the funky formats that
come with it, like json and the like, would suddenly become obsolete.
Security could be dealt with on a per-object level, or objects of a
given type/category. This is how capability-based operating systems
could work. If everything interacts with objects, and object-based
permissions, you also no longer have to worry so much about isolating
individual processes memory address space - heck, you could do away
with addresses all together. This would also mean less(/no?) context-
switching etc,...
If this sounds like crazy science fiction, think again, because it's
been done before. MCP did some of this on Burroughs B5000 mainframes
way back in 1961. An example of a later, more advanced systems is the
BiiN systems which grew out of the intel iAPX 432 project. These
systems included a full UI, filesystem, etc,...
Manuals for the BiiN can be found here, these include some pictures
of these beautiful systems and some gui examples.
http://bitsavers.org/pdf/biin/
If you're interested in cap-based systems, give this book a read:
https://homes.cs.washington.edu/~levy/capabook/
This is not about which operating system is better than others, it is
about encouraging people to think outside of the boxes we're so used
to. Like all software, every operating system will inevitably start
to suck the more general purpose it's trying to be, the more usecases
& people it's trying to cater to, which is a function of how popular
it is, and thus the more organic growth and compromises have been
layered on it's foundation. That doesn't mean we should stop striving
for a better foundation, or be afraid to start with a clean slate and
try to make things better, or re-imagine what computing COULD be. It
also shows that studying older systems isn't just a thing to be
dismissed as a hobby with little value. There is a lot to be learned
from our history. Older does not mean worse and newer does not imply
better. Better/worse/whatever, it's all a matter of perspective and
what you're comparing against what.
In any event, I hope this post inspired someone, somewhere, somehow!