Extension:Distribution/plans

This page contains development plans for the Distribution extension, which will serve as a deployment repository for MediaWiki. The goal is to have this extension installed on MediaWiki.org, so it's API can be used by the Deployment extension on local MW installs.

Initial release
Initially this extension should only provide some very basic extension information which can be used by the Deployment extension to display a list of extensions and point to the ExtensionDistributor download on mediawiki.org. This will be done by collecting extension data via some scripts and storing it so it can be queried. Later on this part of the system should obviously be changed to allow for modifying the data and managing permissions.

TODOs here:


 * Create script to scrape the mw repo/extension pages for extension data and save in db tables added by this extension.
 * Create the API module to provide the data from these tables.



Required capabilities
A package is single version of either mediawiki core or an extension.


 * Provide detailed information about an individual package. This includes name, authors, licence, version, description, ect.
 * Provide lists of packages filtered on package information and compatibility.
 * Provide data about mw core or an extension, loose from the version. This would include version info (which is stable, which are supported, ect), reviews, ratings, ect.
 * Dependency resolution

Other cool stuff
Things that should be possible to implement, but are (probably) not for an initial version.


 * Provide support for L10n updates such as the LocalisationUpdate extension has.
 * Installation of content (discussion)
 * Working with 'extensions bundles', which would be similar to Semantic Bundle

Storage of data
How the distribution metadata is stored on mediawiki.org. It's important that this is done in a way that allows the community to keep updating the data, and is flexible enough to be extended in the future. WordPress recently introduced a system that allows people to vote on compatibility. Although such functionality is not needed in a first version of the new deployment code, it would be nice to able to easily add this later on. Depending on how this is done, some extra code (special page?) might be needed to present the data in this format.


 * Semantic MediaWiki would be awesome. This would allow the data present on extension pages to be queried. Via custom scripts additional information available on other locations can be added to the extension pages to make them more complete. The difficulty here lies in getting SMW approved to go on mediawiki.org, as someone needs to review it.

Other thoughts

 * MediaWiki releases should only be editable via 'release-manager' right, similar to 'repoadmin'
 * Extensions should be managed by anyone with 'coder' right (closely tied to commit access).
 * Extension namespace becomes more dynamic. New top-level pages only creatable by coders. Must refer to code in our SVN repo. End of pastebin'd code and outside-hosted stuff. Infobox becomes dynamically populated via db info. Pages become editable by anyone after creation (subpages and talkpages won't change)


 * Magic words for latest supported release versions, etc would make management of things like the Download page more automagic

Communication format
The format in which distribution metadata is presented by the API to the MW install making a request.


 * Possibly http://search.cpan.org/~dagolden/CPAN-Meta-2.101670/lib/CPAN/Meta/Spec.pm (suggested by avar)