The Computing Client's Yo-Yo Diet
Thin, fat, thin, fat, thin, fat... Take a look at a simplified evolution of "The Client", as it's sometimes known:
- Terminal -> Mainframe (so thin...). At a time when computation was complex and expensive, there was little choice but to centralize it.
- The Desktop Application (fatty mcbutterpants!). Drunk with the power of a 10MHz CPU and 512KB RAM, we flipped the bird to the server and never looked back... Until:
- The [original] Web Application (back to size zero). I give up any semblance of usability, but I get to socialize with people on the other side of the world. Fair trade.
I find it really ironic that we're getting excited over client side libraries that fade elements in and out, display tabs, or popup a dialog. This is client side code. This is "fat[ter] client", web or no web. This is code that's been written many times before at a much lower level (read: faster, smaller).
"But the web is cross platform..."
Everything is cross platform when you have a team on each platform (IE, Mozilla, Safari) spending tens of millions of dollars writing an implementation. C was cross platform; Java was cross platform, so was Perl, Tcl/Tk, and most other languages that you've heard of. Was their implementation perfect? Definitely not, but then neither is the current state, considering the issues we've had with standards-support. Much of that is hidden by the libraries; but the work is still being done.
"But Web2.0 is a balanced mix of client and server..."
Don't get me wrong; I make my living writing web code. I see how we got here, I don't think there was some grand "mistake" made somewhere. I just find the cyclical nature really interesting.
However, web programming (the AJAX part, that is) is currently done with a bunch of libraries which contain quite a few hacks. The benefits of having a UI with state and a reliable runtime are huge when it comes to programming cleanliness and workflow, and you'd think that at some point "we" could just have sat in a room and decided on a cleaner solution.
So what's next? Well, there's a tug-o-war between AJAX on one side and Silverlight/AIR on the other. The latter is definitely a cleaner programming environment, but the former has some advantages around the paradigms we're used to on the web (hyperlinks, bookmarks).
I think Web2.0 is about to go on another diet. Will it be chicken breast and broccoli, or one of these puppies?