User:DanielRenfro/ExtensionRepo/Technical

There will be code added to core that logically can be split into two different parts:
 * 1) Frontend/client code
 * 2) * This is where extensions can be browsed, rated, downloaded/uploaded, installed, activated, configured, etc. and repositories can be added or removed.
 * 3) * This code will be implemented as a (series of?) SpecialPage(s)
 * 4) Repository/server code
 * 5) * This code manages the extensions to be served to the frontent clients.
 * 6) * Clients can be remote, or local.

Things I need to review

 * Package management in general
 * Debian package management, Homebrew, Smart Package Manager, CPAN, npm, http://en.opensuse.org/Package_management
 * The pros and cons of each package management system

Options/configuration

 * keep all old packages once updated or not (to save disk space)
 * turn off repository behavior (default is on)

Metadata file
For the extension-manager to work correctly we'll need a manifest/metadata file that describes the extension. It will need to contain the following types of information in some parse-able format: