Monday, May 30, 2005
I have to admit, I am not on the Ajax bandwagon. The era of the web application has outrun its useful life. Ajax simply preloads data into a browser to simulate rich applicaiton behavior. So it is a trick to create the impression of a live application. The system has a root limitation in its reliance on http/https. The web protocols are composed of atomic interactions. As explained in this infoworld article the point of Ajax is to smooth out the halts and pauses between these interactions, and let the user experience smooth updates and transitions in response to mouse clicks. Certainly, the problem being addressed is real and valid. Web applications, up until recently, were herky-jerky and shallow in user interaction. The primary benefit of building an application on the web was the speed of implementation, and the relative ease of deployment to many client platforms. It is pretty remarkable how much applications have become like documents -- easily published and easily consumed. When you play with tools like greasemonkey, you start to see that the real revolution is in the power of users to manipulate not jus the content they seek, but the functionality published with it. But the thing that just drives me crazy is the web wasn't made for applications. In fact, the whole active web, ajax included, is basically based on a glorified hack. So what do I prefer? Ultrathin client applications that only worry about painting pixels on the client, interpreting client behavior, but also provide the patron with the ability to manipulate the applicaiton. Having used remote desktop, go2mypc, citrix, and remote assistance, even the most well-designed of Ajax applications seem silly. First, your activity on the remote application is untethered from your connection. Disconnecting from these remote applications is like standing up from your desk. You can stop typing an email mid-sentence, disconnect, drive three states away, reconnect and continue the sentence. Because web applications must depend on session state, and must also keep some of the real data (data beyond the images on the screen) on the client, there is always the risk of loss or interruption. How many times have you filled out a web form only to lose all the data by hitting the back button, or your browser exiting? I am typing this in blogger's entry editor, which I consider a fine ajax application, but which has also destroyed several posts when I've been on spotty connections. Second, I've found remoting encourages me to use one machine for all my work. It used to be that when I got home, I would use my home PC. My laptop when I traveled. Friends home machines when I visited. Typically, I would either install some helper software (google toolbar, delicious plugins) on the machine I am using. Or I would spend time getting all the necessary session state information set correctly on the new machine. Every time I found a new tool, I used to install it in 6 or 7 different locations. As I've gotten older, while I still enjoy finding new software tools, I've come to hate maintaining them. Gone are the days when I thought it was fun to configure workstations. With remote desktop, I can always reach my own machine. So I only bother to keep the one machine updated with all my latest favorite apps. Finally, and perhaps most importantly, the desktop metaphor follows me across the web now. Not only are all my applications installed and configured, but my data is there as well. All the artifacts of my work, my bookmarks, my cached files, my drafted emails, my notepad text notes, half finished spreadsheets, installers, and all the other files I have accumulated as I work are held in tact. This is clearly the future. I want my handheld, my home computer, my laptop to all present the same desktop, with the same harmony of applications and data that I maintain each day over years of use. So, I am bothered by Ajax because it feels like a step in the wrong direction. I'd prefer to see new applications pursue the delivery of ultrathin applications, and to see the desktop completely decoupled from the PC and the operating system. I'd like to see ultrathin applications that also draw on the best parts of web applications -- simple controls, addresses and bookmarks, an application platform (the browser), and easy creation/publishing. Maybe Ajax will end up doing all of these things, or maybe something more interesting will come along.