Labs/Jetpack/FlightDeck/Development Docs/SDK
Contents
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
- Should SDK be assigned to the Libraries? It makes sense that some Libraries may depend on a specific version.
- 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