Is it a Browser? Is it an Operating System?

Lately, there's been alot of commotion over Google's latest blitz in the Browser Wars. In the past week, I've seen a million and one opinions ranging from 'oh, another browser, *yawn*', all the way to 'OMGZ, it's the Google OS arisen!'. It's all rather silly.

Let's look at what Google has done. Probably the most original thing in Chrome is that there are tabs where the title bar used to be. The person who can script them out and make them accessible through libwnck or some similar desktop environment based API will certainly get alot of kudos from me. Really, the concept does not belong to Google, but I believe the credit should go to Opera for first integrating the browser widgets with the tab. Another revolutionary concept is binding processes to either tabs or sites, or other process splitting criteria. Again, the credit goes elsewhere, to Microsoft, but thoroughness that Chrome uses is pretty remarkable. In fact many of the 'unique features' in Chrome have already been implemented elsewhere, in some fashion.

Well, what is it that catches the eye? Is it the super optimized Javascript runtime, that supposedly is only really an evolutionary step? Is it that they used Webkit, the poster child for non Linux Open Source cool stuff? I think I found what makes it so special. Google was smart and realized that profiling websites to improve performance is a badly needed developer feature. So they stuck the label 'process manager' on it, and snuck it in like some trojan horse, underneath all that glittery and shininess. Most of the 'Google OS' arguements i've heard are fixated on this one feature as either the mark of the beast of the signs of messianic times.

It's not really just the process manager that spells something different for Chrome. When you go through the list, there are *alot* of features. Each one is done 'differently'. Most importantly though, is how well they come together to form a single paradigm. The paradigm is simple. The user loads a website up, which runs in a bottle. That bottle can be moved around on the desktop in some basic ways, from window to window, or in a standalone window, manageable by the Desktop Environmen's own window manager. I'm presuming that in the future, Google intends to expose a few javascript APIs that will let the website customize the look of its bottle and provide clues to the Desktop Environment. Namely, the website can not use a toolbar, or use a custom toolbar. Perhaps the website can even come with a code layer that is like Mozilla's own chrome, used to do many tricks in Firefox. Or maybe, the website will expose information about what kind of window is being displayed, whether it's a long term window or a transient dialog box. It might even expose context information to Nepomuk about its purpose and its semantic connection to the rest of the world, along with some state token to reload it back to its previous state.

Actually, these are things that Adobe Air and Mozilla Prism aim to do as well. I saw an excellent talk at FOSDEM last February on Mozilla Prism, and it was clear to me that this is the direction the modern browser is going to take. Since Google's Chrome still just works on Plain Ol' HTML and Javascript, i'm hoping that Google is willing to collaborate with Mozilla and Adobe in using the same APIs for each of their respective products.

Chrome isn't an OS though. If it was, where is the Desktop Environment? Where is the kernel to run it all? Where is the hardware support? Where are the millions of man hours that go into releasing a top notch operating system? Too busy writing browsers apparently. Chrome is no more an OS than .Net or Python are OSes either. Chrome is a virtual machine / application container. Way back when, in 1995, there was a question on how to run code both on a client machine and a more powerful server. Way back in 1985 the same question existed. There are rather large sections of Tannenbaum's Principles of a Modern Operating system that go into RPC functions and function stubs. For those of you with long memories, you should all remember how Java was supposed to revolutionize the web, by making it more 'desktop application-like'. As a developer of web applications, i always struggle with the concept of how my code runs like a weird application in the server space, but just a bunch of documents in the client space. I really would like to see more tools that unify the design a bit more, and many of those kinds of tools are coming of age.

Google has been at the forefront of these design paradigms, with Google Gears as their showpiece. Having little personal experience with Google Gears itself, i can't really comment on how it works with Chrome. Just realizing though, how cleverly Google has wrapped an essentially document oriented display framework with a sophisticated programming language on top into a virtual machine system that can interact with the user's desktop in one smooth paradigm, and I can't call it anything but a Virtual Machine.