Microsoft's Vision For Future Operating Systems
Bender writes: "The Systems and Networking group at Microsoft Research has a fascinating article that details what sorts of things they believe may be important in Operating Systems of the 21st century."
20 January 2017: the End of an Error.
There are some sound ideas here for future directions in Linux development - and they've already been thought up for you here.
One big problem Linux development will face is the notion that devs are playing catch-up with MS with projects like Mono. (We blast Microsoft for its claim that it is an innovator, but has there been much innovation in Linux kernel devlelopment lately?) Instead of trying to build a Windows clone, we should build up a system that addresses computing in a way that MS system's dont.
I really do hope that people read the entire paper before posting their thoughts about it. I hate Microsoft with a passion -- my first thought upon hearing about the WTC attack was, "Those poor people! I sure hope Bill Gates was in there." -- but the points they've raised here are valid ones and deserve analysis. The topic is an important one and I hope people will not malign it because of the source, namely, Microsoft.
That said, I'll comment on the paper itself. They have a point, somewhat understated, which is basically, "Yeah, this may be crazy, but it's worth looking into, isn't it?" One obvious response is that it sure seems to be What Microsoft Wants in terms of a homogenized global system that Microsoft controls. Though such a thing is never specifically said, it is called the "Millennium" system, and the ME in Windows ME stands for "Millennium Edition" (side note, it just occurred to me that "Windows ME" could be said with the same tone, inflection, and connotation as "Fuck me!" as an expression of dismay -- "Go Windows yourself!").
Well, who knows, but their idea of a transparent large-scale network that is self-managing as they've described is an interesting one, and there are some things that would be appropriate in such a system. That said, here's several reasons why I think such a system will not happen in the near future:
1. Too much resistance. This *is* a crazy idea, and even if it could be made to work, most people are used to the idea of "my" computer, "my" data, and everything happening physically *here*, inside this little box under my desk. This will take a long time to get over. Perhaps a gentle transition would help, with more and more things gradually shifting to the Big Network.
2. Games. Games require zero latency - nobody enjoys playing Quake with network lag, let alone system lag. All computations for games and other time-sensitive applications would have to be done pretty much within the physical computer you are using, otherwise the latencies are too great and the game would be unplayable and chunky. Imagine if your 50ms ping time also figured into the video processing!
3. Security. It seems silly to assume people would *want* to walk up to a random machine somewhere and have all their documents streamed to it over the Big Network. For one thing, who knows whether the terminal is secure, or if it's got secret programs installed in it to capture your keystrokes? Using a publicly accessible terminal to get to your private data is a bad idea. Also, critical machines (computers that run public infrastructure, banking systems, military systems, etc.) should obviously not be any part of this kind of transparent system, for the obvious security reasons.
4. Where we work. Telecommuting is, for all the cheerleading, not very common at all. When people do regular business-like work (i.e. office workers writing reports, having meetings, doing whatever) they will want to have everything in the same place, and do it in big chunks at a time. Face-to-face communication with people is also very important to the way business is usually done, though this may change as people get more used to the idea of telecommunicating for business. Being able to "walk up to a computer anywhere" and do work is pointless, because the vast majority of people are not going to WANT to be walking through the mall, window shopping, and decide they need to do some work, so go sit down at a public terminal and start doing work. (Nevermind the security issues, mentioned above.)
5. Monoculture. If we think a Windows monoculture is bad now (and we do -- at least, I do), imagine what happens when every computer in the world is now running this system! On the other hand, if such a system was designed so that anyone could implement their own version of it, then you avoid some monoculture issues, but because you have to have interoperability between the systems, you essentially end up with what we have now -- the Internet, made of multiple differing systems that can still communicate using a common protocol, except the protocol would extend beyond data transfer and into things like distributed processing.
If you've managed to read this far, congratulations! I can recommend a decent novel that incidentally covers this topic (it is not the main focus of the plot, but does figure into it): Permutation City, by Greg Egan. A very good novel with lots of interesting ideas, but it does feature a worldwide network in which you can basically bid on processing power to draw from the global network, so your programs might be running anywhere in the world, but are running securely so that a computer doesn't really know what it's doing, it just executes commands. It doesn't go into much technical detail (like how they manage to have computers execute encrypted code without decrypting it), but it's relevant nonetheless.
"Destroy science and religion. Science would re-emerge exactly the same; but not religion." - Penn Jillette, paraphrased
- Seamless distribution. The system should determine where computations execute or data resides, moving them dynamically as necessary.
- Worldwide scalability. Logically there should be only one system, although at any one time it may be partitioned into many pieces.
- Fault-tolerance. The system should transparently handle failures or removal of machines, network links, and other resources without loss of data or functionality.
- Self-tuning. The system should be able to reason about its computations and resources, allocating, replicating, and moving computations and data to optimize its own performance, resource usage, and fault-tolerance.
- Self-configuration. New machines, network links, and resources should be automatically assimilated.
- Security. Although a single system image is presented, data and computations may be in many different trust domains, with different rights and capabilities available to different security principals.
- Resource controls. Both providers and consumers may explicitly manage the use of resources belonging to different trust domains. For instance, while some people might be content to allow their data and computations to use any resources available anywhere, some companies might choose, for instance, not to store or compute their year-end financial statement on their competitor?s machines.
Yep, this'll be fun. Where do I buy the popcorn?What!? You thought I could come up with a witty way to make fun of that statement?! I'm not a magician!