Bridging Desktop And Web Applications, Part 2

The following, written by guest writer Matthew Gertner, is a follow up to his post Bridging Desktop And Web Applications – A Look At Mozilla Prism on March 22, 2008.

Matthew was a co-founder and CTO of startup AllPeers before it shut down earlier this year. He’s now working with Mozilla on their Prism project, which was the subject of his first post. His blog can be found here.


Many people were slightly baffled by my post last week about single-site browsers. On the surface, an SSB is nothing more than a normal browser with the URL bar, back/forward buttons, tabs and a whole slew of other useful stuff stripped out. Are we supposed to get excited by what looks to be a big step backwards?

To delve a bit deeper into what is behind the recent surge of interest, I took a closer look at three leading contenders: Bubbles, Fluid and Prism. I also contrast these products (which are very similar in many respects) with Adobe AIR, which has a different and more ambitious take on web/desktop convergence.

Bubbles has a strong claim to being the first true SSB. Developed by 3D3R Software, the first version was released in late 2005, long before the term “single-site browser” had been coined. Their CEO, Ohad Eder-Pressman, explained to me that he got the idea for Bubbles a few years ago when he switched from Outlook to Gmail. Suddenly he needed to activate his browser window, find the correct tab and select it every time he wanted to view his email. What used to be a one-click process now required three or four clicks. Moreover, he had to go through this procedure whenever he wanted to check if he had new mail since there was no visual indicator on his desktop. Sensing that better desktop integration might benefit a whole range of web apps, he put a couple of his programmers on the job.

After downloading the tiny Bubbles installer (just 250Kb), I was presented with the Bubbles Settings window, which includes a menu of pre-configured web apps like Gmail and Flickr.

Pressing Go next to Gmail in the list brings up a “bubble” (a standalone window) containing the application’s login page. An icon is displayed in the system tray for notifications and quick access to the application. I logged in using my standard Gmail account, and a popup notification appeared to let me know that I have three unread messages in my inbox. The unread message count is always visible in the app’s taskbar button and tray icon tooltip. When a new mail arrives, the popup notification is displayed again with the updated message count. Other capabilities include drag-and-drop support (used by the Flickr bubble to upload new files) and site-specific system tray menus.

Naturally Bubbles needs some special configuration to add these capabilities to an application. Curious to know how this worked, I decided to create my very own bubblified web app. The first step is very simple: just enter the address of the site in the URL box at the top of the Bubbles Settings window. I keyed in “www.beta.techcrunch.com” and sure enough TechCrunch opened in its own window, with the site’s icon automatically displayed in the system tray. This isn’t particularly useful, of course, so I tried my hand at adding a site-specific script. For each site, Bubbles creates an XML file called a “Smart Bubble”. Using the Gmail script as a guide, I wrote a JavaScript snippet that refreshes the TechCrunch homepage every ten minutes. If a new post has appeared since the last refresh, a popup notification is displayed. Some trial-and-error was required to get it right, but all told this only took me about 30 minutes. If you’re curious, you can check out my script here.

Bubbles has fallen off the radar lately and a lot of the materials on the website have not been updated since 2006. Ohad explained to me that the product was ahead of its time when it was initially released, and they found it difficult to articulate its purpose in a way that resonated with the larger public. Nonetheless, it has attracted a devoted community (Ohad claims that users number in the tens of thousands). Now that Prism and Fluid have helped to popularize the notion of a single-site browser, 3D3R has picked up the ball and has a team of developers working actively on the next version of Bubbles, which should be out in less than a month. Currently the product works on Windows only and uses Internet Explorer to render web pages. Ohad told me that a Mac version is also planned, although this will require some work to adapt to the WebKit engine used by Apple.

Fluid looks very much like a Mac version of Bubbles (it requires Mac OS X 10.5 Leopard to run). After downloading and unpacking a 3Mb zip file, running Fluid called up a simple dialog box inviting me to “Create Site Specific Browser.”

