Requests for comment/Distribution and deployment

This page serves as an overview for the effort to create a deployment system for MediaWiki. This started off as a 2010 Google Summer of Code project with as goal the creation of an extension management platform for MediaWiki, where Jeroen De Dauw was mentored by Brion Vibber. The idea's are being implemented in the Deployment and Distribution extensions.

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.

Deployment
Note: this needs some updating...

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
I'm now working on creating an extension that will serve as a deployment repository on mediawiki.org, called Distribution. The idea is to first create a very simple version (not much time left in GSoC) that gets info via scripts going through the svn repo. Although this gets us only very basic deployment functionality, this will be a big win in installing extensions, and serve as a proof of concept.

After (and probably during) that, I'll work on the Deployment extension, to use the api provided by Distribution. After that the web interfaces (special pages) can be created, although this will definitely be for after GSoC.

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.