Ajax and UX
Amongst those of the user experience and information architecture persuasion, there seems to be a growing trend that involves taking interesting new technological and interactive concepts, and coming up with inaccessable and weird terms to describe them.
<p><a href="http://atomiq.org/archives/2004/08/folksonomy_social_classification.html">Folksonomies</a> is probably the most outstanding example - this semi-ridiculous
and overcooked name emerges for what is just the relatively straightforward
concept of users tagging content with their own categories.</p>
<p>And now <a href="http://www.adaptivepath.com/publications/essays/archives/000385.php">Ajax
is here</a> - the latest moniker to describe asynchronous request scripting.
On the one hand, it's great that respected and widely read authors are
emphasising that this technology is stable and showing how useful it is
(it has been for 2 years, but thats beside the point) - but calling it
Ajax? Why? Why?</p>
<p>JJG's initial summary of how these client side technologies come together
is spot on. But a closer look at the <a href="http://www.adaptivepath.com/images/publications/essays/ajax-fig1.png">diagram
of Ajax interaction</a> reveals several technical misconceptions regarding
the nature of the client interface and its interaction with data passed
over the network. The diagram illustrates an "all or nothing"
approach, where the entire infrastructure of the user interface delegates
to an abstract "Ajax Engine". In reality, web applications would
utilize a hybrid approach, combining standard HTTP requests for loading
structural layouts and large content pages, and using <a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html">XMLHTTPRequest</a>
or <a href="http://www.ashleyit.com/rs/main.htm">JSRS</a> to run smaller asynchronous interactions. In this context, the "Ajax
Engine" is a mismatched metaphor, since it confuses higher level
abstraction of the flow control process with direct technical assertions
("Javascript call", "HTML/CSS data"). A side effect
is the implication that the major architectural patterns and techniques
in this context have been resolved - that a standard approach exists.
I think most web developers would agree, we're a long way from this being
a reality, even in terms of the basics such as the format of data passed
between server and client. The Ajax acronym fundamentally bases this approach
to data transfer on XML, yet some of the most interesting recent developments
in this area are based on passing packets of Javascript itself (see: <a href="http://www.crockford.com/JSON/index.html">JSON</a>
and <a href="http://jpspan.sourceforge.net/wiki/doku.php">JPSpan</a>).</p>
<p>I would suggest a more useful way to think about the client interface
component of web applications is in terms of a layered separation between
structure (X(HT)ML), presentation (CSS), and behaviour (Javascript). Asynchronous
requests can be thought of as a binding between the behavior and the content/structure
- this behaviour layer should be considered a part of all non-trivial
web applications, and could extend as far as a full asynchronous request/response
and animated GUI architecture, or as simple as predetermined client side
validation rules. I don't think we need to invent a new abstraction like
"Ajax Engine" to describe a process that is implicit in the
design of <em>any</em> interface that responds to user events.</p>
<p>Nonetheless, whatever the approach is called, there's no doubt of the major improvements that are possible from promoting a smooth user experience.</p>