Summary
If you need an OS for you laptop, your phone, and your tablet, why don't you need one in the cloud? Our current conception of how people use the cloud has significant limitations that could be mitigated with the introduction of a cloud-based operating system that people can look at as their "virtual computer" that's always on, always working.
If you need an OS for you laptop, your phone, and your tablet, why don't you need one in the cloud? Our current conception of how people use the cloud has significant limitations that could be mitigated with the introduction of a cloud-based operating system that people can look at as their "virtual computer" that's always on, always working.
Long ago there was something called a "microcomputer." The name seemed natural enough given that they were smaller than the "minicomputers" of the time. The first examples were crude machines that required significant technical expertise of the user. As microcomputers became easier to use, they took on a new name based on the feeling that they produced—they became "personal." One of the hallmarks of a "personal computer" is its flexibility. Personal computers are capable of doing what their owner wants and doing different things at different times.
This flexibility is provided by a utilitarian piece of software call the "operating system" that sits between the computer and the software it runs. We're all familiar with operating systems because they give the personal computer it's personality and define most of what the user thinks of as "the computer." Operating systems run programs, manage stored data, and provide common services like printing or access to networks.
Today's cloud offerings aren't nearly as utilitarian as a personal computer. A personal computer—be it a desktop, laptop, tablet, or even smartphone—is vastly more powerful and flexible than that Apple's iCloud, Google Docs, or Facebook—despite the latter's programming platform and API. This isn't simply a matter of waiting for Google Docs and other personal cloud offerings to mature. Their architecture has a fundamental limitation by not having an operating system. Let's explore why.
Operating Systems
We wouldn't be stretching credulity to call the operating system the most important piece of software on your computer. The operating system sits between the hardware and the applications. The operating system presents a virtual machine that is orders of magnitude easier to program and interact with than the bare metal of the hardware. For example, here are a few things that operating systems do:
- Identity—All modern operating system provide identity as a fundamental service of the operating system, tracking users, permissions, preferences, and other important attributes. Our conceptions of how computers work are based on this knowledge of our identity.
- Program execution—operating system present a method of running programs that is very different from the underlying machine. First, the OS keeps track of metadata showing that the data is a program. Lower down, the OS is responsible for loading, threading, and other details of how programs actually get run. At the UX level, the OS is presenting a view of applications that enables user selection, configuration, and control.
- Data abstraction—operating systems present a view of data that is very different from how it's actually stored. For the most part, disks have tracks and sectors. Getting data on or off the disk involves knowing specific locations of the data and stringing it together into the entire object. What's more, the disk doesn't store any metadata as a matter of course. The disk doesn't know if the data it's returning is a JPEG or an MP3 file. Finally, the disk doesn't have any concept of data ownership and permissions. An operating system, in contrast, provides applications with an abstraction that let's data be accessed in a hierarchical manner and provides all kinds of metadata so that applications know what they're getting, when it was created, who owns it, who can read it, who can write it, and so on. The operating system manages permissions and access to data.
- Communications—operating systems similarly abstract communications. Sockets, among the most primitive of OS communication services, are orders of magnitude easier to use than working with the Wi-Fi or networking hardware directly. And of course, operating systems present even more abstract ways of communicating when you consider the myriad network services present in any modern OS. What's more, not only does the OS present a high-level view for programmers, but also presents the user with interfaces for easily managing various parameters associated with networks.
Without an operating system, each application has to perform all of these complex tasks themselves making the applications more difficult and costly to create. Moreover, as a consequence, each applications will end up performing similar functions differently, making them difficult to use. Imagine, for example, having to configure the network for each application using different concepts, interfaces, and so on. The operating system provides a virtual machine that presents a consistent interface to both users and programs and is both easier to use and easier to develop applications on.
Cloud Operating System
None of today's popular personal cloud offerings are as powerful or flexible as a personal computer, but they could be—if they had an operating system. A cloud operating system (COS) would be capable of the following:
- keep track of identity information, attributes, and preferences for the owner
- run unlimited applications of the owner's choice
- store and manage the owner's personal data no matter where it resides
- provide generalized services that any application can take advantage of
- mediate and abstract the usage of Web-based APIs—the libraries of the cloud
A cloud OS provides an individual, independent compute space in the cloud for everyone. This is in stark contrast to the Web 2.0 model where individual applications are hosted on various servers with the browser or mobile phone app as the integration point. The Web 2.0 model leaves much to be desired:
- individual applications are silos with little ability to interact with each other
- relying on apps on mobile devices or browsers on computers leads to differences in configuration and user experience and creates an over-reliance on synchronization
- services—like contacting the user—are reimplemented in each application resulting in a fractured user experience and endless configuration woes
In contrast, a cloud OS solves these problems by creating a space where computation happens in the cloud, data access is abstracted to break down silos, and common services are always available. In the Cloud OS model, mobile devices and computers look like very powerful peripherals that mediate user interaction.
In coming blog posts, I plan to explore how a cloud OS can provide a place for user-controlled applications to run in the cloud, abstract data access, and provide common services for any application to use.