MediaWiki needs a standard way to version, bundle, transport and sync on-wiki data (e.g. pages and files). We propose extending extension.json's schema and update.php process and providing tools to accommodate this functionality.
Use cases
Help Pages for MediaWiki
As it is currently distributed, MediaWiki does not currently come with any end-user help documentation. The Help namespace is present, but empty. Bundling documentation with the distribution of MediaWiki would allow new MediaWiki installations to point to on-wiki documentation.
This sort of bundling would help on wikis that are available to people who are not able to access the MediaWiki.org.
Properly implemented synchronization would allow upgrades to update the documentation without overwriting local modifications by merging where possible and using conflict resolution where necessary.
Extension Distribution
Extension developers will, of course, be able to distribute help pages as described above.
However, extensions like UploadWizard will be able to bundle other on-wiki content that they depend upon, such as images, when other solutions like InstantCommons are not feasible.
Standard Dev→Staging→Prod workflow
When updating a local wiki, often it is necessary to modify local wiki content and then move that content to the staging and then production sites. Providing tools to move that content will make the jobs of administrators easier.
Why not just use import?
Using the current infrastructure doesn't provide a standard, well documented set of tools for the use cases we are looking to accommodate.
Implementation
TBD
extension.json schema updates
At least two fields need to be added to the schema. One will point to the enclosed bundle's URI and the other will point to an endpoint that will be used to perform as-needed updates.
Tools
We anticipate providing the following tools to help create and manage these content bundles.
Special:Bundler
Lists known bundles and marks any that have updates available. Allows the administrator to perform updates.
Special:Bundler/conflicts
This page will allow the administrator to handle any edit conflicts that arise from bundle updates.
API endpoints
Provides a way to publish bundle updates, list and import available updates to known bundles, list and resolve conflicts.
CLI
Similar to the API. Conflicts will probably not be handled on the CLI.
update.php
Performs a hands-free update of any bundles whether included in the core or extensions. Any conflicts will be handled via Special:Bundler/conflicts