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
See MediaWiki architecture document/How and why/questions

Overall structure

 * brief introduction to the project - what is it, who uses it, interesting historical details
 * description of architecture, presented either historically ("We did this but then it didn't work so instead did that") or structurally ("the thigh bone's connected to the hip bone")
 * a "lessons learned" section in which you discuss what you would have done differently if you had known in the past what you know now
 * chapter guidelines