User:Aigerim/GSoC2011

Project summary
The project "Extension Release Management" is based on Jeroen De Dauw’s GSoC 2010 work on implementing an extension management platform for MediaWiki. In the long run this project is supposed to result in an administration panel would automate installation, update and removal of extensions.

The project addresses the first part of extension management problem, and involves further development of extension/MediaWiki core release tracking, based on Distribution and Chad Horohoe's suggestions for release management. The project has to be able to track releases of extensions and MediaWiki core, check compatibility of extensions with current MediaWiki core, and show this information through special pages and the API.

Deliverables
The project requires a mechanism that gathers data about extensions and displays it.
 * Tracking of extension/MW releases and their compatibility
 * Parser functions to retrieve extension information and to check compatibility
 * Release management database table(s) to store that information
 * Display information about extensions, release dates, compatibility, authors, etc.
 * Special:Extensions special page

If time permits

 * Displaying infoboxes on extension pages that are autopopulated with information about release, etc.

Project schedule
A tentative schedule outline:
 * Apr 27 - May 7: Community bonding period | Finals - I will be taking exams during this period, so I will not be able to do much besides getting to know the community.
 * May 8 - May 22: Getting to know the API, MW extension code.
 * May 23 - Jun 23: Official coding period. Focus on release tracking (will be divided into various subproblems depending on complexity).
 * Distribution has database setup and API modules. To make it work, first of all there has to be a script that would gather all current release data. I will have to research how this could be efficiently automated.
 * Jun 24 - Jul 31: Compatibility and special page(s). The problem will be refined after release tracking is implemented.
 * Aug 1 - Aug 15: Testing. Documentation.

Progress

 * Set up a Github repo where I will be putting the code.
 * Looked into CodeReview/backend/Subversion.php to implement the method of importing data from SVN
 * Writing RMSubversion.php for extracting data. CodeReview's Subversion has three ways of doing it: using SVN PECL, JSON proxy and a shell. I'm first trying to do it through SVN PECL, using documentation.


 * Looked into making infoboxes via templates, as it is one of suggested extensions of the project. They are used to display extension metadata on Extension: pages, and can potentially be automatically populated.
 * Created a page based on Version that displays information about installed extensions. It lists the data in $wgExtensionCredits, including description, authors and version, as well as provides links to the source code. I want to alter the page's appearance to make it easily readable and searchable. After editing the page, I will see whether I should build on it or create another special page for update info. While this seems doable to me at the moment, we have to find a way to determine and show compatibility of a MW core release with a version of an extension, which was one of the initial goals.
 * I am still keeping the code in the Github for the time being. I will put it in the SVN as soon as I clean up the special page file and add comments.
 * Unfortunately, I haven't put the code in the SVN. As most of my initial special page was a copy of Special:Version, editing it was more complicated. I am looking at the code of other pages.