MediaWiki architecture document/Initial ideas

This page helps structure and plan a potential chapter about MediaWiki in the Architecture of Open Source Applications book.


 * Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.


 * This book's goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think.

Possible key points

 * MediaWiki history general overview
 * Critical architectural components/concepts
 * a "page"
 * key classes
 * parser
 * diagrams
 * index.php dispatches to MediaWiki class; SpecialPage class; page, revision, & user tables, Title & WikiPage classes
 * DB API, cache handling (Squid purge, memcached).
 * WebRequest / Sanitizer
 * Big decisions we made, snapshots of what the codebase/architecture was like at
 * "phase 1"
 * "phase 2"
 * "phase 3"
 * 1.5 <-- schema rewrite IIRC Hashar 08:31, 31 August 2011 (UTC)
 * Proposed Database Schema Changes/October 2004
 * couple slides from talk at CCC in 2004
 * 1.12 or so? <-- Tim's major parser preprocessor rewrite made big improvements to template performance
 * 1.15
 * 1.17 <-- ResourceLoader: beginning of strong JavaScript module APIs
 * Drawbacks, decisions we have rued
 * dependence on MySQL?
 * aspects of parser & templates
 * PHP?
 * lack of extension management?
 * Our unique position
 * Deploy-then-release
 * Heightened security and performance needs
 * User freedom is a very high priority

Questions to answer
See MediaWiki architecture document/How and why/questions

Sources to review
Current
 * Manual:Cache
 * Manual:File cache
 * Disk-backed object cache
 * Manual:Code
 * Localisation
 * PHP configuration
 * Requests for comment

Historical content
 * w:Wikipedia:Milestones 2001 and following
 * w:Special:PrefixIndex/Wikipedia:PHP script
 * w:Wikipedia:MediaWiki (archive)
 * http://meta.wikimedia.org/w/index.php?title=MediaWiki&dir=prev&action=history
 * http://en.wikipedia.org/w/index.php?title=Wikipedia:Software_Phase_III&action=history
 * w:User:Conversion script
 * http://nostalgia.wikipedia.org
 * Release notes
 * m:Cache strategy
 * m:PHP caching and optimization
 * m:Wikimedia cache strategy evolution during 2003
 * m:Wikimedia servers
 * m:Separate database and web servers
 * m:Upgrade to MySQL 4.0
 * One-pass parser
 * m:Kernel upgrade
 * m:Compiler optimizations
 * m:Category:Category:MediaWiki archives
 * m:Move Text to Filesystem
 * m:Main causes of lag

(and associated talk pages)