About a year and a half ago, I made a post entitled "Why web apps will move offline". All this time later, I've come to realize that we're in for much bigger and more interesting changes than just offline web apps.
It's inevitable that web applications will move offline, and we're already starting to see some examples (Google Reader using Google Gears, for instance), but I think that in the next year or two, we'll see something even more interesting: web apps that run in the browser with real desktop functionality. I'll call these "webtop" applications.
The first thing webtop applications need is secure local storage. Google Gears is addressing that with what I believe is a very interesting solution: a browser extension with SQLite embedded to give web application developers the ability to store data in a local database. Google Gears also has a local server bundled for caching assets offline, and a way to spawn additional threads in JavaScript to make web applications more responsive.
The next thing you need is desktop APIs, or maybe I should say OS APIs. We got our first glimpse of web applications using OS APIs at WWDC when Steve Jobs revealed how devleopers will extend the iPhone: web applications which will load into Safari. The iPhone version of Safari has APIs for things like making phone calls. These applications will run in some kind of a secure sandbox which will keep them isolated so that, in theory, they can't damange your phone or corrupt other applications.
So what's the next step? I see webtop applications moving forward in two different directions:
- I think there will be additional browser extensions which will add desktop functionality like drag and drop, system notifications, and maybe even limited file system access to browsers. I also think it's possible that Apple will add OS APIs to the desktop version of Safari, and now that Safari is available for Windows, webtop applications will be able to run cross-platform. (Apple has already done it on the iPhone -- why not on the desktop?)
- The Adobe Integrated Runtime (AIR) is another alternative (I'm a Product Manager on the AIR team at Adobe, but I'll try to be objective). AIR lets you build desktop applications using web application technologies like Flash, Flex, HTML, Ajax, etc. Rather than loading the applications from the web, however, you install them, more like traditional desktop applications, which gives them more desktop privelages than you would probably want to give something that was loaded from a web server. AIR applications bridge the gap between the desktop and the web by allowing easy access to remote services, and by providing a secure sandbox in which remote content can run in.
Not to be outdone, I'm sure Microsoft will join the party with additional Silverlight functionality which means some of the biggest software comapnies in the world (Google, Adobe, Apple, and Microsoft) will all be trying to bring web applciations to the desktop. Get ready for web to take a huge step forward.



