In some previous threads and blog posts, we've talked generally about
shipping some features as bundled add-ons. I'd like to dive a bit
deeper into the mechanics of doing this.
Who wants this:
* Product group
* Labs
* Services
Why:
* A/B testing of features
* Region- and/or locale-specific features
* Development workflow independence
* Release cycle independence
Current candidates for this:
* BrowserID
* Share (F1)
* OpenWebApps
* Any others?
We've been mapping out the process for this with BrowserID, and so far
it looks like this:
* BrowserID is developed however/wherever by it's team
* On a project branch, the add-on source code is landed in
/browser/app/profile/extensions/{add-on-id}
* The add-on is packaged with the browser during the build process
(eg:
http://j.mp/t9sSXP)
* The project owners periodically drop new versions into the project
branch, to test quality/performance
* When ready, the project moves off project branch into the mainline
Technical questions Mossop brought up from the Test Pilot experience,
that we need to answer:
* Would users be able to uninstall?
* What would happen when the user upgraded to a build that didn't ship
the add-on?
* Could Test Pilot update from AMO?
There are other questions, such as:
* How best to do L10n - Test Pilot keeps it's strings in the core, IIRC
* If/how to integrate the add-on's unit tests into our continuous
integration system
* Christian & release team, any release-specific issues come to mind?
Gavin mentioned that some process questions related to quality, review
and landing requirements occurred during the Test Pilot integration.
The requirements should be the same as for any code that ships with
the browser - the problem was that not everyone involved had run that
gauntlet. We need to over-communicate early and often what those
requirements are to everyone involved. Just because some code is
developed on a daily-basis in a project branch or external repository,
the responsibilities, expectations and requirements are the same as
for any code that lands on Mozilla-central.