Open issues/risks

Stage 1: Definition

1. Feature overview

The vast majority of add-ons work from one version of Firefox to the next without the need for developer maintenance, but under the current system, compatibility information must be updated in order for Firefox to enable the add-on for use. For add-ons hosted on AMO, this is done automatically. However, 75% of add-ons in use are not hosted on AMO, and are therefore a major compatibility obstacle for our users. All of the compatibility effort put into each release is simply because Firefox still assumes add-ons will be incompatible between versions, when they usually aren't.

We should change Firefox's assumption to be that add-ons are compatible, with a few exceptions. Binary add-ons are never compatible between releases and are also the highest risk of negative side effects. Firefox should automatically enable low-risk (non-binary) add-ons in new versions of Firefox, and check AMO for additional compatibility information.

When users upgrade to a new version of Firefox, only the add-ons that are actually incompatible should be disabled, and the rest are assumed to be compatible. Because Nightly, Aurora, and Beta users will test out the add-ons for weeks before stable users, we should be able to identify and blacklist incompatible add-ons before stable users would be affected by a truly incompatible add-on.

2. Users & use cases

For users without binary add-ons, we hope this will eliminate the vast majority of compatibility issues between rapid releases and allow for silent updates.

3. Dependencies

The operational side of this feature, how to detect and handle incompatibility cases, is detailed on the Detection and Mitigation page.

4. Requirements

`

Non-goals

This plan is not trying to solve the issue of binary compatibility between releases.

Stage 2: Design

5. Functional specification

Firefox
When Firefox wants to update to a new version, it should determine which add-ons are incompatible and which will be assumed compatible by looking at the following:

1. If the add-on is already marked as compatible with the new version, either in its included install manifest or via its updateURL update manifest, the add-on remains enabled.

2. If the add-on is not marked as compatible, Firefox will look at its install.rdf to see if the author has opted out of compatible by default and requested strict compatibility mode. If they have, the add-on is incompatible and should be disabled in the new version of Firefox.

3. Next, Firefox will look at the compatibility info, to see if the specified minVersion is greater than the running appl;icatin's version. If it is, then Firefox will assume the addon is not backwards compatible, and mark it as incompatible.

4. Next, Firefox will look for binary components in the add-on. If binary components are found, the add-on is incompatible and should be disabled in the new version of Firefox.

5. Finally, for all add-ons, Firefox will look at the metadata it received from AMO and the compatibility presented there will override all of the previous checks. AMO may report that the add-on is actually not compatible with the new version, or it may report that it is compatible with the new version. If there is no compatibility information returned for the particular version of the add-on with the particular version of Firefox, the compatibility is unchanged from steps 1-3.

Firefox will then inform the user, if necessary, about incompatible add-ons, or update to the new version and automatically enable the add-ons that would otherwise be incompatible.

When Firefox first enables incompatible add-ons, it should perform a self-test to help ensure correct behaviour. At minimum this test should verify that no JS exceptions occur during startup and no XML parsing errors occur during startup. Crashing several times in a row or force quitting should cause Firefox to start in safe mode so the problem add-on can be identified (see also Support/Firefox_Features/Clean_up_user_profile).

We'll need an admin tool where add-on GUIDs can be entered/selected and compatibility information with add-on versions and versions of Firefox can be saved.

We should have an interface to the Add-on Compatibility Reporter reports that allows for easy compatibility blacklisting of top incompatible add-ons.

Add-on Compatibility Reporter
The ACR should be revamped to better fits its new role of reporting when add-ons are not compatible, rather than when they are compatible. For example, when a user disables an add-on, it should provide a user with the opportunity to say it's because it doesn't work. And it should look for other signs of incompatibility, similar to the self-tests.