Manual:MediaWiki architecture

Other languages: 日本語 (ja) ...Translate this page!

Because the documentation in the source tree is sparse and the code is scary, here's some info for new developers on generally how the MediaWiki software works.

The database (see also database layout) contains the wikitext of the pages and various auxiliary information about pages, users, etc. It also contains (in the "old" table) all previous versions of all pages, as the MediaWiki software maintains its own version control system. The current version of each page is stored in the "cur" table. The growing database size for Wikipedia's largest languages is shown here and database dumps (not including user passwords) can be downloaded here. As of February 2005, the "cur" table of the English Wikipedia holds 3 GB data and 500 MB index (download as 500 MB compressed dump) while the "old" table holds 80 GB data and 3 GB index (download as 29 GB compressed dump).

When viewing a page the wikitext is converted to XHTML (see also XHTML), or this XHTML code is taken from cache, and sent to the user, who uses their browser to render the XHTML.

The XHTML code for a given page depends on:
 * the mode, such as viewing or editing (see below).
 * the wikitext
 * the templates referred to
 * the values of variables
 * the existence of internally linked pages (gives view or edit link)
 * the skin
 * the user name itself
 * the status of the user (more links if a sysop, etc.)
 * the namespace (determines the link to the Talk page, or in the case of a Talk page, the page concerned)
 * whether the page is watched by the user (gives watch or unwatch link)
 * whether the user's Talk page has been recently edited (gives a message)

The result the user sees on the screen depends on:
 * the XHTML code
 * files referred to by the XHTML code, such as embedded images and a server-side css file.
 * the browser and browser settings, including possibly a local css file, and the screen resolution.

When the user presses the Edit button, the wikitext itself is sent to them, of the whole page or of one section only. When the user presses Preview, their new version of the wikitext is sent to the server, which sends the corresponding new version of the XHTML code, which is rendered again and displayed above or below the user's new version of the wikitext (which the server has also returned). After possibly more changes and more previews, the user presses Save, sending their "final" version to the server, which now records the edit and sends the XHTML of the new version (again). In some cases also an automatic conversion of wikitext takes place in this stage.

See also Differences between wikitext and the webpage.

General Architecture
See also: How to become a MediaWiki hacker

For Wikimedia, see also Wikimedia servers.

Next: Database layout >