Labs/Jetpack/FlightDeck/Development Docs/SDK

From MozillaWiki
< Labs‎ | Jetpack‎ | FlightDeck
Jump to: navigation, search
Draft-template-image.png THIS PAGE IS A WORKING DRAFT Pencil-emoji U270F-gray.png
The page may be difficult to navigate, and some information on its subject might be incomplete and/or evolving rapidly.
If you have any questions or ideas, please add them as a new topic on the discussion page.

Jetpack SDK in FlightDeck

FlightDeck is using Jetpack SDK to create XPI from the source stored in the database.

Jetpack SDK is changing frequently. New versions might not be backwards compatible. To avoid compatibility errors FlightDeck should have many versions of SDK installed. It should also assign SDK version with the Add-on. Author of the Add-on should be able to change the version of the SDK.

Questions

  1. Should SDK be assigned to the Libraries? It makes sense that some Libraries may depend on a specific version.
  2. Should we make old docs available?


Currently

SDK is downloaded from bleeding edge Mercurial repository. It is placed in flightdeckenv/src/ and copied temporarily to /tmp/SDK-#addon_id-#revision_number/ for every XPI creation.

jetpack-core (included in SDK) is a special Library. It has all functionality of normal Library, but Add-ons are not really depending on it. It is just displayed as a "must have" dependency - it may not be removed, forked or edited. The only functionality is to View Source

Proposition

How multiple SDK versions could be implemented.

Storage

  • All versions will be placed in one directory which wouldn't be in VCS.
  • Metadata will be stored in database
    • Version name
    • Subdirectory
    • ForeignKey to jetpack-core Library version

Installation

Administrator will download the desired SDK version and copy it into FlightDeck/sdk_version/

A shell script which will take a tag (url ?) and version name - SDK subdirectory - as arguments. It will download the SDK and create the associated database entry. It will also create a new version of the jetpack-core Library with the given version name.

From now on all new Add-ons will use the new SDK

UX

Option 1 - In the list of Libraries jetpack-core Library (all Libraries) will have a drop-down with ability to choose on which version the Add-on (Library) depends.

Option 2 - in the list of Revisions Every revision will have a drop-down with available SDK versions to choose from

Option 3 - revision parameters button and window It would contain description, version name and SDK version drop-down