Jetpack is a project from Mozilla Labs that aims to ease the development of Firefox add-ons using web technologies without the complexity of the classical add-on model. Jetpacks are lightweight extensions, perfect for simple tasks like enhancing the browsing experience on a site. They are very similar to Google Chrome extensions, only better ;-)

Currently available for Firefox and experimentally for Thunderbird, Jetpack is not yet ready for Firefox Mobile aka Fennec. So I took a look at adding support for Fennec in Jetpack since lightweight extensions seem a perfect fit for a mobile browser.

The port is not complete yet, because some UI features are unavailable in Fennec (sidebars and menus for instance). I only adapted the statusbar support, adding an area at the bottom of the tabstrip.

Guided Tour

Once you have this custom Jetpack version installed, you'll find the entry point to the configuration and Jetpack gallery in the Add-ons panel :

Choosing "Configure Jetpack" opens the about:jetpack page in a new tab. Clicking on the logo also leads to the gallery.

Let's now choose an add-on in the gallery :

Select "Let me Install this unreviewed Jetpack" and "INSTALL JETPACK" to install TagCounter :

Hooray !

You can also install Jetpacks published elsewhere, like this one (a bugzilla reading enhancer) :

Since this Jetpack comes from an untrusted source, you need to opt-in before installing :

 

Then we can check that our Jetpacks (called "Features") are available :

Of course we can now put them to use ! TagCounter added a small clickable icon in the status bar. Just select it to get a nice graphic in a new tab :

 

It worked !

The Bugzilla Feature doesn't add anything to the status bar : it listens to page loads and adds useful information on the fly :

Next steps

This is a work in progress, and a lot still needs to be done, both on the Fennec side and in Jetpack :
  • Lots of UI polish, like finding a way in Fennec UI to support sidebars. And the current status bar is not really touch-friendly yet.
  • Jetpack relies on FUEL (or on STEEL in Thunderbird) which is lacking in Fennec. I had to include a stripped down version implementing just what Jetpack needed.
  • Refactor some parts of Jetpack code to have a cleaner support of different browsers (the tab browser in Fennec is not the same as the one in Firefox).
  • I was surprised to find that Jetpack was not localized at all.
And of course, testing, testing and some more testing !