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 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.