On The Usability Of An Offline Web
Last week I spent some time working on a simple offline web app called All My Etherpads. Creating it has made me think about a lot of things, one of which has to do with how the word “offline” constantly seems at odds with the word “web”.
When you’re using a web browser, it’s simply assumed that you’re online. Many argue that a resource must live in the cloud for it to be truly “of the Web”. Even though it’s possible for a browser to store resources on the local device, such caching is largely considered an implementation detail and has historically been done solely for the purpose of speeding up page loads and reducing bandwidth usage. One gets the distinct impression when using a browser or reading through web developer documentation that the very notion of a network being inaccessible is some kind of bizarre anomaly akin to having no water or oxygen.
Aside from raising some concerns about user freedom and tethered software, this means browser user interfaces are terribly unhelpful when it comes to serving users who are in the unfortunate position of having a temporary lapse in internet access. Even though some browsers like Firefox have an “offline mode”, there’s no easy way to tell them “hey, this page is really important to me, and I’d like to see a recent version of it even when the internet isn’t available”, which makes using the mode largely a crap shoot. Other browsers, like mobile Safari, raise modal dialogs if you dare start them while offline.
This alone makes me concerned about users’ perceptions of even using a browser while they’re offline; the experience has historically been so inhospitable that the very term “offline web app” sounds like an oxymoron.
Perhaps it’s partly because of this, then, that so few offline web apps currently exist, despite the fact that infrastructure for creating them has been around for a number of years. But I think it also has something to do with the developer ergonomics of actually writing an offline app, too, which I’ll address in my next post.