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.
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.
Too bad you posted as AC. I was looking forward to a mature conversation about your assertions...
Oh wait, this is Slashdot. What am I thinking?
"Piter, too, is dead."
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.
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
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.
Big Deal. I can do that NOW, without any nano-anything. Heck, I bet YOU can, too!
Now, if you insist on filling the pool with water... <grin>
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!
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.
I think operating systems will increasing become less and less of a concern for all of us, except for hardware scientists. Those of us more interested in applications care more about the platform, which I see over time being standardized in freedesktop.org, with various implementations or bindings in about every major "platform" interpreter/machine, be it C(++)/Kernel, the JVM, the CLR, or Mozilla. I also see all the major scripting languages having JVM and .NET ports one day.
random underscore blankspace at ya know hoo dot comedy.
...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!
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.
Now that sounds like an OS full of gaping holes.
Terrible security, that.
Ignore this signature. By order.
Now, for my own personal experience, I prefer Ubuntu and hardly ever use my windows desktop. Even over VNC, my Ubuntu desktop is more responsive than Windows XP on the Dell, and much better than Windows 2k on the laptop. Infact, the only thing that runs on the laptop anymore is vncviewer, so it's essentially a dumb terminal. Since installing Dapper, I upgraded to Edgy with no problems, and plan on upgrading to Feisty as soon as the upgrade path gets tested. Edgy performs better on the same hardware than Dapper did, and Feisty looks to accomplish the same thing. When was the last time a Windows upgrade resulted in better performance on the same hardware?
http://www.mhall119.com
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 :-).
Exactly.
Not many people who have gone to the trouble of owning a cow and stuck at it for awhile are going to go back to buying milk and cheese from the supermarket. The big dairies will try to make out that milking a cow is too difficult for ordinary people to manage. Some will believe them, but others will have a go and some of them will succeed. And just because people aren't buying prepackaged milk anymore, doesn't mean they won't be needing other things. The smart investor would be thinking in terms of cow food, churns and maybe fancy gadgets like fully-automatic electric cheesemakers and home semi-skimmers, which cow owners will need if they don't want to go back to Tesco.
Microsoft are getting too big for their boots. One day now, they'll mess with the wrong people, and be told to go forth and multiply. That will make a lot of people wonder why they didn't have the cojones to blow Microsoft off sooner. Some will give it a try. Remember also that interoperability is improving all the time. Microsoft can't change their proprietary protocols too quickly, for fear of breaking everything. If they introduce a new server protocol, everything still has to be able to speak the old one for awhile. Open Source is behind now; but if Microsoft stall, it'll catch up quickly.
And there's always this sort of scenario;
Once Open Source deployment -- whether that's Linux, BSD, Solaris or something else altogether -- reaches a certain critical mass, it will automatically and suddenl
Je fume. Tu fumes. Nous fûmes!