Features/Jetpack/CFX in JS
Status
CFX in JS | |
Stage | Planning |
Status | In progress |
Release target | ` |
Health | OK |
Status note | Trying to split the train in multiple wagons. Between planning and starting development. |
{{#set:Feature name=CFX in JS
|Feature stage=Planning |Feature status=In progress |Feature version=` |Feature health=OK |Feature status note=Trying to split the train in multiple wagons. Between planning and starting development. }}
Team
Product manager | Dave Mason |
Directly Responsible Individual | Alex Poirot |
Lead engineer | Alex Poirot |
Security lead | ` |
Privacy lead | ` |
Localization lead | ` |
Accessibility lead | ` |
QA lead | ` |
UX lead | ` |
Product marketing lead | ` |
Operations lead | ` |
Additional members | ` |
{{#set:Feature product manager=Dave Mason
|Feature feature manager=Alex Poirot |Feature lead engineer=Alex Poirot |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
CFX is currently pure python code. We want to slowly migrate this to JavaScript based code, possibly leaving a small python shim to handle command line support.
2. Users & use cases
During first development phase, the very first audience will be the Jetpack team. It allows us to dogfood the SDK itself while building such complex application. And as most of the team is Javascript oriented, it will be easier to modify and review code of cfx in future.
On last iterations, addon developers will be able to build addons without any other dependency other than: Firefox and one addon, "cfx in JS". Currently, on the first hand, developers have to install python in order to build addons. This is particulary hard for people on Windows, where command line application using Python isn't that easy to install and use. On the other hand, they may use Addon-builder, whose only requirement is Firefox. But Addon-Builder is more limited than cfx (localization and preferences support is still to be done), and isn't always usable on slow/bad internet connections.
On the half way of this project, CFX in JS will allow Addon-Builder to build addons on client side instead of server side. That's a key feature in order to allow Addon-Builder team to start working on an offline-capable version of this service.
3. Dependencies
`
4. Requirements
`
Non-goals
Execute "Add-on SDK as an Addon" or "Ship SDK via AMO" features. CFX in JS shouldn't aim to ship the SDK in a XPI in order to host it on AMO, even if it will most likely help these two goals. It may just end up being a requirement for them.
Stage 2: Design
5. Functional specification
`
6. User experience design
`
Stage 3: Planning
7. Implementation plan
This work can easily be splitted in multiple, eventually parallel steps:
- Be able to execute Javascript code hosted in an addon from cfx in python
Then we would be able do implement following CFX workflow steps in JS:
- Install and execute an Addon - Generate the XPI out of the manifest - Compute the manifest out of packages/modules - Read/seek for packages/modules on filesystem - Interpret command line options - Build a command line application with mozilla-platform/Firefox - Write shell/bash scripts in order to setup cfx environnement (equivalent of source bin/activate)
8. Reviews
Security review
`
Privacy review
`
Localization review
`
Accessibility
`
Quality Assurance review
`
Operations review
`
Stage 4: Development
9. Implementation
Main tracking bug: https://bugzilla.mozilla.org/show_bug.cgi?id=746124
Stage 5: Release
10. Landing criteria
` {{#set:Feature open issues and risks=` |Feature overview=CFX is currently pure python code. We want to slowly migrate this to JavaScript based code, possibly leaving a small python shim to handle command line support. |Feature users and use cases=During first development phase, the very first audience will be the Jetpack team. It allows us to dogfood the SDK itself while building such complex application. And as most of the team is Javascript oriented, it will be easier to modify and review code of cfx in future.
On last iterations, addon developers will be able to build addons without any other dependency other than: Firefox and one addon, "cfx in JS". Currently, on the first hand, developers have to install python in order to build addons. This is particulary hard for people on Windows, where command line application using Python isn't that easy to install and use. On the other hand, they may use Addon-builder, whose only requirement is Firefox. But Addon-Builder is more limited than cfx (localization and preferences support is still to be done), and isn't always usable on slow/bad internet connections.
On the half way of this project, CFX in JS will allow Addon-Builder to build addons on client side instead of server side. That's a key feature in order to allow Addon-Builder team to start working on an offline-capable version of this service. |Feature dependencies=` |Feature requirements=` |Feature non-goals=Execute "Add-on SDK as an Addon" or "Ship SDK via AMO" features. CFX in JS shouldn't aim to ship the SDK in a XPI in order to host it on AMO, even if it will most likely help these two goals. It may just end up being a requirement for them. |Feature functional spec=` |Feature ux design=` |Feature implementation plan=This work can easily be splitted in multiple, eventually parallel steps:
- Be able to execute Javascript code hosted in an addon from cfx in python
Then we would be able do implement following CFX workflow steps in JS:
- Install and execute an Addon - Generate the XPI out of the manifest - Compute the manifest out of packages/modules - Read/seek for packages/modules on filesystem - Interpret command line options - Build a command line application with mozilla-platform/Firefox - Write shell/bash scripts in order to setup cfx environnement (equivalent of source bin/activate)
|Feature security review=` |Feature privacy review=` |Feature localization review=` |Feature accessibility review=` |Feature qa review=` |Feature operations review=` |Feature implementation notes=Main tracking bug: https://bugzilla.mozilla.org/show_bug.cgi?id=746124 |Feature landing criteria=` }}
Feature details
Priority | P1 |
Rank | 999 |
Theme / Goal | ` |
Roadmap | Jetpack |
Secondary roadmap | ` |
Feature list | Jetpack |
Project | ` |
Engineering team | Jetpack |
{{#set:Feature priority=P1
|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 | ` | ` |
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=` |Feature security health=` |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=` }}
Usefull links:
https://jetpack.etherpad.mozilla.org/cfx-js
https://etherpad.mozilla.org/cfx-js-2013
https://github.com/mozilla/addon-sdk/wiki/CFX-py