Some thoughts on the browser and  the OS: I believe that its is time to move applications out of the browser. There are too many things that we do inside our web browser, that we could do otherwise easier, better, and at less CPU load and network traffic.

The mobile devices show us the way to go: There are little apps for everything. With the App store for MAC OS, Apple also brings this concept to the desktop and laptop (Note, that Linux essentially had an App store since the first days: apt, yast, yum, and whatever they are called).

To me, the core benefit of these App concept is that I get a little application that is tailored to the goals of the application. Hence, it does not have to deal with the limitations of the browser in terms of languages, html, java script, ajax, flash, lack offline support, and until recently the lack of right clicks. It is just so nice to have a couple of little windows (standalone): one for email, one for notes (I love Evernote), one for Blog writing (such as Windows Live Writer).

In Google Chrome and especially Chrome OS we see Google addressing some of the issues by deeply integrating the OS and the browser. However, stuff still seems to be bound to the browser (and html etc.). Now, I know that html forms a great platform abstraction layer (you can view it essentially on all systems, throw in a mobile site of your stuff and it can be conveniently viewed on smartphones, too) and also forms a second “narrow waist” above IP (there is a HotNets paper on this). However, all this loading, rendering, scripting, is just too inefficient (sure, Ajax etc. help you with it, but still, this is quite a beast).

So, what does this mean for the browser and the OS. From my point of view, the OS (or services on top it), need to provide two features: (1) a Just In Time Compiler (a nice JIT compiler, best with Hotspot support) and (2) a html renderer. Both shall be common services shared across multiple active applications. The Compiler shall handle the efficient execution of all the scripted high level languages we are using today: JavaScript, Python, Flash (and all other Adobe stuff), etc.. Additionally, it can deal wit the byte code of Java, C# (and .Net in general), and all the other stuff. LLVM, .Net, and the new Java core show that this can be done nicely. The apps may use html inside for visualization where appropriate (see Evernote etc.). Hence, the html renderer will parse their html as well as normal web browsing sessions.

I believe that it is important to make both the renderer and the JIT essential services of an OS. Using java shows how heavyweight it is to startup a such a compiler just for a single little application. Similar effects can be noticed when starting up all the different browser you have installed (especially, as many of them are not only html renderer but also JIT compilers for JavaScripte etc.). Furthermore, all this sandboxing and protection that modern browser do, they often tend to double functionality that is provided by the OS anyway.

What does this mean for the OS: looking at the JIT aspects maybe it is time to make Singularity (One of my favorite papers – or better series of papers) or Java OS reality. From the html renderer perspective, I believe chrome OS is on a good may, they just have to hop more on the App concept and leave the browser behind.