Monday, July 13, 2009

Chrome OS and the Browser as the Operating System

On July 28, 1999, Judge Thomas Penfield Jackson of the United States District Court for the District of Columbia ruled that the following had been proved by a preponderance of evidence:

In late May 1995, Bill Gates, the chairman and CEO of Microsoft, sent a memorandum entitled “The Internet Tidal Wave” to Microsoft’s executives describing Netscape as a “new competitor ‘born’ on the Internet.” He warned his colleagues within Microsoft that Netscape was “pursuing a multi-platform strategy where they move the key API into the client to commoditize the underlying operating system.”

Threatening Microsoft’s Monopoly

By the time Windows 95 was released in August of that year, it was clear to everyone who had but given the matter a moment’s thought that Microsoft’s operating system had achieved a ubiquity invulnerable to direct assault by competing operating systems. As the “Finding of Fact” from United States v. Microsoft quoted above clearly demonstrates, however, Microsoft already understood that its domination of the PC industry could be threatened by middleware: software that resides between the applications that consumers use and the underlying operating system. Middleware that was ported to multiple operating systems would allow applications to run on all of the middleware’s supported operating systems and thus allow consumers to migrate from one operating system to another without losing their applications. Java was one such threat; Netscape was another.

Netscape, of course, was the most prevalent browser on the then-nascent Web and became the victim of Microsoft’s scheme to control the Internet. At the time, it wasn’t at all obvious that the Web would ever be a compelling medium for application delivery. From the beginning, the Web and its accompanying technologies (e.g. HTTP and HTML) were designed for documents not applications.1 Over time, however, the web evolved application-friendly components such as forms, user tracking (via cookies) and client-side scripting (via JavaScript) that greatly enhanced the Web’s capacity for online applications.

The Threat Realized

Today, more than a decade after Microsoft first recognized the threat,2 the Web has indeed become a viable applications platform. Numerous server-side frameworks such as Django, Ruby on Rails and Struts make it simpler than ever to construct dynamic, database-driven websites. Equally fruitful client-side frameworks such as jQuery, Prototype and Dojo enable rich interaction with what once were static documents. Most significant of all, though, is the emergence of profitable companies, such as 37signals, that do naught but develop and sell applications online. Applications that work equally well in Firefox for Windows, Linux and Mac, in Safari for Windows and Mac and even in the soon-to-be multi-platform Chrome.

The new, still-forming HTML 5 specification is clearly meant to further this trend. The most obvious example of this is the inclusion of the <canvas> element3 for arbitrary drawing. Other application-centric updates include drag and drop, offline caching, cross document messaging, persistent local storage and browser history management. Most of the consequential players in the browser market have eagerly anticipated this first substantial update to the HTML standard since 1999,4 with the recently released Firefox 3.5, Safari 4 and Chrome 2 already supporting some of the new markup.

Microsoft, for its part, has been characteristically unenthusiastic about meaningfully extending what browsers can do without plug-ins like its own Expression and Silverlight. Microsoft can’t ignore HTML 5 without becoming even more irrelevant than it already is5 but it can fall back to the tried and true Internet Explorer playbook: implement some features correctly, some incorrectly and ignore the rest altogether. As such, IE8 has implemented some HTML 5 features such as persistent local storage and cross-document messaging but Microsoft has pointedly not committed to support the <canvas>, <video> or <audio> elements. It remains Microsoft’s vested interest to ensure that the Web remains as limited an applications platform as possible.

The Browser as the Operating System

All of this makes Google’s recent announcement of the development of a browser-based operating system simultaneously significant and utterly mundane. The significance is to be found in the audacity of telling users that they really don’t need the desktop applications that their computers have been running since the dawn of the PC era. Or, in other words, that there is a material proportion of computer users that can find sufficient contentment in using only web-based applications.

The mundanity is to be found in the fact that the browser already is the operating system for a material proportion of computer applications. Like every development in the real world (as opposed to fairy tales), there is no one moment that we can all point to and proclaim as the moment when the browser became the operating system. Rather, it has been a gradual process wherein the browser has evolved into a de facto operating system. And like biological evolution, this process is not now nor will it ever be “finished”. Google’s announcement is simply a milestone in this process.

Of course, declaring the browser to be an operating system is an oversimplification. No browser can actually boot a computer or interface directly with its hardware and if it did it wouldn’t quite fit the definition of a browser anymore. The point is that the browser has evolved into a surprisingly potent abstraction for the underlying operating system. There are other abstractions from which to choose—the Java Virtual Machine is perhaps the most famous—but none seem to have captured the collective imagination of the technology industry in quite the same way or to quite the same extent as the Web.6 I suspect this is largely due to the combination of a low barrier to entry for the non-technical—HTML is human-readable, dead-simple to pick up and requires no programming per se—with nearly endless possibilities for the clever programmer.

