-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Extension Package Manager Research
This is a look at existing extension and package managers to get an idea of the state of the art and whether there is any reusable infrastructure.
The third-party package manager for Sublime Text.
Eclipse is built on a foundation of plugins, so extension management is a core feature.
npm is the package manager for Node. It's written in JavaScript for Node, so it may be possible to reuse npm bits, especially after node integration lands in Brackets.
A package system for browser-based components.
Firefox's add-on manager and add-ons website have a long history and a lot of development behind them.
- Star ratings, reviews
- Collections
Different kinds of add-ons:
- Traditional add-ons: could access any public API in Firefox and use "XUL overlays" (see also "XBL") to augment the user interface in nearly unlimited ways
- Restartless add-ons: these can do much of what traditional add-ons did, and in the same style of code. However, there are limitations, as noted by the creator of Adblock Plus. Even so, in that same article, Wladimir says that it is worthwhile to go restartless
- Add-on SDK (Jetpack): Jetpacks are organized with an extensions-specific API to make extension writing easier. Jetpacks are built on CommonJS modules and are restartless. To date, they have been "statically linked": the SDK itself and any libraries your add-on depends on, are bundled in your package. Having the SDK statically linked has proven troublesome, so they are migrating the SDK into Firefox.
All of these add-ons are basically zipped directories.
The Ubuntu Software Centre is an open source "app store". It is notable as a graphical front end to apt which is a widely used Linux package manager that needs to be able to wrangle dependencies between lots of packages. The package management needed by Linux applications is likely an extreme case of what we would see in a Brackets extension ecosystem (though the Node community has proven with npm that a good package manager can result in the creation of many inter-related packages).