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 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.
man, bring it on! I’ve been waiting for this for a while.
Q: how do you handle such diverse OS-API’s? do you water down the capabilities and weed out anything not common?
– or –
allow OS-specific functionality and end up with the “browser inconsistencies” all over again?
Q: what are your thoughts on Microsoft also heading down this road but from the other end – to “web-i-fy” their client-top apps and development (and I don’t just mean SilverLight)?
Excellent excellent post. I’m going to bookmark this post and revisit in a years time to just see how far we have come. Exciting times are ahead!
Good questions. I’ll do my best to answer:
A1: Writing x-platform APIs is extremely tricky, and you nailed the biggest challenge. Do you only implement features that appear on all platforms which tends to give you the lowest common denominator, or do you write OS-specific APIs and let the developer sort out the details.
The answer is that you do a little of both. For instance, the AIR file system APIs are entirely x-platform, and I really don’t feel like I’m giving anything up when I’m using. I can do anything I need to do, and I never have to worry about what OS I’m running on. However, system notifications are a different story. On Mac, I might want to bounce the dock icon and pop up a transparent window in the upper right-hand corner. On Windows, I might want to flash a system tray icon, and pop up a “toast” in the lower right-hand corner. It’s this type of functionality that makes applications feel native, but that can’t really be paved over with x-platform APIs. So our approach is to make the OS transparent with as many of our APIs as possible, but also provide OS-specific APIs where it makes sense. The next step is to write frameworks on top of those APIs to make them a little easier for developers to work with.
A2: I actually think that what MS is doing is interesting. I’m frankly glad to see some competition in this space. I think it will raise awareness, and raise the bar in terms of the quality of these platforms, and the apps built on top of them. I’ve been watching the web evolve for a long time now, and I’ve come to realize that it’s basically impossible to hatch an idea and run away with it with no competition. No matter what you’re working on, you should expect to have to compete, and have confidence that what you’re doing is the right approach.
Ok, now to actually answer your question. The path that MS is taking makes a lot of sense for them. They are the kings of certain kinds of desktop software, and desktop software is the foundation of their entire business. In a world that is increasingly moving online, it’s natural for them to want to adopt the desktop model to the web, and I think that’s a valid approach. Adobe’s and Google’s approaches are, as you point out, in same ways the opposite. Although Adobe obviously does quite well with desktop software, they also understand the web extremely well, and they understand web developers, so the natural inclination is want to move the web — or at least the best of the web — to the desktop.
Who knows what the end result will be. All I know for sure is that we’re in for some big changes which the web (and desktop) are long overdue for.