Where Are Operating Systems Headed?
An anonymous reader writes "Dr. Dobb's Michael Swaine breaks down the question of where operating systems are headed. Among his teasers: Is Vista the last version of desktop Windows? (Counterintuitively, he says no.); Did Linux miss its window on the desktop? (Maybe.) And, most interestingly, are OSes at this point no longer necessary? He calls out the Symbian smartphone OS as something to keep an eye on, and reassures us that Hollywood-style OSes are not in our short-term future. Where do you weigh in on the future of operating systems? In ten years will we all be running applications via the internet?"
Everybody is talking about running applications through the internet. Why would we, as consumers, want to do this? The RIAA and MPAA are attempting to limit our ability to make backups of things we purchase. Now, software appears to be heading in the same direction. If we start streaming applications, then we could easily get into a pay-as-you-use function, or some other horrid distribution system. Frankly, I would not want to be charged every time I open a text document, or an IM window, or an internet browser. And I don't like the idea of paying a subscription fee either. I think forcing people to stream applications through the internet will only push more people into using Linux, so that everything is right there on the machine.
The definition of an operating system I like to use is:
An OS is a collection of code that is used by software to manage access to system hardware via a well defined API, along with a collection of standardized utilities that provide for user access and management of system hardware and data structures and data streams associated with that hardware.
So, under this definition, the kernel is a peice of the OS, disk access utilities are part of the OS, but applets such as a mini word processor and paint program are mearly bundled utilities.
I'm worried that we're going to keep building on top of the macrokernels we already have, without cleaning up and simplifying things as we go. I'm worried that the future will be as presented in Vernor Vinge's A Deepness in the Sky, where everyone runs an operating system too large, un-modular, and spaghetti-like for anyone to understand, much less debug. Hurry with The Hurd, RMS!
Step into a huge movement. Don't Tread In Me.
Two words: Consumer devices.
I think Steve Jobs has seen the future, and realised that the PC won't be so important, the action is all going to move to various types of devices aimed at consumers. So, he started with music players, is moving into portable video/gaming and now of course telephones, and has made the first steps towards TV. Television is the biggie of course, and I believe Jobs is being deliberately low key about his intentions there - with the low key announcement of the Apple TV box, for instance.
Here's a prediction, in the next few years Steve Jobs is going to make a presentation where he says something like "First we revolutionised the personal computer, then the music player and the telephone. Now we're going to revolutionise television..."
I'm inspired by Ray Kurzweil's keynote at RSA Conference 2007.. http://singularity.com/
If you're a M$ hater, just wait until "sap and impurify your precious bodily fluids" is a system requirement.
Among other nanotechnological breakthroughs, Kurzweil says it will be possible to inject robotic blood cells that will enable you to "sit at the bottom of a swimming pool for 4 hours."
OK, for now I'll settle for Fedora Core 42 and nano-robots that will let me drink as much red wine as I want without getting a headache.
Give a man a fish and you have fed him for today. Teach a man to fish, and he'll say "WHERE'S MY FISH, YOU IDIOT?"
For a computer to be useful, you need hardware, applications, and input and output. That's it, nothing more.
Everything in between is there as a convenience.
Whether it's convenience library routines like math libraries, a hardware-abstraction or -virtualization layer, or things that let more than one application coexist and even communicate, or whatever, OSes and other "in between" parts of a computer are there to make the application more useful, easier to write and maintain, or both.
We will always have these in-between layers. Whether the "in between" layers of the 22nd century are anything like today's OSes only time will tell.
Personally, I think 10 years from now you will see just about every application running in an isolated environment, possibly a VM of sorts. In particular, applications which access machines or applications that are not "trusted" will be run isolated from other applications on the system. They will be able to save files to a scratchpad area and send events to certain other applications such as a printing subsystem, but that's about it. Applications will communicate with other applications on the same PC in much the same way distributed applications, such as a web application, communicate today.
By 2017, I also see most applications using virtually no local storage except security credentials and cached data. All "real data" will be stored on "the big server in the sky" or "the big server run by the IT department." The exceptions will be applications demanding extreme privacy, such as diaries and non-networked dayplanners, applications demanding offline use, such as cellphone notepads, and "convenience applications" like calculators and non-networked games.
By the time our Kindergarteners reach High School, the distinction between wristwatch, cellphone/PDA, and laptop/desktop/home-entertainment-center will be one of scale and purpose, not architecture or raw capability.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Until devices and other hardware components have enough built-in intelligence to communicate with each other and with user programs, and until their built-in intelligence is presented to applications through a standardized communications interface, there will always be a role for operating systems.
And the reason is simply that this is the primary role of an O/S: to glue together many rather dumb components (some virtual, some non-local), and to provide a standard abstraction for them, so that applications can be programmed with a degree of sanity. Everything that O/Ss do can be considered in those terms.
Host operating systems will disappear when they are no longer needed. And *that* will happen only when/if their key functions have migrated into the hardware, so it's a defensible argument to say that actually they will never really disappear, but transform.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
The point of Internet applications, or equally, Intranet applications, is "run anywhere" convenience.
My ISP offers webmail. If I use it instead of POP, I can read my mail anywhere, anytime. In exchange, I lose the privacy that comes with keeping my data local. I also lose the ability to read my mail when the ISP has a hiccup.
Google offers maps. In most cases Google Maps is a lot more convenient than firing up my local street-maps program. It's also "run anywhere."
On the other hand, I don't think I'd want my doctor to put my medical records on any online database unless it was very secure and run by trustworthy people and didn't allow unencrypted connections.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
There was a time when people tried to cram an http server into Linux.
It may still be there but it's not used outside special-purpose environment.
Likewise, until recently people tried to cram almost every filesystem and pseudo-filesystem under the sun into the Linux kernel. With the advent of FUSE, future pseudo-filesystems and even real ones will be in userland. Sure they won't perform as well but at least they won't kill the kernel when they bug out.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Do you know that today's computers are really fast? I mean, those GHz processors are incredibly fast, it is unbelievable what they are able to do in a second. But you might not know it from just using a computer.
In my daily work I often receive very slow responses from both Windows and Linux machines. I often have to wait seconds for things that should (and could) be instant. I mean after the screen saver on my desktop machine locks the screen, the next user request invariably will be to unlock it. The OS should know that. And it should sit there waiting for any sign that its master wants to work again and then it should instantly present the password dialog.
Or what about those apps where I have to look for seconds at animated splash screens saying that they load this or that module or plugin. Why can't the OS provide means for loading pre-initialized applications (some folks might remember the undump utility).
There are possible performance improvements all over the place, which could be achieved by using techniques like caching or using database technology or being able to hint to the operating system which ressources might be needed next. Together with maybe a little more RAM this could create a really reactive user experience.
I often wonder how you can spend so much money for creating software and come up with such bad and slow design :-).