4 ms·
Obviating the OS was a natural consequence of one of the original goals of OOP as conceived by Kay et. al: First, recall that the advantage of universal comput
by noblethrasher 11y ago
Obviating the OS was a natural consequence of one of the original goals of OOP as conceived by Kay et. al:
First, recall that the advantage of universal computers is that they can simulate anything, including better computers. Objects themselves were supposed to be fully universal computers that got work done through message passing.
Second, the people at PARC had a "no centers" philosophy. They recognized that the key to building scalable systems is to keep responsibility widely distributed among the components.
Thus it's easy to see why you wouldn't need or want an OS:
* An OS is just a simulation of a nicer computer running atop a not-so-nice computer (i.e. the hardware). But, real objects can give you the same thing, and it just so happens that modern hardware components are real objects (i.e. universal computers that get work done by passing messages).
* Having centers in your system makes it hard to scale. And by "scale", we're not necessarily talking about things like "number of simultaneous users/processes", but rather about things like making sure that the Nth modification to the system is just as painless as the first one. The OS is clearly an unnecessary center because the hardware components are now better at handling the responsibility for their respective functionality, but the OS is also an undesired center because its opaqueness and rigidity makes it hard to modify big systems. Fortunately, since an OS is a simulation of a universal computer that means that it can also simulate other universal computers, so we're able to abstract away the OS by using it to run simulations of better computers with names like "Erlang", "Java", "Python", etc.
Finally, while I enjoyed the article and found it interesting, I do disagree with the author's tacit assumption that getting rid of the OS implies more opaque and locked down systems, or that locking down the system implies better reliability and security. Firstly, message passing is already a secure medium; stupid or malicious parser implementations are the biggest cause of the Internet's insecurity [1]. Secondly, it's an empirical fact that the best way to achieve systemic reliability is with redundancy. This means having components that perform the same function, but that are produced independently by isolated teams that use different technologies and techniques. So reliability means having communication standards of some kind (i.e. protocols). Indeed, as long as companies continue to sell computers (i.e. a thing designed to let me simulate what I think is a better computer), we'll end up with more freedom to tinker. What we really have to worry about is companies selling things that they claim are computers, but that lacks that crucial facility (which is why the trend of calling an iPhone a computer, or OSX's SIP can be a little disquieting).
[1] http://langsec.org/ http://langsec.org/
- anttiok 11y agoI think we're in rough agreement. "The author's" assumption is that getting rid of unnecessary moving parts is an improvement. Having many slightly different copies of the same functionality in the stack is not redundancy, it's just silly -- "all problems with operating systems can be solved by removing layers of indirection" I'm not too worried about companies selling tools instead of computers, just like I'm not upset upset that I didn't get a metallurgy plant when I bought a hammer. Yes, the philosophy of computation is a different thing (as Dr. Kay often points out), but sometimes you just need a tool instead of poetry. (nb. I'm not making a statement about whether or not everyone should understand computers) Maybe if you think about a driver as a unit which performs a computation, the article will make more sense. I like to call drivers "protocol translators", but translating a protocol from one representation to another is really just a computation. The idea is to slowly liberate those units of computation from the clutches of the "centers", and then improve them, while still keeping the world functioning.