8/20/2005

The AJAX Dilemma: Is Another Acronym Needed?

One of my recent articles on eggheadcafe.com got some comments. Some were interesting, some were your typical "comment spam", and a couple, while seemingly authoritative, (including one from an author who has a new book on the subject), were actually erroneous.


Adaptive Path's guru Garrett's canonical example of his "AJAX" acronym is Google Suggest:

"Google Suggest and Google Maps are two examples of a new approach to web applications that we at Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML, and it represents a fundamental shift in what's possible on the Web."

Immediately thereafter Garrett decrees the "rules" of his premise with these bullet points:

"Ajax isn't a technology. Its really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:
  • standards-based presentation using XHTML and CSS;

  • dynamic display and interaction using the

  • Document Object Model;

  • data interchange and manipulation using XML and XSLT;

  • asynchronous data retrieval using XMLHttpRequest;

  • and JavaScript binding everything together."



  • The problem is that neither does Google Suggest use XML nor does it use XHTML, or CSS! In fact it doesn't even necessarily use XMLHTTPRequest: if your browser doesn't support it, it degrades gracefully to the hidden IFRAME technique made popular by Brent Ashley back in 2000 with his "JSRS" Remote Scripting implementation.



    Here's the crux of this Ajax issue as I see it: Remote Scripting is the basic technique that has been around since 1998, which I define as that of making an out of band request (either synchronous or asynchronous) to a web resource and bringing back the information to be displayed or inserted into an existing web page with no form post or page reloading. If you want to add XML, XHTML, CSS, XSLT, that's your business, and goody for you. You still did "Remote Scripting". XML and XSLT, whiile not often used for this, have to do with the transport layer and transformation of same to the UI layer; they're standards that are used by thousands of developers either with or without the use of Remote Scripting. CSS and XHTML are standards that have to do with the UI layer, and once again, widely used by web developers without Remote Scripting. And let's get one final item straight: the XMLHttpRequest object is not a W3C standard.

    Now Garrett comes along and defines a new technology, specifying Google Suggest as a generally accepted example of it, and it doesn't even follow his own rules! No wonder AJAX is so confusing to the general development community! Nobody can even agree on WHAT THE HELL IT IS! Oh, sure, plenty of people (as the bullets above show) are happy to TELL YOU what it is, but that is virtually meaningless unless a whole bunch of people agree on the rules! SOAP wasn't "SOAP" until a lot of people who had been working very hard on it for several years finally agreed it was done, and the standard was formalized. Now this chap Garrett comes along and sees a marketing opportunity, puts some cool pieces together and gives them a snazzy name, and I'm being told by book authors that it's all about "Web Standards". Bullshit! Almost all the implementations of Remote Scripting techniques that call themselves "Ajax" that I've seen so far could care less about Web Standards! Instead, they're about translating the remote scripting calls using JSON or prototype Javascript "quasi objects" that will marshal the data back into the page correctly. Many of them completely ignore the state context of the page proper and seem to be more concerned with making an out of band call to some external URL or HttpHandler that has no way of acessing the server-side page context, and then just returning some data.

    Hey, of course I think observing web standards is important! But the standards were already there to observe! Coining a new buzzword to cover a very old technique which may or (as is often the case) may not include various other techniques and standards does very little to legitimize the concept. So if i wrote a web page that uses some Remote Scripting to return some data but I don't use XML with it, is this now "NOT AJAX", because I didn't observe all of Garrett's "rules" (which by his own example he doesn't even observe himself!)? You want to pontificate about "AJAX" as being about web standards? Submit it to W3C and ask for a recommendation and get it ratified. Then you can talk about standards.

    The whole thing, to me, is so childish and asinine as to be almost laughable! I tell you what -- when the W3C or OASIS gives me a spec that says what AJAX is, that's the day I'll start using the term. Don't hold your breath. Remote Scripting with Web standards compliant XHTML, CSS, XSLT, etc -- is simply Remote Scripting with XHTML, CSS, and XSLT. AJAX? Its a foaming cleaner put out by Colgate-Palmolive.