Everything old is old again

Thursday, 20 Sep 2007 [updated]

Joel Spolsky:

If history repeats itself, we can expect some standardization of Ajax user interfaces to happen in the same way we got Microsoft Windows. Somebody is going to write a compelling SDK that you can use to make powerful Ajax applications with common user interface elements that work together [[like] cut ’n’ paste [and] cool mashup features like synchronization and single-point identity management]. And whichever SDK wins the most developer mindshare will have the same kind of competitive stronghold as Microsoft had with their Windows API.

Joel’s post is an excellent history-informed prediction of the future of the software industry; if you haven’t read it, go and do so now, before you come back to read how I disagree with him.

Well, by and large, I actually don’t. He makes a very persuasive case about the dynamics. But the details of the upcoming scenario he sees are wrong, even as he seems to be getting the big picture right.

Firstly, Joel is biased. His strategy to avoid rewriting Fogbugz when Microsoft shifted technologies under his feet was to develop a limited compiler that translates down to other languages, enabling his product to support the new technology as well as platforms he hadn’t initially targetted. He has since touted that approach as a smart solution (and likely for his particular circumstances it was) on many occasions, of which this latest is just another one.

For most of the world, that won’t be the way to go about things.

For one thing, the inconsistency between browsers is not in the language. Core Javascript is now about as close to completely consistent between implementations as you can reasonably get when you have several of them. The idiosyncrasies are at the DOM level, and Joel makes the old DHTML programmer mistake of confusing that in-browser environment with Javascript itself.

But we have already fixed that problem.

The other day, I wrote some unobtrusive Javascript that instantly worked the same way in all browsers I could test with, even though I treaded several areas where browsers have divergent behaviour (most obviously, event handling) without putting any browser switching in it. How? Using jQuery. All of the browser differences where papered over for me; I just wrote code to say what I wanted to happen and jQuery made it happen as it should. Of course, jQuery can lay no exclusive claim to this idea, nor does it; all modern Javascript libraries do this same thing. To a large and growing extent, modern-Javascript developers no longer have to think about browser compatibility. We have some way to go yet, but all the libraries are already a good part of the way there. No new language is necessary.

Anyway, Joel is wrong about another, more important thing: a new SDK is not how this will happen.

The API of the post-Microsoft era is the wire format. Who will be the new Microsoft? Mu.

With that in mind, there is something I want to ask Joel:

You can’t really cut and paste objects from one Ajax app to another, for example, so I’m not sure how you get a picture from Gmail to Flickr. Come on guys, Cut and Paste was invented 25 years ago.

There is this new thing some people have been muttering about, that has something with “atom” in its name. Have you heard of it?

In other words, I disagree completely.