Project CSP/Content sharing

What is meant by content?
From a technical perspective pages in the wiki are content. And that is what is important here. The purpose of content sharing is to share different kinds of pages with other wiki's.

Typical types of content are:


 * Application pages - Pages that are considered part of the application. Examples are templates, properties and forms. Extensions such as Page Exchange and PageSync have been created to handle this kind of content. Such pages can not be changed by 'ordinary' users.
 * User content - Pages that are considered user content and can be edited by users of the wiki.
 * Standard content - Pages that are considered user content but cannot be edited by users of the wiki, because they are managed elsewhere.

Scenario's for sharing content
There are many scenario's for sharing content. Some of them are described here. Please add to this list.


 * As a MediaWiki consultant or company share application pages to provide standard solutions or branded bundles of extensions and application pages
 * In a wiki farm impose a standard set of application pages across all wikis in the farm
 * In a multi-environment solution, deploy the solution from Development to Test, to Acceptance and to Production
 * Wiki-users/developers share working examples with others
 * Transfer standard content from one wiki to other wiki's
 * Real time - Changes are transferred when they occur
 * Periodic - Changes are transferred periodically, for example nightly
 * Episodic - Changes are transferred episodically, for example when a new version of a manual has been approved

Flexible architecture
Sharing content in all scenario's involves a flexible architecture with:


 * Flexibility in tooling to push content to a server
 * Stable file format for registering content
 * Flexibility in tooling to pull content from a server

It must be able to put content in a Git repository for a number of reasons:


 * Be able to put content under version control as application artifacts
 * Be able to include content in deployment processes that take application artifacts from Git

Standardization on file format
The proposed way to register content in files includes:


 * All content pages are registered with two files
 * A file that contains the source code of the page
 * A file that contains metadata of the page
 * For file pages a third file is included. This is the file the itself.
 * Index files that contain lists of pages with metadata for supporting the push and pull processes.

Page Exchange
Page Exchange is an extension that supports publishing content and integrating it in a wiki. Through packages content can be 'installed' in a similar way as extensions can be installed