Requests for comment/Distribution and deployment

This page is for organizational purposes of a 2010 Google Summer of Code project with as goal the creation of an extension management platform for MediaWiki. Jeroen De Dauw is mentored by Brion Vibber on this project.

Project goal
The goal of this awesome project is to create a set user friendly administration interfaces via which administrators can manage their wiki and extensions. The user experience should be as awesome as the Wordpress one, or even better. For this a package management system is needed.

I deny having any plans for using the deployment platform to install SEMANTIC MediaWiki on all MediaWiki installations and take over the world.

Planned architecture
A rough draft of how I see the structure of the end product, and where the code is coming from:



Legend:


 * Striped lines: Existing components where code will be copied from, or based upon.
 * Full lines: Components of the complete deployment model.
 * Thick full lines: Core components (of the deployment model) that I definitely want to have completed in GSoC.

End product components
Focusing mainly on the extension management in this section, as I'm not working on the core installer functionality itself.

Core installer
The core installer should have all current capabilities plus


 * Upgrading of the filesystem from a fetched package
 * Install/update extensions that are detected

Special:Update
A page similar to the WP wp-admin/update-core.php

Checks for updates for both core and extensions, and shows update options for individual components, or the whole deal. There is some functionality overlap here with the core installer, still need to figure out what the best approach is.

Special:Install
A page similar to the WP wp-admin/plugin-install.php

On this page administrators can browse and search through extensions that are in the connected repository. This can be very basic to start with, but should eventually include filtering on categories and keywords, popularity, rating, ect.

Special:Extensions
A page similar to the WP wp-admin/plugins.php

A page listing all installed extensions, with options to uninstall, disable and upgrade them, as well as links to documentation, ect. Once MediaWiki has a configuration database, links to configure the extensions can also be included here.

Special:Dashboard
A page similar to the WP wp-admin/index.php

A dashboard for administrators containing update information and fancy stuff like statistics.

CLI interface
It'd be nice to be able to do most stuff also via CLI, although I think the primary focus should be the web interface, as the vast majority of users will prefer that. The smwadmin.php tool from the DF can probably be adapted for this task pretty easily.

Roadmap
This is the loose planning I have right now:


 * Design and implement a deployment repository on mediawiki.org
 * Create the code to handle interaction with the repository, parsing and applying of package meta data.
 * Create an initial version of the ExtensionInstaller class.
 * Create the extension management interfaces.

Work done
Oldest first:


 * Researched Configure, the Deployment Framework, WordPress and other potential useful existing works.
 * Ported WP filesystem abstraction classes.
 * Researched the new installer.
 * Split the Installer class from the new installer up to Installer and CoreInstaller classes.

Configuration
I have done some investigating into the deployment part of the project, but have come to realize I won't have time for this if I want to do a good job on the deployment part. I will probably publish a summary of my findings, and how I think things should progress here at the end of my project.