A look at the future of Firefox add-ons

A look at the future of Firefox add-ons

Recently we came across some information that Firefox would be getting restart-less add-ons sooner than we expected, and it prompted us to take a look at the future of Firefox add-ons.

Even though Chrome now supports extensions, Firefox remains the most extensible browser available. Firefox add-ons are still much more powerful than Chrome’s due to the simple fact, that Firefox itself is built on a much more extensible platform than Chrome is.

Firefox is extensible enough to have been the base for everything from email-clients (Thunderbird, Postbox) to Music managers (Songbird), to media pre-production and collaborations solutions (Celtx). Firefox add-ons can build on that extensible platform and take Firefox from being more than just a browser. Unlike Chrome extensions, Firefox themes are more than just pain-jobs, and the add-ons can redefine the interface and functioning of the browser in any way possible.

Of course all this extensibility comes at a price, creating Firefox extensions (and learning how to) is much harder than with Chrome extensions, which are based on web technologies (HTML, JavaScript, CSS) which more people are familiar with. Firefox add-ons suffer more during version upgrades even for the relatively minor 3.5 to 3.6 update — although extensions for Chrome are new, and might suffer from the same in the future.

The power of Firefox extensions also means that they have the capacity to wreck much more havoc. Firefox add-ons can break as many features as they add, and often one will find add-ons specifying that they do not work well with certain other add-ons. A malicious Firefox add-on has unrestricted system access and thus has the capacity to cause much more damage. Even an add-on which is not malicious but poorly written can lead to the instability of Firefox. Unlike Chrome extensions, the Firefox add-on installer does not notify a user of how much access it has to the system

The good news for all the Firefox fans out there is that Firefox dev’s are working towards a future with more consistent, easier to code, safer, and more stable add-ons. One of the biggest complaints about Firefox add-ons is that they require a restart, whether you are installing a complicated add-on such as TreeTabs which changes the way tabs work and are displayed, or FireBug which adds powerful debugging and inspection tools to Firefox, or just a simply lowly dictionary. While it may be understandable that add-ons such as FireBug might need a restart as they provide core features, needing a restart for a simple thing such as a dictionary? Really!

In Firefox the add-ons that you install do not modify your Firefox installation, instead they overlay their UI and functionality on Firefox. Normally, Firefox will overlay the UI of the add-ons on it’s own during startup, and hence it needs a restart each time it adds or removes and add-on.

Firefox developers are changing the way add-ons are handles, such that now add-on developers will be able to specify if their add-on can be installed without a restart, and for extensions which support this feature Firefox will be able to install and activate the functionality without needing to restart. Restart-less add-ons will merely require a simple flag to be set in order for Firefox to handle them that way.

This will however require some effort on the part of the extension developers. If an add-on is marked as not requiring a restart it will be required to handle its own installation, uninstallation, activation and deactivation. Instead of Firefox automatically overlaying the add-ons UI elements and other functionality onto itself, it will simply execute the startup code for the add-n and let it handle all that itself. Similarly, the add-on will define functions which handle the cases when it is installed, enabled, disabled or uninstalled.

By the time Firefox 4 comes out, and maybe even before that in v 3.7 you can expect a growing number of Firefox add-ons to be restart-less. Firefox developers are doing this in a way which will allow a restart-less add-on to still be used — with restarts — with older versions of Firefox.

Another point of concern with Firefox is that it has no unified place for extensions. In Google Chrome extensions which need to display an icon are displayed in a fixed location on the toolbar. As you install extensions each one finds its place in the tool-bar (for globally relevant extensions) or in the address-bar (for extensions which act on a page). Firefox lacks such consistency, and this is something that the Firefox devs have been thinking about. For future versions of Firefox, The browser might have a single UI bar for any extension which needs to display an icon.

One of the most interesting ventures for making the Firefox extension experience better is Jetpack.

Jetpack started off as a Mozilla labs experiment for the future of Firefox extensions. It was meant to be a simple new way to get started writing extensions for Firefox using web standard technologies such as HTML, Javascript and CSS. The Jetpack system was supposed to eventually become an alternate — perhaps a replacement — for the current way of writing extensions for Firefox.

Jetpacks were restart-less extensions for default which used the Jetpack APIs to do all the work. This meant that Firefox could make as many changes as they wanted between two versions of Firefox, and as long as they ensured that the Jetpack API does not change no add-on functionality will break.

After 8 iterations, the Jetpack project came to an end, as the original project had lost clarity in its goal. However from its ashes the Jetpack SDK has arisen, which takes into account some of the lessons learnt while creating Jetpack.

The new approach of Jetpack SDK is to enable developers to create standard Firefox .xpi extensions using a new tookkit which allows extensions to be written in web standard technologies such as JavaScript, HTML5 and CSS. The new Jetpack system does not introduce a new extension format which is natively supported by Firefox, but instead allows for newer, simpler ways to create Firefox extensions. Best of all, the extensions created by the Jetpack SDK are all restart-less by default!

It is clear that the future of Firefox add-ons is still quite bright, and many interesting things lie in this browser’s future. Hopefully we will see future versions Firefox compete in more equal terms when in comes to performance, a facet of the browser will is still quite lacking.

Firefox is today the most configurable, and extensible browser available. While it may lag behind Opera in bundled features, or Chrome in speed, it allows the most fine-grained control  over each and every aspect of your experience. Firefox is whatever you need it to be.

Kshitij Sobti
Digit.in
Logo
Digit.in
Logo