Help:MediaWiki architecture

From GRWiktionaryHelp

MediaWiki Handbook: Contents | How To Use Help | Other help Software help for MediaWikiReaders, Editors, Admins e0 +/-

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

General Architecture
User Layer Web Clients
Network Layer Apache Webserver
Logic Layer
MediaWiki's PHP scripts
PHP
Data Layer
File System MySQL Database Caching System

See also: m:How to become a MediaWiki hacker For Wikimedia, see also m:Wikimedia servers.

MediaWiki Handbook: Contents | Other help


Reading: Go | Search | URL | Namespace | Page name | Section | Link | Backlinks | Piped link | Interwiki link | Redirect | Variable | Category | Special page
Tracking changes: Recent | (enhanced) | Related | Watching pages | Page history | Diff | User contributions | Edit summary | Minor edit |
Logging in and preferences: Logging in | Preferences | User style
Editing: Overview | Wikitext | New page | List | Images/files | Image page | Special characters | Formula | Table | EasyTimeline | Template | Renaming / Moving a page | Editing shortcuts | Talk page | Testing | Export |

Wiki Projects: Wikibooks | Wikicommons | Wikipedia | Wikiquote | Wikisource | Wiktionary |