I’m a very happy user of Zimbra, the Ajax heavy Exchange replacement. Aside from the Google RSS reader, it is the one Ajax application I use the most. It is responsive, featureful, and gives you the feel of a desktop application. I’d use it all of the time if it weren’t for the whole offline problem — you can’t check email on a plane with a webapp.
Well, now I can use it offline with the release of an alpha of Zimbra Desktop. What’s it like? Pretty much like the regular Zimbra — you pull up the Ajax interface in the browser and start reading and sending email
OK, so what’s the point of this post other than being an unsolicited testimonial for Zimbra? I wanted to point out exactly how Zimbra Desktop solves the offline problem. Essentially, Zimbra Desktop is a webapp running in a Servlet container (Jetty) on your local machine. It communicates with the remote Zimbra server and stores data and actions for later synchronization in Derby, the Java RDBMS. Big deal, right? I’ve had my own share of horror stories where a client insisted on implementing a solution as a webapp running on an underpowered client machine. Back in the pre-Ajax days it got you a sluggish postback interface that was hard to manage on the desktop.
But if you think about how PC hardware has progressed and how Ajax has brought the feel and function of the desktop to the web, deploying a webapp on the desktop doesn’t look so dim. In the simplest case, where the client side communicates with the backend server through small, discrete service calls, you simply have to sandwich a proxy layer between the webapp and the client that persists application state offline and stores up offline operations for later synchronization. This way you don’t have to redesign your server or client at all. OK, I said "simply" and "at all." The truth is that it not trivial, but it is likely a whole lot less effort than developing and maintaining a brand-new desktop client.
I’ve been tracking the confluence of Ajax and desktop apps. More than half a dozen companies see this as a promising and strategic place to develop a solution. More on that later.

You’re kidding right?
“Rich” Web apps are good for one thing – doing stuff over the internet without downloading a heap of junk. The moment you start pushing rubbish down the line (a la Jetty, JRE, etc), you may as well be using a proper rich client, not a flakey attempt at trying to recreate one.