Why reinvent computing?

People act as though operating systems are a solved problem. Windows is so mature that it seems like the only way Microsoft can add further value is to rearrange the start menu every few years. And why do we even need to worry about operating systems anymore when everything is now on the web?

The truth is that there's a lot of untapped potential in personal computing, and computing in general. In recent years, most of the exciting developments in computing have filled one application: improved communication.

Now that instantaneous communication (including commerce) is a reality, it's time to explore other potential needs and applications that computers might fulfill. What kinds of applications? We'll just have to wait and see.

The web didn't start out as a universal application platform. It grew to fill a need. Standalone applications on open platforms were difficult to install and get running. They were difficult to support across different machines. The web was able to compensate for shortcomings in traditional operating systems, but those shortcomings still remain.

The response from OS vendors has been to lock-down their offerings. Require the developer to build their application in a particular programming language, to work with a particular version of a particular runtime environment. A better, and more exciting approach, will be to change the definition of a runtime environment (modularise it) so that the user can customise the operating system to work with whatever runtime mechanisms they require, without the risk of exposing the kinds of security vulnerabilities that have been the downfall of traditionally-open operating systems.

Here's an example: Files and folders. When you share data online, there are sensible ways to organise and retrieve the stuff you want quickly. Tags, lookup queries, and so on. But when you store stuff on your own computer, you're stuck with a file storage scheme that dates back to the 1970s, and it can be difficult to keep track of where you put your files.

A traditional operating system puts things like the filesystem on the bottom, and builds everything else on top. The user can't change the rules of their filesystem; there's too much resting on top. An approach that better facilitates innovation wil be to flip the architecture upside-down: remove the dependence on filesystem organisation and put the user in charge of how their files are organised and how applications are allowed to access them.