I had an advisor once named Henry Fuchs. He was fond of saying that as technology changes over time, ideas that were outdated become popular again. The wheel keeps on turning around. One of the most popular ideas in computer programming is “Write once, Run anywhere”. A lot of people latched on to this concept when Java came out in the mid nineties. It didn’t matter whether it was true or not, it was a revolution and it was going to change everything. The trouble is of course nothing is new. Java shares alot with the UCSD p-System which came out in the late seventies. Virtual machine, Byte code etc. The fact that probably only 1 or 2 of the maybe 10 people who read this blog will have heard of the p-System indicates that it did’nt take over the world and I would argue for basically the same reason that Java didn’t.
The problem comes down to a basic misunderstanding of what is hard about making things cross platform. Computer languages, even low level ones like C, are relatively easy to make cross platform or at least use in a cross platform way. The problem is that once applications get to a certain level of richness they tend to built on top of some platform. Java has been as successful as it has to a great degree because it comes with a rather large set of built in routines to build applications on. The puny libC pales in comparsion. Even scripting languages like Python gain alot from including a nice set of code that makes it possible to write those 10 line scripts that do the work of 2 days of C++ coding.
Rich apps come from rich platforms but while its easy to make a cross platform language its alot harder to make a cross platform platform. Sure there are tons of them from the python lib to wxWidgets to the Java Runtime but in each case there is fine print. They are only Mostly cross platform. The trouble is the richer the application, the richer the platform, and the more fine print.
This is why windows has ruled. Its a very rich platform and it runs practically everywhere. One of my favorite stories about this is when I was at GDC talking to the guys in the Microsoft booth about Direct Play. I told them I was concerned about using it as the core networking library for our project since I didn’t want to get locked into one platform. They said “Oh, don’t worry its cross platform”. I said “Really?”. “Yeah it runs on 98 AND 2000”. He was serious and he was also 95% right.
So the Web brings up this issue again. If you write an app to run in a browser then it runs everywhere right? Well even putting aside all the issues about incompatiblites between browsers, the real trick here is that this works because we resign ourselves to interaction that is pathetic compared to a native application. I remember thinking how awesome Google Maps was since you could scroll around and it redrew the map as tiles as you went. You know, just like Ultima I did 25 years ago. So much of what’s cool on the web is only cool cause its on the web.
Ever since Gmail came out there’s been talk of Google making browser based Office apps and displacing Microsoft by getting everything a user needs to run well in Ajax/Javascript land. The problem with doing that is that those apps will not be as good. Maybe they will do it. Maybe alot of people will switch, however I think I could argue Google has released as many significant native Windows apps as they have Web apps. Don’t believe me, try reading some Mac blogs. The local native app will always outshine anything made out of the web platform (at least the one we have today). Its simply the difference between Google Earth and Google Maps. Both have thier roles but you aren’t going to see something like Google Earth running in Ajax, or XUL and I don’t think even in Avalon/XAML(and if an Avalaon/XAML version works its not going to be cross platform).
Of course that doesn’t mean the web sucks or even that its overrated. It just means we need to be realistic about what its good for and what it can do. I wouldn’t trade Bloglines for a local aggregator since I use too many machines to access my feeds from, but I don’t think I’ll ever be happy with an Ajax version of Photoshop.
Leave a Reply