July 24, 2007

Mozilla begets WebRunner, a site-specific browser

Author: Joe 'Zonker' Brockmeier

Nowadays, people are turning to Web-based applications as replacements for desktop applications. Web-based office suites, mail clients, multimedia apps, and general productivity tools are all extremely useful now, but standard Web browsers aren't always the best option for running applications. To provide a more suitable tool for Web-based apps, Mozilla Platform Evangelist Mark Finkle has been working on WebRunner, a site-specific browser (SSB) that's designed to work exclusively with one application at a time. It's not finished yet, but it's already showing promise.

WebRunner, at version 0.5 now, is a stripped-down version of Firefox that allows you to run a single site at a time in its own process. The browser has a minimal user interface with no toolbars or navigation UI -- just a window with the bare minimum needed to use applications like Google Reader, Flickr, Web-based help desks, or any Webmail client.

The rationale for SSBs

Why would you want a site-specific browser when you can just use Firefox (or another browser) to view sites? It doesn't make much of a difference if Firefox doesn't quite render a publication's Web site exactly the same way another browser does, but it makes a major difference to customers when an application fails to work in a particular browser.

Developers and users alike are getting sick of browser incompatibilities. Many Web developers have no doubt gone prematurely bald trying to cope with the armada of browsers that they're asked to support, and Linux users are bitten by this issue all the time with IE-specific sites.

There are also good reasons to run some Web-based applications separately from the main browser session. For one thing, if your regular session of Firefox crashes, it won't take down the SSB you're using for a productivity application. An SSB also provides additional security; over the years Firefox and other browsers have had vulnerabilities that may have allowed exploits to read data from other pages or sessions. Financial firms might want to offer a SSB so users can interact with their online services exclusively with fewer opportunities for phishing and fraud.

An SSB allows developers to deploy a simplified application interface. Technically, the user doesn't need to know that it's a browser-based application at all. Once WebRunner matures a bit, it should be trivial to deploy a package with WebRunner customized to load any site without the user needing to know anything more than "click here to start the application."

Finally, WebRunner should also allow opportunities for customization that other browsers (including Firefox) do not. Extensions for Firefox need to play nicely with many Web sites, whereas extensions and customizations to a SSB need to apply only to a single Web site or service.

Getting and running WebRunner

To get WebRunner, visit the WebRunner page on the Mozilla wiki and grab the appropriate installer for your platform. You can choose between packages for Linux, Mac OS X, and Windows, or grab the source code.

Next, on Linux, unpack the tarball and run the installer. Alternately, you can grab the archive tarball, unpack it where you want WebRunner to "live," and just run it from there. This is the approach I've been using.

Under the webrunner directory, you'll see an executable called (what else?) webrunner. You'll also see several profiles, which have a .webapp extension. A profile tells WebRunner what site to load, and provides a few additional parameters that control the browser's behavior. To start, for instance, the Google Reader Webapp:

./webrunner -webapp greader.webapp

It couldn't be easier. Well, maybe it could, but only if the Moz folks came over and started it up for you. Google Reader will load normally and you can browse your feeds to your heart's content. If you click on one of the links to open a page outside Google Reader, it will load in your default browser -- in my case Firefox.

On Mac OS X, you can run WebRunner just by clicking on one of the .webapp files after you've installed WebRunner. Presumably, this is also the case on Windows, but I haven't actually tested the Windows functionality.

Creating your own profiles

What if you don't want to run a program in one of the bundled profiles? No problem -- you can create a custom profile.

Finkle has provided a few sample profiles for Google services, but if you want to use WebRunner for other sites, it's easy enough to whip out your own profile with just a minute or two of tweaking in the text editor of your choice. Let's take a look at a sample:


The uri parameter is fairly self-explanatory -- just slap in the URI/URL that you want to load here. WebRunner supports SSL, so you can use an HTTPS URI if you want to have a secure connection.

The icon parameter is the icon that will be used as the application icon for this instance of WebRunner. Icons are saved under the WebRunner directory in chrome/icons/default as XPixMap files. If you don't have an icon, you can just specify webrunner and the system will use the default WebRunner icon.

Finally, you can customize the behavior of WebRunner by setting the showstatus, showlocation, and enablenavigation parameters. If you enable showstatus, WebRunner will display the status bar at the bottom of the browser window. Enabling showlocation allows you to see, but not modify, the URI. Unlike a typical Firefox instance, the location bar is read-only. WebRunner doesn't sport a navigation bar, but if you set enablenavigation=yes, users can press hotkeys to navigate back and forth through the browsing history.

Enabling plugins

One of the things I noticed straight away was that WebRunner didn't recognize Flash on my system, even though I have it installed. On Linux, you can enable Flash in WebRunner by copying or linking the files flashplayer.xpt and libflashplayer.so under webrunner/xulrunner/plugins and restarting WebRunner.

Extensions are not yet supported; there's no way to install extensions using the WebRunner interface, and no obvious way to install them manually either. However, extension support is on the roadmap and should be available in future versions of WebRunner.

WebRunner is in early development, but has a lot of promise, and is useful now. A site-specific browser has a number of interesting use cases, and I'm glad to see one coming out of the Firefox community.


  • Internet & WWW