Features/Jetpack/Simplify the Add-on SDK
|Simplify the Add-on SDK|
|Status note||Various work in progress|
|Product manager||David Mason|
|Directly Responsible Individual||Irakli Gozalishvili|
|Product marketing lead||`|
Stage 1: Definition
1. Feature overview
The Add-on SDK's interfaces (APIs, commands, the required structure for an addon) and implementations are overcomplex in a variety of ways, leading to a higher barrier to entry for new developers, a more difficult developer experience, and a greater risk of bugs than is necessary.
Simplicity is a characteristic of product features, but, like performance and certain other such characteristics, it can also be treated as a feature in and of itself, because the overall simplicity of a software product impacts its usability and quality.
This feature is to simplify the SDK's interfaces and implementations to the degree possible in a variety of ways, including:
- merge bootstrap.js and components/harness.js, dropping attempts at ff3.6/gecko1 compatibility
- merge cuddlefish.js and securable-module.js, breaking code that does require("cuddlefish") for other purposes (sub-loaders? control over loading process?)
- build a XPI for 'cfx run' and 'cfx test' too, reducing the number of supported code paths from two to one
- enable the main addon code and the addon's own HTML pages to communicate directly with each other (rather than having to communicate though a content script)
- remove package abstraction for SDK's own APIs, moving their code to top-level lib/, doc/, and test/ directories
- support putting all addon files into a single top-level directory for simple addons that don't have enough files to justify breaking them up into data/, lib/, and test/ subdirectories
- resolve relative and root-relative text strings passed to URL parameters relative to the location of the script and top-level addon directory for all URL parameters, respectively, so addons can specify "/data/foo.txt" in place of require("self").data.url("foo.txt")
- require in content scripts?
- Remove some generalization code contained in the python portions of the SDK
2. Users & use cases
The target audience is addon developers. The use case is an add-on developer using the Add-on SDK (either directly or via the Add-on Builder) to build an addon.
Stage 2: Design
5. Functional specification
6. User experience design
Stage 3: Planning
7. Implementation plan
Many of the items listed in the overview will begin in conjunction with our P1 work so developers do not have to devote 100% of their time to just one feature. Therefore, the status of this full-set feature will be in progress until all items are completed or determined to be part of another feature, or no longer needed or wanted.
Quality Assurance review
Stage 4: Development
Stage 5: Release
10. Landing criteria
|Theme / Goal||`|
Team status notes