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?"
I think the author of the article is displaying a great deal of confusion over Operating Systems vs. Programming Platforms. Which is understandable. We've had the concept of "everything included on the CD is part of the operating system" idea drilled into our heads for the last decade or so. There has been little attempt to recognize how distinct different portions of today's "operating systems" actually are.
Consider for a moment: What is Debian on FreeBSD? Is it a FreeBSD operating system or a Linux operating system? Or is it a Frankenstein kitbash of both? The answer is, neither answer is correct. It is the FreeBSD kernel combined with the GNU Platform.
Separating the task of operating the hardware (traditionally the job of the kernel) from the higher level "platform" has a variety of implications. The most important implication is that the software is as portable as the platform is. It doesn't matter if the underlying kernel is FreeBSD, Linux, or Windows NT. If you software targets the GNU platform, it is portable across all those systems. At least at a source level, though binary compatibility is ideal.
Thus when programmers make the comment that Java "is like an Operating System", what they mean is that the Java Platform is sufficient to replace the platform that shipped with your operating system. While the focus is currently on integrating the disparate platforms, what you're starting to see is that the OS is taking a back seat to the platform. Programmers want portability across devices, and Information Technology wants more flexible deployment solutions. Combined, these two needs add up to a drive for further portability of platforms with an eye toward using the right kernel for the right deployment solution.
That is where "Operating Systems" are headed. Not the monoliths of yesteryear, but the flexibility to provide familiar functionality where you need it and when you need it.
Javascript + Nintendo DSi = DSiCade
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.
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..."
Symbian? You've got to be kidding me, right?
He definitely never looked at it or never tried to develop something on it.
If Symbian is your answer, you've got the wrong question.
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
I envisioned a modular OS where the core provided essential features and all the trappings were completely pluggable. Don't like the UI framework? Use a different one. Same for the filesystem, etc. At the heart of the OS I expected to see a sort of object database where all these features were installed and managed, with some sort of OpenDOC layer on top to retrieve modules as needed. Of course, I was way off the mark, but this is the kind of OS I would like to see in the future.
Unix has this to some degree, partially by virtue of it being old, but there exists no structured management system for the packages at this basic level (that I'm aware of). And while I grant that one isn't necessary (the shell/filesystem combination is fine for package management), the lack of one tends to complicate things from a user perspective. Linux has made great progress over the years in achieving high-level usability, but many low-level tasks still require a good bit of domain knowledge and thought, largely because of the filesystem/shell nature of how these tasks are typically performed. If this process could be simplified and in turn made more reliable (it's a bad example, but compare installing an application on MacOS compared to any other operating system), then I think things would be moving in the right direction. This isn't to say that being able to mess with the core of things is bad, but it should be an option, not a requirement.
Think of a computer as a layer of platforms. Applications can target any platform unless some part of the platform stack restricts such access.
A typical PC:
CPU and other hardware, BIOS, OS kernel including kernel-level library routines and virtual-machine subsystems, OS-supplied and 3rd-party library routines including OpenGL and non-kernel virtual machines, and applications. For the sake of simplicity I'm ignoring complex scenarios like OSes running in a VM that's running in an OS that's running in a VM.
In principle, applications can "call" functions at any level in the stack, although in modern OSes the kernel blocks direct access to the BIOS and some other hardware and the chip itself blocks access to privileged instructions by unprivileged applications.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
I dispute that. And even if Linux does die out, its legacy will continue.
Linux has had a huge positive effect. For one thing, it gave the GNU project a serious kick-start. Sure it was possible to run GNU on a BSD kernel before Linux came along; but next to nobody actually did. Anyway, BSD had its own set of Open Source userland utilities, and still hardly anybody used it. Suddenly Linux came along, and Open Source was trendy. Linux had its limitations, for sure; and some of the people who tried Linux moved over to BSD for what at the time were valid reasons. Some of them moved back when Linux cleaned its act up. These peole might never have tried a free OS, if it had not been for some young upstart Finn with a bee in his bonnet about performance of monolithic vs. microkernels.
Do you think Solaris would have been open-sourced -- possibly even under GPLv3! -- if it hadn't been for the fact that GNU/Linux posed a credible threat to it?
If anything is "headed to the landfill", it's the whole Closed Source model -- or more strictly, the egregious idea of keeping the Source Code of a program secret from its own users. The extent of the damage that this has done is just beginning to sink in, ever so slowly. Within a generation, there will be more than one country in the world where it will be illegal not to supply Source Code with software, even if you are not allowed to give out copies of it.
Je fume. Tu fumes. Nous fûmes!
...not that I have any idea for a new one, but the OS as we know it is one of the prime examples of a system whose rationale is "we've always done it that way."
People have forgotten that the original goal of the "operating system" was nothing other than to automate the function of the "operator," reducing personnel costs and making sure that the computer wasn't sitting around at $200 an hour waiting for someone to square up the next deck of cards and load them into the hopper.
The only people who think they can tell you what an OS really is are the students who have recently memorized some textbook definition. An OS is an intertwingled hairball of utterly arbitrary functionality. It has evolved from competitors copying whatever it is that another competitor did, messing some things up, adding some cool stuff, and doing random things dictated by marketing strategy.
Want to bundle HyperCard, but you promised the database vendors you wouldn't compete with them? Easy, don't call HyperCard a database, call it part of the "system software." Want to hide the fact that your graphical shell could run on a competitor's operating system? Easy, just say Windows is part of--no, wait, IS--the operating system. And so it goes.
It is quite possible to use a computer without an operating system. I'm not saying any of these are viable paradigms for today, but none of the original versions of BASIC required an operating system. MUMPS is largely self-contained, no OS needed.
There is an opportunity for some kind of brand-new conceptualization. No, I don't know what it is. If I did, I'd promoting on it. But, yes, I think it's very likely that twenty years from now the idea of an operating system will seem as quaint as the idea of a front panel with lights and switches on it. There was a time when nobody believed you could run a computer without _that_, either.
"How to Do Nothing," kids activities, back in print!