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:

 

  1. Terminal -> Mainframe (so thin...). At a time when computation was complex and expensive, there was little choice but to centralize it.
  2. 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:
  3. 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.
  4. Web 2.0 (slim? athletic? pudgy?). It's all in the cloud! Well, all except the 500kb worth of JavaScript code I'm downloading. But that's not really client side code, it's just JavaScript!

 

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..."

Client/server has been around for ages. The fact that Gmail does a bunch of stuff using local code and only needs to hit the server sometimes is as old as the hills. There's nothing new here, except that the local code is JavaScript. It could have been Java, 10 years ago (or a myriad of other UI libraries before that).

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?

Avi