Friday, April 25, 2008

Why future SaaS applications will need offline capabilities

As we all know when you want to sell a software under the SaaS delivery model you are most of the time going to create a web application running inside a web browser.
However if you have to comply with SLAs asking for 99.9% uptime you will have to deal with problems with the internet connection of your users. Most ISP serving the general public will not guarantee a 100% uptime.
Furthermore in some case your users may not even have an internet connection, like when on plane (or on the beach for the lucky one's).
So how would you solve that problem? Offering offline capabilities you would say and you would be right. However implementing offline capabilities is not an easy task and that's why we don't yet see that feature in all SaaS offerings.

However, things are starting to get easier and there are now tools that allow developers to implement offline capabilities quicker and easier than before. Google started with "Google Gears", Microsoft is also pushing that way with its new slogan S+S (Software+Services) and Silverlight, not to mention Adobe that has just released its new Air framework.

Let's go thru those different options:
  • Google gears is specifically targeted at enabling offline capabilities in web applications. It is relying on BerkeleyDb for storage and has proved to be fast and reliable. Obviously Google itself is the first to leverage it. Google Reader was the first application to use the Gears API but more recently they've added offline capabilities to their office suite allowing people to use google docs while offline. Other provider like Zoho are also using it successfully. It is also worth mentioning that Gears has a mobile version.
  • The old way was to create a Smart Client application. If you use the .net framework, Microsoft provides libraries (e.g. Offline application block) to help you, however it tends to double up the work as you need to not only develop and maintain a web application but also a Smart Client. So if you really only need offline capabilities this might not be the best solution.
  • Another option is to use Microsoft Silverlight. Silverlight 2.0 is not yet out of beta but should be released soon. Unlike Gears, Silverlight is not only allowing you to go offline but will allow you to build RIA easily. Silverlight has built in support for isolated storage but can also be integrated with Google Gears.
  • Adobe Air is a framework to take web application (Ajax or Flex) to the desktop with minimum effort and since air applications have access to the disk it can also offer offline capabilities easily. Air is currently used by ebay for example and Adobe has recently partnered with Force.com to help developers create force.com applications with Flex. And if you don't want to use Air you can still use Flex for your RIA and connect it to Google Gears plugin for offline capabilities.
  • Mozilla Prism is yet another intent to move web applications to the desktop. Just like the other solutions it will let the application access the disk and as such enables offline capabilities.
  • Sun is also moving in the same direction with its JavaFX product.
  • "Curl Nitro" recently released for beta testing, should allow curl developers to develop applications for the desktop. For some demos of RIA with Curl see here.
You will see in the news that most people are talking about "Desktop War" so eventually some of those products will disappear.
So how do you choose the right one for your SaaS application?
Beside taking into consideration your actual needs and the skills of your developers, you certainly don't want to use a tool that will no longer be supported in 1year or so.
The truth is that unlike with the "RIA War" very few users have the needed software installed on their computer and they will not mind installing what ever solution you choose to get offline capabilities so theoretically you could pick any. However personally, i would bet on Google Gears but comments are welcome...