Unlike Bubbles, no pre-configured apps are provided out of the box. There is a community repository set up on Google Code, however, where users can contribute their scripts (currently Campfire, Gmail and Google Reader are available). Scripting is very similar to Bubbles, with functions available for displaying popup notifications, adding items to the app’s dock menu, badging the dock icon and playing sounds. For those not satisfied with the low resolution website favicon that Fluid uses by default, there is also a Flickr group with over 100 hi-res icons for use with popular sites.

Prism is by far the largest download (nearly 30Mb) since it includes the entire Firefox engine rather than depending on the browser provided by the operating system. On the other hand, Firefox users can download a 500kb extension that lets them create Prism apps directly from inside their existing web browser. Once again, the first step is to fill out a dialog box with the URL and name of the application to be created. The biggest advantage of Prism is its multiplatform support; it runs on Windows, Mac and Linux. On the other hand, it lags slightly in features, with no capabilities yet to customize the dock or system tray menus (this is planned for the next release).

Right now there is not much to distinguish between the these three products. Fluid has more of a complete browser feel, with menus in each web app for managing history, bookmarks and userscripts. Prism is a no-brainer for Firefox fans or anyone who requires multiplatform support. Bubbles has some catching up to do, but it has the most complete API, and with several developers working on it actively we can expect to see significant improvements in the next release. The biggest issue for all three contenders is the dearth of existing userscripts for popular web apps. Critics are correct to note that the appeal of running an unmodified application in its own window is limited (although one click access is certainly a plus). Writing your own script is not rocket science, but it isn’t anything your grandmother is going to tackle either, so a library of custom scripts is a must if these products are to achieve mainstream adoption. One thing holding back progress in this area is that Bubble, Fluid and Prism all have similar but subtly different APIs. Hopefully the vendors will get together to standardize on a common set of functions for script authors so that the effort invested into tailoring a script to a web app can be leveraged across all three products.

One other product that is often mentioned in the same breath as these single-site browsers is Adobe AIR. While it targets the same basic need, bridging the gap between web and desktop applications, it takes a fundamentally different tack. You can’t download AIR and use it to create your own standalone web app by filling out a few fields in a dialog box. Instead, Adobe provides sophisticated developer tools to let programmers create slick AIR applications for existing web apps and web services.

So rather than spinning out a barebones app and souping it up with snippets of userscript, creating an AIR application is more like classic software development. Furthermore, AIR offers two options to developers: use standard HTML and JavaScript or take advantage of Adobe’s powerful proprietary Flash engine and Flex language. Adobe platform evangelist Ryan Stewart wrote to me to explain the distinction between these two approaches:

The decision about when to use Flash and when to use web standards is a pretty easy one in AIR… you use whatever you know. If a developer knows how to build amazing things using HTML/CSS/JavaScript, then I don’t really think there’s a compelling reason for them to use Flash or Flex. We wanted to support both communities in AIR. One of the things that I think is good about AIR is that you’ve got access to both together. There are a lot of things in Flash – things like graphic manipulation that make photo/video editors possible – and you can actually bring some of those into your HTML application without having to embed anything in your HTML application. You can call those Flash APIs directly from JavaScript in AIR and apply them to your HTML elements. It creates some interesting possibilites. On the other side if you’re a Flash developer, in AIR you can use all of those great third-party JavaScript libraries out there and call them directly from Flash. So in some ways I think it’s the best of both worlds and you can really focus on using the best combination of technologies. But if you want to keep your development based on standards, that’s possible and encouraged in AIR.

AIR has the full weight of Adobe behind it, great tool support and a lot of mindshare in the web space. If enough vendors are convinced by its advantages and decide to use it to create desktop-enabled versions of their web apps, it may be hard for the other SSBs to compete. API standardization will be key in determining how things pan out. A common, well-designed API for single-site browsers would even make it realistic for vendors to integrate desktop-oriented code directly into their web apps. If this were to happen then loading an application like Gmail or Flickr into Bubbles, Fluid or Prism would give you all those fancy dock menus, popup notifications and the like with no customization required at all. Considering that users are increasingly leery of downloading and installing standalone apps, this would be a compelling advantage indeed.