The old offline vs. online debate

The rise of web applications like Gmail and Basecamp is bringing the good old offline vs. online debate again into picture.

Quite a few developers are now working on various offline-enabled Ajax toolkits, but 37signals, a prominent developer in the scene is saying offline doesn't matter:

The idea of offline web applications is getting an undue amount of attention. Which is bizarre when you look at how availability of connectivity is ever increasing. EVDO cards, city-wide wifis, iPhones, Blackberry’s. There are so many ways to get online these days that the excitement for offline is truly puzzling. Until you consider the one place that is still largely an island of missing connectivity: The plane!

But planes are not a very common hang-out spot for most people. The two major groups of people who are on a plane often enough to care and have an interest in web applications are traveling salesmen and techies who go to too many conferences.

As some commenter already noted in that blog post, this is all good and well until you try to work abroad and get charged exorbitant roaming charges, or do work anywhere outside the western world. It is also sometimes nice to purposefully go to some remote location where one can work without any of the interruptions and procrastination excuses a working internet connection automatically brings.

These situations are why I still think the idea of offline applications is a good one, as long as making them doesn't unnecessarily complicate application development. Doing it on the Ajax layer is one option.

Another option is synchronization, like popularized in the Lotus Notes replication feature. With synchronization, the application always uses a local data repository, and a separate tool keeps moving data back and forth with a central server whenever user has a connection available (or specifically requests it).

There is a standardized synchronization protocol available: Open Mobile Alliance's Data Synchronization (OMA DS), which was formerly known as SyncML. However, implementing it is fairly difficult without a SyncML toolkit like Funambol. Because of this, other protocols like IMAP or WebDAV are also sometimes used.

Midgard's approach to synchronized setups is to provide strong data import and export capabilities on the framework level and then allow the actual replication tools to be written on application level. The current implementation includes data synchronization via HTTP and email implemented in PHP. Something like OpenSync, Conduit or Funambol would probably make sense later, especially if Midgard starts to become more of a replicated persistent storage system for desktop applications as I predicted in my presentation in Kristiansand.

Offline data access is especially important for mobile devices, which is why I find it very inconvenient that most applications for Nokia's N800 tablet assume an always-connected model. For example, Canola doesn't cache podcasts locally, Rhapsody music is only available when online. Similarly, there still isn't a proper offline RSS reading capability. I was using Maemo Mapper for navigation when driving to the Utsjoki hunting trip, and quite often map downloads failed because GPRS/3G connection broke somewhere in the countryside.

So, in my view offline capability is still very important for any application that is useful when traveling. Internet access may be quite well available inside cities, but still in countryside or in tunnels connection can be really bad. If development tools like Midgard make building offline functionality into apps easier this will hopefully become more common.

Read more Midgard posts.