Over the course of the next year, there are many exciting features being brought to Mozilla Firefox, particularly in the aim to improve the browser’s performance. Most notably is project Quantum, which is Mozilla’s new web engine. What makes this interesting is that its using the Servo browser engine, which is being developed in Rust. This allows it to easily adopt parallel processing constructs which can improve performance, particularly for users with multi-core CPUs (mostly everyone). An excellent overview of the development and current status of this back-end can be viewed here. While this major update is still many months away from public stable release, there are a few things to be done in the mean time, in preparation for this.
Multiprocess, already a thing?
Although it is not generally well known, Firefox has already landed an update to allow multiprocess execution, known as Electrolysis, or e10s. The main reason this is somewhat secret is that it is not enabled for everyone. As of the recent release of Firefox version 50, the feature is being enabled automatically for approximately 12% of active users, most notably those with fresh installations of the browser. While many more users will enable it manually, there is a reason it is not enabled by default: Add-ons. The e10s project, in order to successfully allow the browser to run in multiple processes, broke up different components which are expected to mostly run independently. The problem here, is that the original API for development of add-ons was not designed for this. As a result, many of the thousands of add-ons for Firefox are not compatible (or at the very least may break) with multiprocess.
Status of add-ons
According to the road-map, by the release of Firefox 51 (late January 2017), it is expected/assumed that all installed add-ons are multiprocess compatible, unless explicitly flagged as otherwise. While this does not mean the feature will be enabled by default, it is expected more and more users will be using it (or at least desire to do so). In order for this to occur smoothly, existing add-ons must have one of the following occur:
- Implement or adapt functionality to support multiprocess
- Flag itself as multiprocess compatible
- Flag itself as multiprocess incompatible
Sadly, as of this posting, Mozilla reports approximately 10% of add-ons have complied with this. The remaining 90% are considered to have unknown compatibility. While some of these are very likely to have no issues with multiprocess, others will have strange and undesired behaviour, or simply not function.
Supporting the developers
There are a few reasons as to why add-ons do not yet comply with the new standard, including:
- The developer is currently implementing e10s support
- The developer is not aware of the required change
- The developer has abandoned the project
Unfortunately, due to the free (and generally open source) nature of add-ons, it comes as no surprise that developers have discontinued support, or at least infrequently update their add-ons. As for ones still being maintained, it’s important that the community support the developer, and here are my recommendations to assist:
1. Check compatibility status
Mozilla has already released a handy add-on of their own, to check if currently installed ones are compatible with multiprocess, amongst other things. Along with this, they have a public list of the most popular (1000?) add-ons, with their statuses indicated, found here. If all of your installed add-ons are compatible, then you’re good to go, and e10s should be fully functional if enabled. As for ones listed as not compatible, more steps should be taken.
2. Check add-on development
With add-ons marked as not compatible, it’s important to notify the developer about the needed change. Before doing this however, one should first check the development status of the add-on, such as info on the add-on’s webpage. Personally, I found many of them to be several years without an update, and with no indication of future support. These instances can be considered abandoned add-ons. After checking any comments posted, and optionally adding one, it’s recommended in these cases to search for alternates. I was surprised to find many of the ones I use had near duplicates, and some direct forks to provide new updates.
As for ones which appear to still be actively maintained, there are two things to check. Firstly, browse the comments to see if another user has inquired about e10s support. Equally, check the add-on’s listed support website. These are generally 3rd party sites or source-control pages, many of which allow comments to be left, and bugs to be reported. If no e10s mentions are found there either, a post should be made. It’s more likely a developer will see this on a bug tracker or source control website then in the add-on website comments section.
3. (Optional) Test e10s compatibility
For those wishing to dabble and experiment, e10s may be manually enabled as indicated on the Electrolysis webpage, and is already enabled in nightly and beta builds of Firefox. By testing existing add-ons with the feature enabled, it’s possible to give a developer a more detailed description of work needed to be accomplished (if any). It’s equally possible the add-on is already compatible, and just not flagged as such.