Manual:MediaWiki architecture

This page contains the actual text of the MediaWiki architecture document project. This content will be merged into the appropriate mediawiki.org pages once the specific formatting required for inclusion in the AOSA book will not be needed any more.

We are tentatively using an "architecture through history" approach, where MediaWiki's history is told chronologically, and its different parts presented along a timeline, surrounded by the context (reasons, assumptions, constraints) in which they were introduced.

Facts (and their rationale) to be integrated

 * context
 * Wikipedia and sister sites
 * also used externally, for knowledge management
 * optimization and performance because of requirements of high-profile sites like those operated by the WMF
 * API
 * extensions
 * PHP, database back-end; DBMS support
 * Manual:Database layout
 * http://yellowstone.cs.ucla.edu/schema-evolution/index.php/Schema_Evolution_Benchmark
 * interaction with other pieces of software (i.e. LaTeX, ImageMagick, etc.)
 * i18n & l10n, translatewiki
 * Templates; scripting; dedicated extensions
 * The Parser
 * Media storage
 * development community and processes?

Phase I

 * Wikipedia launched in January 2001; was using existing wiki software UseModWiki, written in Perl, stored all pages in individual text files
 * used CamelCase. See w:Wikipedia:UuU, w:Wikipedia:CamelCase and Wikipedia
 * February 19, 2001, Wikipedia enabled and recommended free links.

Phase II
PHP & MySQL
 * limitations (which? performance? others?) => mid 2001: Magnus Manske started to work on a dedicated wiki engine for Wikipedia
 * deployed to English Wikipedia in January 2002, gradually deployed to other language versions http://meta.wikimedia.org/w/index.php?title=Wikipedia_software_upgrade_status&oldid=48204
 * "the PHP script" / "phase II"

Phase III

 * performance /load issues led to another rewrite by Lee Daniel Crocker: "Phase III". Same PHP/MySQL architecture, same basic interface
 * deployed to Wikipedia in July 2002
 * WMF announced in June 2003. MediaWiki named in July. Confusion

The Coming of age
2004
 * categorization system

2005
 * Hooks!

2006
 * parser functions

2008
 * flagged revisions

20xx
 * JavaScript

The recent years

 * Usability & compromises: performance vs. user experience; ResourceLoader
 * Gadgets

Current state

 * Current RfCs, etc.
 * Visual editor