Saturday, August 19, 2006

Mobile Ajax?

For my entire life, the word Ajax meant for me either a cleaning product my mom used or a pretty good soccer team in the Netherlands. Nowadays, it means Asynchronous Javascript and XML.
As Wikipedia would describe it: "intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user makes a change. This is meant to increase the web page's interactivity, speed, and usability".
This week I hosted a panel at LinuxWorld, called "Got mobile?" and I invited Scott Dietzen, the CTO of Zimbra (and formerly of BEA). Zimbra is the poster child of Ajax and Web 2.0. Scott is the best person on the planet to talk about it.
When I was writing alpha Java code at HP Labs in 1995, I thought Java was going to be the language to make the browser more interactive, going beyond the concept of hypertext navigation. It did not happen, partially because Microsoft killed it (and Netscape) and partially because Sun never made true the statement "write once, run everywhere".
Many years later, DHTML and Ajax might be the way to make it happen. I still have doubts it make sense, because with Ajax you destroy the concept of hypertext navigation and the Back and Forward buttons on your browser become meaningless. However, the browser is an ubiquitous way to distribute software, people know how to use it... so I guess I can take it the drawbacks (I am a pragmatic individual).
During the panel, I asked the a couple of questions:
 - Where do you see mobile apps go, towards stored application and data with push capabilities or browser-based dynamic apps?
 - How much data would you store on the device? Is storage going to be always cheaper and bandwidth always more expensive or the trend will change?
The questions were targeted at understanding the future paradigm for mobile applications. Will we have stored apps on the device with local data or will we move the browser paradigm on devices?
I wrote time ago that I believe in the concept of mobile widgets. Maybe mobile Ajax could be the tool to make it happen. You could have applications cached on your device, that use asynchronous calls to the web, using the same tools developers utilize on desktops. Opera is already working on it. It might be what kills Java once again...
Scott did not seem much convinced we are close to mobile Ajax. He said we are not even at Web 1.0 on mobile, that the experience sucks when browsing on a device, that the devices are not powerful enough for the Ajax engine... Let alone thinking about Web 2.0 on mobile. However, he seemed quite sure it will be the way to go, eventually.
I have a doubt, which I expressed during the panel. The paradigm of browsing is user-initiated. You open the browser, you click. That works on PCs.  Your monitor is in front of you, turned on. You interact.
On mobile, it is different. In most cases, you just react. The phone is idle, then it rings: you answer. It beeps: you check the SMS your received.
You do not leave your monitor idle, but you do it with a cell phone. Actually, I would guess 90% of the time your phone is with you, it is in stand-by. Apart from people spending 4 hours a day on a train (which are the vast minority of people on the planet, let's not forget it), we use the phone to react to events. That's when it is useful. When I get off my car, I need that information right there. I turn the phone on, I read it, I do something about it (maybe just curse, if Ajax scored against Juventus).
Now, what is different? That's push. Push technology is the key for mobile applications to be useful. You need information to be pushed to you. Not just email. Everything. From weather updates to purchase orders to tickets to news to stock prices and exchange rates. You need push on devices that are mostly idle. You might not need it on your PC (remember Marimba?) because you are in front of it all the time. You react sometimes (e.g. when you get an email) but that's about it. You NEED push for mobile.
Scott, if we can mix together push and Ajax, we might be golden. Local data storage and apps plus a simple async mechanism to get updates, triggered via push. Push Ajax? PAjax? p-Ajax? Pajax? I am ready ;-)