We hear every day that more and more people are coming online with high speed internet connections, WiFi hotspots are increasingly popular and getting faster, unlimited mobile data plan are cheaper than ever and the reception is better than ever. Everyone and every device appear to be always connected.
Ironically, when you check out W3C latest HTML 5 specs, you notice a key new APIs:
- Persistent storage. Both key / value and a SQL database are supported.
- An API that enables offline Web applications.
Isn’t interesting that despite the current networking revolution people are building the next web to work offline!? It is not strange to me but for many people this is bizarre.
I attend most of the design review meetings in my group and I can tell you that even software professionals don’t get the value of offline access when the application they are building is connected all the time. To make a point, I always use outlook analogy. Outlook in every office connected all the time, yet it is fully offline application. A stronger argument to make in the next few years will be that the browser itself with HTML5 is another flavor of an offline application. Can you beat that!?
To me, offline is an experience and programming model. Offline experience is all about richness, responsiveness, and better use of the data pipe. An offline programming model is what I’ve been showing people with Sync Services.
Once the need for offline or caching on the client crosses the chasm in people minds, another debate starts about how to implement that effectively. Most of the time I see developers thinking of offline access as a cache of random elements that will get cleared based on least accessed algorithm. This is fine for a brower cache or file cache like Windows Client Side Caching where you are randomly accessing remote content. But what about accessing a well defined data set remotely, like a given directory or a data table. In this case, an offline access with sync semantics could be a better fit. Suffice to say that it is not that obvious to many people.
It is so much easier to build application to run against a local store and in the back ground the store is synchronizing with another end point than building a cache hit and misses logic where the application needs to connect to the end point and get the content, deal with all sorts of network issues, and maintain a seamless user experience … etc. Well, it is sad to say that most people underestimate the complexity with the latter model until it is too late.
The good news is that HTML5 will bring a new store to browser near you. Use it wisely and go party offline!
Update: Just to let you know, I left Microsoft to start a new company, Raveable Hotel Reviews. See examples: Romantic Hotels in Myrtle Beach, Best Hotels in Seattle, Top 10 Hotels in Miami, and Kid friendly hotels in San Francisco. Your feedback is welcome on twitter.com/raveable, raveable blog.
I am not actively blogging about Sync Technologies. Please see Sync Team Blog for more updated content.