Saturday, June 6, 2009

Personal Computing: The End of the Operating System

Ah, the Operating System. That layer of software that speaks directly to the hardware in a computer, functioning as a host for applications. It is the interface that lets application developers avoid having to deal with the complex inner workings of the hardware itself. OS's like CP/M, MS-DOS, System 1.0, Windows 3.1 all seem humble today, but their evolution and their descendants have helped make personal computing ubiquitous.

In today's world, to choose a computer is to choose an operating system. The average user buys a PC with Windows on it, or maybe Linux, or buys a Mac with the latest flavor of OS X. The choice for the user typically starts with the OS. But with the rise of the Internet, we are nearing a new phase of application delivery and execution that begs the question: are we nearing the end of the personal computer operating system as we know it?

For the average user, the operating system is nothing more than a way to get to one's applications. The typical computer user doesn't care about OS intricacies like driver communication or internal file management. For the typical user, the operating system is simply a platform for executing applications and manipulating information through those applications. It is the application that is important, and the OS choice is made largely based on the applications the user wishes to run.

Over time, new kinds of application platforms have emerged. The concept of the virtual machine is one example of an application platform that, from an end user's perspective marginalizes the operating system. Virtual machine environments like Java, and more recently .NET/Mono, focus on a "write once, run everywhere" promise with clear benefits for developers. End users see benefits as well, getting to run desired applications without having to fore-go their choice of operating system. That's the promise, anyway; actual implementation proves more complicated, but virtual machine environments have succeeded enough for their evolution to continue on a large scale.

As Internet computing has grown, additional opportunities have arisen which challenge the personal computing paradigm. Google and Yahoo have led the way with AJAX frameworks that enable software to be developed and hosted by a provider, with the end user executing applications through the browser of his or her choice. The evolution of HTML standards, particularly HTML5, combined with intelligent JavaScript development and server hosting provides an application platform that diminishes the relevance of the end user's operating system.

With the development of the Chrome browser, Google has taken this effort one leap further. Chrome isn't so much a web browser as it is a multi-threaded JavaScript application execution environment. It could become the preferred front-end for executing these kinds of JavaScript-centric, web-hosted applications. Google's work with the Android operating system encourages robust application experiences on mobile phones, and with Chrome running on cheap netbooks (or possibly a Google-marketed netbook with Chrome embedded in place of an OS), users have an application execution paradigm that completely bypasses the traditional Personal Computer + Operating System model.

In addition to virtual machines and web-hosted JavaScript applications, an even more ambitious cloud computing model may be emerging. I have written previously about the potential for application processing in server farms, with audio/video streamed back to the user. OnLive is currently developing the infrastructure for streaming live video game experiences to subscribed users through broadband connections. In such a model, the application provider effectively becomes the operating system, with a user interfacing through cheap dumb terminal devices while still experiencing a rich, graphical application experience. Should this model prove technically and commercially viable, one may expect this new paradigm to emerge as a significant replacement for Personal Computers and Operating Systems.

One way or another, there is tremendous momentum to replace the Operating System as the dominant personal computing application platform. As Internet computing continues to grow, personal computing as we know it today will soon be considered quaint. As new application platforms emerge and provide useful experiences for average users, the Operating System as the focus of user choice will soon fade into obsolescence.