Simple module loader
Status
Simple module loader | |
Stage | Complete |
Status | Complete |
Release target | SDK 1.4 |
Health | OK |
Status note | ` |
{{#set:Feature name=Simple module loader
|Feature stage=Complete |Feature status=Complete |Feature version=SDK 1.4 |Feature health=OK |Feature status note=` }}
Team
Product manager | David Mason |
Directly Responsible Individual | Irakli Gozalishvili |
Lead engineer | Irakli Gozalishvili |
Security lead | ` |
Privacy lead | ` |
Localization lead | ` |
Accessibility lead | ` |
QA lead | ` |
UX lead | ` |
Product marketing lead | ` |
Operations lead | ` |
Additional members | ` |
{{#set:Feature product manager=David Mason
|Feature feature manager=Irakli Gozalishvili |Feature lead engineer=Irakli Gozalishvili |Feature security lead=` |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=` |Feature ux lead=` |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=` }}
Open issues/risks
`
Stage 1: Definition
1. Feature overview
Addon SDK's module loader was implemented at the early stage of the project and intentionally was designed with lots of flexibility in mind. This flexibility comes with a price of complexity, unjustified for at this stage of the project.
This feature is to simplify the SDK's module loader and bootstrap code and relay on platform capabilities were possible.
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.
3. Dependencies
- https://bugzilla.mozilla.org/show_bug.cgi?id=638742
- https://bugzilla.mozilla.org/show_bug.cgi?id=672443
4. Requirements
- Combine bootstrap.js, components/harness.js, cuddlefish.js and securable-module.js into single form module loader that has no external dependencies.
- Let platform handle all IO operations associated to the module loading.
- Make module loader agnostic of addon form (whether.xpi is unpacked or not).
Non-goals
`
Stage 2: Design
5. Functional specification
`
6. User experience design
`
Stage 3: Planning
7. Implementation plan
`
8. Reviews
Security review
`
Privacy review
`
Localization review
`
Accessibility
`
Quality Assurance review
`
Operations review
`
Stage 4: Development
9. Implementation
`
Stage 5: Release
10. Landing criteria
` {{#set:Feature open issues and risks=` |Feature overview=Addon SDK's module loader was implemented at the early stage of the project and intentionally was designed with lots of flexibility in mind. This flexibility comes with a price of complexity, unjustified for at this stage of the project.
This feature is to simplify the SDK's module loader and bootstrap code and relay on platform capabilities were possible. |Feature users and 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. |Feature dependencies=* https://bugzilla.mozilla.org/show_bug.cgi?id=638742
|Feature requirements=* Combine bootstrap.js, components/harness.js, cuddlefish.js and securable-module.js into single form module loader that has no external dependencies.
- Let platform handle all IO operations associated to the module loading.
- Make module loader agnostic of addon form (whether.xpi is unpacked or not).
|Feature non-goals=` |Feature functional spec=` |Feature ux design=` |Feature implementation plan=` |Feature security review=` |Feature privacy review=` |Feature localization review=` |Feature accessibility review=` |Feature qa review=` |Feature operations review=` |Feature implementation notes=` |Feature landing criteria=` }}
Feature details
Priority | Unprioritized |
Rank | 999 |
Theme / Goal | ` |
Roadmap | Jetpack |
Secondary roadmap | ` |
Feature list | Jetpack |
Project | ` |
Engineering team | Jetpack |
{{#set:Feature priority=Unprioritized
|Feature rank=999 |Feature theme=` |Feature roadmap=Jetpack |Feature secondary roadmap=` |Feature list=Jetpack |Feature project=` |Feature engineering team=Jetpack }}
Team status notes
status | notes | |
Products | ` | ` |
Engineering | ` | ` |
Security | sec-review-unnecessary | ` |
Privacy | ` | ` |
Localization | ` | ` |
Accessibility | ` | ` |
Quality assurance | ` | ` |
User experience | ` | ` |
Product marketing | ` | ` |
Operations | ` | ` |
{{#set:Feature products status=`
|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=sec-review-unnecessary |Feature security health=OK |Feature security notes=` |Feature privacy status=` |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=` |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}
This change is crucial and indirectly related to other features:
- Out-of-Process Addons
https://wiki.mozilla.org/Features/Jetpack/Out-of-Process_Addons
- SDK Support for Firefox for Mobile Addons
https://wiki.mozilla.org/Features/Jetpack/SDK_Support_for_Firefox_for_Mobile_Addons
Two options were considered in implementing this:
1. Use of .jsm modules wrapped into CommonJS form https://bugzilla.mozilla.org/attachment.cgi?id=548736
2. Use of sandboxes https://bugzilla.mozilla.org/attachment.cgi?id=548878
Few disadvantages have been highlighted with an option #1: https://wiki.mozilla.org/User:Asqueella/Sandboxes