A fundamental shift

21st November, 2009

OK, so the big announcement on Wednesday was the updates to ASP.NET AJAX libraries at PDC… you didn’t hear about that?! Were you sat in a cave? It integrates perfectly with jQuery (as a plugin) and .NET MVC and you no longer have to include 5+ different JavaScript libraries in the right order just to use a Calendar control.

If thats not a fundamental shift in code reduction I don’t know what is!

OK, OK the big news was Chrome OS perfectly timed to steal Microsoft PDC’s thunder and boy have they! The blogosphere has been alight with the sound of “ooooh cool” and “dude thats retarded”. I think it will have a huge effect on the web and general purpose computing as a whole. If you don’t know what it is – watch the video below.

I like Chrome OS for a few things that some people don’t understand or don’t seem to appreciate.

Chrome OS is not built for the current generation of applications it is built for what Google believe the future of applications is going to be. It is what they have been doing since they first released search some 10 years ago. Google have been building complex applications (100s of thousands of line of just JavaScript if you believe Microsoft) completely detached from the standard desktop environment. That is the power of the web.

As a developer I don’t care if you are running an x86 Windows machine with the latest upgrades or a Linux ARM machine that only has 128MB of RAM and has X installed. As long as it runs as a web browser and I develop on the principals of graceful degradation or progressive enhancement (there is no meaningful difference) then everyone gets access to the functionality. All they need to do is point their browser at the URL. Nothing needs installing it just works.

These “web applications” that you access can be used from any device at any time day or night don’t (or aren’t supposed to – ignoring browser bugs and cookies) physically edit your system. I’d be pissed off if YouTube changed my desktop image to it’s logo or something fundamental when I went to the site. It just makes no sense it doesn’t need to. I have an account there, why does it need to leave on my computer something it already knows? The web browser provides the sandbox environment for these applications to use and with the “cloud” can make your actions permanent and accessible from anywhere.

Google Chrome OS is taking this migration of applications from the desktop to the web to its logical conclusion. It gives you a machine which is nothing more than a web browser and wraps some nice features (moles and panels) that make the experience more pleasant. That really is it. It does some fancy things with boot that are fairly irrelevant. It looks to be using CoreBoot which most users won’t be able to use if they don’t buy a Google machine as this requires you to flash your own BIOS. Secondly, the demo was running on a netbook with a SSD drive which has a significant speed advantage. Also as it really it is only one app a lot of the system can be changed so that it doesn’t have to deal with that random Perl script you wrote and it is designed not to let you run that script - it is just a security risk and managing it is a performance hog.

Now, a lot of people right now (reading this or not) are thinking Chrome OS is going to suck as I can’t customise it; I can’t install apps, I can’t write that random Perl script to regex HTML for fun. People for some reason think that for every task they need an offline application because that is the way it has always been and how it always should be. But as discussed above, it is better for the developer and the end user that we use web apps. The end user gets a constantly updating app (in a perfect world) and the developer constantly supports all environments and doesn’t just support Mac or Windows etc.

For any platform there needs to be a killer app and yes we have a lot of good apps (GMail, YouTube, Digg etc) but they exist currently on our current platform there is nothing pulling us to use just Chrome OS or another purely web OS yet but we are nearly there.

The main two issues stopping everyone from rushing to the pure web OS. Firstly is the worrying question of peripherals. If I have my music/video collection on an iPod, HDD or local server then how am I supposed to browse that on an OS that doesn’t allow me to modify the hard drive? Will I l load a web app to do that that runs purely JavaScript and is allowed to read/access them? But how do I save more? Also, if I have a SatNav system that requires updates how will this OS allow this device to talk the web? The second issue are the apps. A lot of things you do on the desktop at the moment have to be done there because there are equivalent apps on the web for example, high performance gaming and truly assisted code development as with a powerful IDE come to mind. With so much processing required for each of these how is a web app meant to compete? Can it ever?

The Future

As I said at the beginning, Chrome OS is written for the future and is not yet ready to complete replace your desktop/laptop. It is for a time when most people have a fast 10Mbps connection always available connection, when content providers actually make their products available on the web and when there are competitive products for those on the desktop. And, I don’t believe we are that far away – especially given how quickly things change on the web. Lets look at my most commonly used applications and see what equivalents there are/will be in the future.

  • Web browser (Chromium/Opera/Firefox) – Well, this has been negated some what given that I can access everything directly from the OS. But, what about testing my applications in them so they can be used by other web OS or browsers?
  • IDE (MonoDevelop and VisualStudio) – Both of these are powerful IDEs and provide a startling array of functions but nothing that I do not believe could not be built and enhanced by them being web apps. Bespin from Mozilla labs is a good step in this direction but has a long way to go before it can compete.
  • Media Player (Boxee, VLC, Miro and MPlayer) – Now here I come unstuck as I have a collection of videos on my server that can only be managed and distributed to my HTPC, Laptop and Desktop from this set up. If in theory I could stream them when I wanted and how I wanted then it could be possible to use a web app. Boxee running on my HTPC adds such a nice interface and lets me control it from my phone. There would need to be one hell of a web app to allow that. Having said that Boxee aims to bring most of its media from the web but is not a web app. Maybe it could become one? But at the moment there is really only iPlayer, Spotify, Hulu and YouTube for legal media content from the web.
  • Games (Steam and Wine + Steam) – Now this is a prediction not a solution but it is – the return of the dumb terminal – OnLive. Or a more short term shift to all gaming on consoles and none on the desktop/laptop.

As you can see its not there yet but its on its way. 2 years and I wouldn’t be surprised if this web malarkey caught on and we actually had a fundamental shift.