Zimbra demonstrated an offline version of its Ajax client yesterday at Web 2.0. It handles two way synchronization of mail, calendar, contacts, and documents for disconnected work. I’m assuming they’re using some sort of browser storage approach, although Ajaxian mentions that in the past they’ve used a localhost proxy to allow for disconnected access. Installing and running a localhost sounds far too painful. Probably browser storage.
“Browser storage” makes me think of a hugely bloated process running on my operating system, grabbing more and more of my computer’s main memory only to disgorge it (and thus lose any application data) when it exits. Well, that’s not right, because though the experience of using a browser is of one contained application that doesn’t have access to desktop resources, in fact, browsers can stick data on disk in various ways: writing history files and caching pages and images, for example. On top of these, you can store local application data using tools like JavaDB or dojo.storage. These are built on the few ways the browser can get at the disk; I believe JavaDB uses browser cache files while dojo.storage supports a variety of methods including cookies or Flash local shared objects or the WHAT WG DOM storage found in Firefox 2. Those mostly confine you to the browser’s security sandbox. I say mostly because dojo.storage can use ActiveX as a storage provider, and ActiveX is not constrained by the browser sandbox.
Zimbra’s a good example of a web app that needs a disconnected mode. We want and need to handle our email even when we’re on a plane or at a conference with sucky wi fi. But not all web apps need to support a disconnected mode. For those web apps that need it, there are some passable options for browser storage already with more under development. For the rest, I’m betting on (and looking forward to) the eventual ubiquity of Internet access. Too bad Boeing screwed up Connexion, or we’d be much closer already.
UPDATE: Steve was wondering the same thing and pointed me to the answer from Kevin Henrikson of Zimbra. They use Apache Derby–known at Sun as JavaDB–for persistent offline storage.
UPDATE 2: David Van Couvering, who works on Java DB, comments that it uses the file system, not browser cache files. That makes a lot more sense. Zimbra thus requires a client-side download to run in disconnected mode and is not confined to the browser sandbox.

5 Comments
it’s Derby, Anne, or JavaDB as Sun calls it for those that know in under that name, or Cloudscape for those who know it under that brand.
i pinged Kevin Henrikson from Zimbra and he pointed me to a followup comment he posted:
http://www.zimbra.com/blog/archives/2006/11/taking_zimbra_offline.html#comments
Thanks, Steve, very cool. Can’t wait to read more from Kevin about how the technical details.
As one of the folks working on Java DB, I just wanted to correct that Java DB does not use browser cache files; we use the local file system. This is definitely outside of the sandbox. I don’t know the details of how Zimbra does it, but I think the only way to do this is to sign derby.jar with a valid certificate and the user has to press [OK] to give you access. Either that or they have you download it separately. It would be interesting to find out exactly what they do there.
That makes a lot more sense, David, I was wondering about that–I had read a blog post saying it was browser cache files, but what I read about Apache Derby sounded different. It will definitely be interesting to hear more about what Zimbra’s doing and to try it out.
More poking around, I see that they require a download of their offline client, and I suspect that’s how they get out of the sandbox.