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.

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)
 * 1.15
 * 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

 * If you had to pick, what are 5 key decisions MediaWiki's developers made that were very insightful?
 * And if you had to pick, what are 5 key decisions MediaWiki's developers made that were, in retrospect, the wrong choice?
 * How would you describe our attitude to backwards compatibility?
 * Did MediaWiki get more customizable over time (with extensions, user scripts, gadgets, and skins) or less? Why?
 * What decisions and improvements improved or hurt MediaWiki's performance?