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:
 * extension name
 * version
 * description
 * dependencies -must be previously installed or being installed at the same time
 * pre-dependencies - mus be previously installed
 * recommended - strong relationship with another extension
 * suggests - weak relationship
 * breaks - extensions this extension will break
 * conflicts
 * replaces
 * provides
 * licensing
 * checksum(s)
 * list of files
 * platform architecture info if that's an issue
 * when, where and whom built this software/extension