Jetpack: The Road Ahead

Until now the SDK has been released every 6 weeks, 3 weeks offset from Firefox releases. We are breaking this established release schedule and switching to release the SDK’s APIs in Firefox itself, starting with Firefox 21. The process will be somewhat disruptive, in fact I’ve taken to calling it our awkward phase. I’d like to first describe how this awkwardness might affect you, and then why we think this transition is worth all this trouble.

The Awkward Phase

By the time we reach the end of this ‘awkward phase’ we should have a much better story for packaging and Firefox compatibility: the SDK’s apis will be maintained in our github repo, shipped with Firefox every 6 weeks, and add-ons that use these apis will no longer need to include a version of the SDK’s apis in the add-on package.

In order to achieve these goals we have decided to make Add-on SDK 1.14 the last release of the SDK that will include the APIs. Firefox 21 will be the first version that includes the SDK APIs and they will match those shipped in SDK 1.14. After we ship SDK 1.14 on March 12 we will only release new SDK API features via Firefox, meaning the next time we introduce new SDK functionality will be with the release of Firefox 22.

SDK 1.14 also introduces some changes to how add-ons load SDK APIs. If you package your add-on using SDK 1.14, the resulting xpi will by default include all of the API dependencies needed to run the add-on as usual. If your add-on is run in Firefox 21 or greater, the SDK’s loader will not load these packaged APIs, and will instead use the ones shipped with Firefox.

The Benefits

The shift to shipping in Firefox has clear benefits:

developers will not need to re-pack their add-ons after SDK 1.14 in order to benefit from changes in the SDK, as the add-on will always use the APIs provided by newer versions of Firefox.

the Jetpack team will decouple our releases of the cfx packaging tool from the 6 week train model. This tool should not need to change significantly so we should only need to update it on an as-needed basis.

the Jetpack team will no longer need to maintain compatibility with a range of Firefox versions in a single code-base. This aspect alone will greatly reduce the complexity of our code in some areas, and allow us to more easily react to major platform changes.

new features can be added to the SDK more quickly when they depend on changes to Firefox as the new features can ship in the same release as those changes rather than waiting for later.

Firefox developers will be able to rely on the SDK APIs when creating new Firefox features.

What’s next?

Once Firefox 22 as been released, we will release a new cfx packaging tool; this version will not include the SDK’s APIs, and therefore will not include these APIs in the add-ons it packages. Add-ons will be much smaller, and developers will no longer need to re-pack to the latest version in order to benefit from the latest bug fixes.

What I’m most excited are the cool projects the team will start working on for Firefox 22 and up – I’ll publish a follow-up post on these plans tomorrow.