Given its advent as an abstraction for the operating system, it is inevitable that the browser will assume more and more operating-system-like characteristics. The introduction of a client-side programming language and API, JavaScript, was the first unmistakable step in that direction. The next step, already available with Chrome and IE8 as well as Safari 4 (if it is running on the as-yet-unreleased “Snow Leopard”) is process isolation—running each website the user loads into a separate process. Essentially, this is preemptive multitasking for browsers, allowing crashed websites to be gracefully removed from memory without affecting other websites or the browser itself. Its a very good idea and very much a service we have come to expect from modern operating systems. This trend will unquestionably continue into the future.

What I find most remarkable is that all of this has evolved from the disarmingly simple idea of sharing documents online and linking them together.

But Can This Browser–OS Conflation Really Work?

Yes, for two reasons: (1) it already has worked in the sense that there already are successful web applications comfortably insulated from the underlying operating system and (2) the Web will continue to evolve and add the capabilities needed to make it work.

Without a doubt, there remain abundant use cases for which a traditional desktop application is immensely preferable to a web application. Although online photo and video editors already exist, professionals and “prosumers” alike will likely find that their needs are met exclusively by desktop applications such as Photoshop and Final Cut. Online word processing and spreadsheet applications—famously exemplified by Google Docs—have existed for some time without establishing any serious beachheads against Microsoft’s other prominent monopoly: office/productivity software. Efforts to usurp these desktop applications and the success they have enjoyed will benefit from the remarkably faster JavaScript and persistent offline storage found in most of the latest browser versions.

The most pertinent question, then, is whether Google’s upcoming Chrome OS in particular can flourish with what the Web is at the moment. The safe if unsatisfying answer is that no one knows or can know since Chrome OS is, at this point, vaporware. There may well be some merit in the idea, though, since Google is not the first company to announce plans to create a browser-based operating system. The good folks at Good OS announced the development of Cloud back in December. Unfortunately, that product hasn’t been released yet, either, so it proffers us no data.

To look at the quandary from an alternative perspective, we might well inquire about the possible issues that could prevent success. The most obvious problem that I can foresee is that most web-based applications require an active Internet connection in order to access one’s data. Though Internet access becomes ever more prevalent with each passing day, there remain innumerable situations and places where Internet access is either not possible or not practical. Prerequisite Internet access would prevent one, for example, from writing the next great novel in the isolated but serene cabin in the woods or (considerably less poetically) from reviewing a critical email on the airplane on the way to a make-it-or-break-it meeting.

The answer to this problem is quite clearly the persistent offline storage and application-controlled offline caching included in the HTML 5 specification. Chrome does not currently support either of these features, which is, I suspect, at least one reason why Chrome OS will not be available for at least a year.7 I have no inside knowledge and I am not trying to predict anything per se; nevertheless I surmise that these offline features will be key to Chrome OS’s success and that I am not the only one to have reached such a conclusion.

  1. Note that the first proposal for a formal HTML specification from Tim Berners-Lee and Dan Connolly does not include any form or form-related elements. These came from Dave Raggett’s competing “HTML+” specification that was merged with the Berners-Lee and Connolly version of HTML in RFC 1866’s HTML 2.0. 

  2. Undoubtedly, Microsoft’s shenanigans in the Web market helped to slow the progress of this. 

  3. Yes, I know that SVG has been around for a while but Firefox can only load it if included with the <object> tag and none of the major browsers support the full SVG 1.1 specification. Internet Explorer, not surprisingly, has no support for SVG whatsoever. 

  4. HTML 4.01 was published as a W3C Recommendation in December, 1999. XHTML 1.0 was published in January, 2000 but specifically did not expand upon the capabilities of HTML 4.01; XHTML 1.0 was simply a reformulation of HTML to be XML-compliant. XHTML 1.1 was published in May, 2001 but once again specifically did not add any new capabilities; XHTML 1.1 was simply a reformulation of XHTML 1.0 to be more modular. Read up on the history of HTML here. 

  5. It is impossible to accurately measure how much each browser is used, as these charts from Wikipedia amply demonstrate. What all of those charts do make clear, however, is that use of Internet Explorer is unmistakably on the decline. 

  6. Indeed, one of the most common uses of the Java programming language today is the creation of dynamic websites. This is but one example of how readily abstractions can be and often are layered in modern computing. 

  7. Google’s announcement pegs the release for sometime “in the second half of 2010”.