Asynchronous Representational State Transfer
AJAX is not new(s). Previously, I've been critical of the nomenclature, perhaps more for aesthetic reasons than anything else, but I have to agree with Simon Willison, who pointed out the most important thing is that AJAX is a way to promote intelligent conversation. From what I've noticed, this conversation has actually been happening, and that's a good thing.
<p>The original appearance of Gmail in 2004 made many web designers think
long and hard over what they were doing with user interfaces. Of course,
this is what Flash developers have been doing all along (and not without
major criticism), but it took several years for HTML developers to finally
discover the XmlHttpRequest object hidden inside those browsers. The AJAX
conversation distills this knowledge and praxis in a simple to grasp meme,
not just assigning a handle, but actually giving shape to what was previously
a fuzzy set of ideas. While I still dislike the term, I've grown so used
to it, and learned so much from it that I see no point in grumbling.</p>
<p>So it's interesting to notice the growing Ajaxian disquiet for what we
might term "naive" usaage of XmlHttpRequest, mostly to do with
the widespread lack of appreciation for the fact that requests are being
made over an often unstable and patchy network. To me, this suggests that
the missing link for AJAX designers to understand is <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" title="Representational State Transfer">REST</a>.
This subtle and slightly subversive architectural approach is what HTTP
has been about all along, and it continues to quietly achieve the goals
that committee after committee forever try to standardize with XML.</p>
<p>The recent problems with Google's web accelerator and content modification
have been alarming to many people, and I wonder if more than anything,
this highlights a major industry-wide misunderstanding of the basic principles
of HTTP. It's a real shame, best summed up by Ryan Tomayko in <a href="http://naeblis.cx/rtomayko/2004/12/12/rest-to-my-wife" title="The best blog post ever?">How I explained REST to my wife</a>.</p>
<p>And with AJAX, these misunderstandings can bubble up to the higher level,
where they affect the actual interface users interact with. In <a href="http://www.lastcraft.com/blog/index.php?p=19" title="Lastcraft salience">Listen
kids, AJAX is not cool</a>, Marcus Baker cuts through some of the recent
slack and hyperbole:</p>
Even when the process is improved, there is no guarantee that we have enhanced the user experience. Entering a form is a familiar operation. We can do it whilst answering the phone or explaining something to the kids. The extra time fetching a separate error page may be time that I am putting to other uses anyway. Perhaps I just needed a rest. An interface that jars me out of my familiar path is probably not helping me at all. I don't know this of course, because I haven't measured it. But if you design such an interface, you don't know either. You need to measure it, and this kind of usability is a lot more work than watching people click on pages.
Server-roundtrips shouldn't really need to be integrated into "live" form validation because in modern DOM browsers, this approach to editing content doesn't need the concept of a form itself. Click on an H1 heading, edit the text, save it, the page updates immediately. This leads to a new kind of "sticky" interface. The major challenge for designers is thus to figure out how to visually communicate this potential to users who are used to the less-than 1/10 second response of software like Word or Outlook.
<p>That definitely doesn't mean that AJAX based interfaces should encourage
users to fire off tens of micro-requests by clicking round about a document,
to thus end up getting slammed by a slow connection that throws the whole
UI out of sync. This is an area where more collaboration between developers
and designers is desparately needed. It's one thing to understand techniques
for dealing with network latency problems, quite another to communicate
to users what effect their typing and clicking actions are having on a
persistant data store. My point is just that neither of these aspects
can be understood in isolation.</p>
<p>Anyone interested in building AJAX applications should first learn how
to use the <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" title="Fielding Dissertation">REST architecture</a> to it's fullest potential. In most cases
it's worth considering whether asynchronous updating is actually necessary
at all. Sometimes, a form is just a form - and no user is going to appreciate
an overcomplication of that, no matter how "rich" the experience
is.</p>
<p>But not every web application has the same goals, and these goals can
not always be solved by forms. That means finding user friendly metaphors
for editing persistant content that are simple and direct, use HTTP requests
sensibly, yet don't necessarily require a <a href="http://en.wikipedia.org/wiki/CRUD" title="Create - Retrieve - Update - Delete">CRUD</a> based form model. I'm sure
there is a middle ground somewhere. Which brings me to my next point.
Usability testing is hard, but surely must be the most important aspect
of AJAX application development? Theres no way you can rationally <span class="code">assertMetaphorIsCoherent()</span>
or <span class="code">assertNoUnwantedShortTermMemory()</span> except
to throw a prototype in front of an audience and watch and listen to their
reactions.</p>
<p>The page based model has been successful, but only because there was
never an alternative. Now the technology has stabilized, to make many
such alternatives possible, the only way forward is exploration and experimentation
that is validated by testing. In simpler terms, the way forward is just
testing, full-stop. There will be no le Corbusier like-figure who revolutionizes
the design of the modern WWW - this growth is far better understood as
evolution, driven by the demands and intuitive responses of the audience
using these emerging products and tools.</p>
<p>So maybe the concept of ARREST will never catch on like AJAX has - but
I do find thinking about the problems in basic HTTP terms leads to greater
clarity than anything to do with XML.</p>