How to become a MediaWiki hacker/2011 Workshop

A workshop to teach developers how to hack MediaWiki.

What to have prepared ahead of time?

 * Have the LAMP stack installed: Linux, Apache, MySQL (or SQLite) and PHP
 * Have MediaWiki installed -- download 1.17.0 tarball, use installer
 * if adventurous, try downloading & installing from trunk, but don't worry
 * Install an IRC client such as xchat or ChatZilla
 * Have an account on http://bugzilla.wikimedia.org
 * Install an Subversion (SVN) client

And if you run into trouble, hit IRC or wikitech-l mailing lists.

Workshop time
The Workshop will take place on Tuesday, August 2 at 10:00 in Beit Hecht, Hanassi Ave 138.

Process
coding toolchain & code intake/review/merge/deploy/release workflow. Go through "HOWTO Become A MediaWiki Hacker".

Ask workshop

 * what's your reason/interest/focus?
 * Then point out things of interest in MediaWiki or Wikimedia

What You Can Do
Explain how one might change the desired behavior in MediaWiki in some scenario(es). Start with easy & work way up to more time-consuming/pioneering work.
 * User preferences
 * Config options
 * Skins
 * Extensions (refer to the example extensions, which are up-to-date)
 * Gadgets (JavaScript-based site extensions, requiring the Gadget extension to be installed. Especially good for eye candy.)
 * Special pages
 * Parser hooks
 * Hooks in general
 * Parser functions & parser tags
 * Modifying MediaWiki core

Shallowest Possible Overview of the Application
Everything comes in through index.php which dispatches to MediaWiki class, determines your action parameter (?), logic handled in article class, & that dispatches various aspects.

Specialpage class -- all special pages. Preferences, contributions, version, etc. Easy place to jump into code. self-contained. Easy place to jump into.

there is a nice pic of the structure of the DB schema: http://www.mediawiki.org/wiki/File:MediaWiki_database_schema_1-17_%28r82044%29.png (go to Wikimedia Commons, link to "recent" .jpg)

Then: workshop! Bug triage or testing for people who don't want to contribute just yet, and Annoying Little Bug work for people who want to dive in and code. This would last for the rest of the 90 minutes, and if one of the developers leading it felt the need to burst into a few minutes of lecturing (because a few people were having the same problem), that would be fine.

Annoying little bugs list: http://www.mediawiki.org/wiki/Annoying_Little_Bug Roan to prescreen a few?

During the coding/workshop, if anyone is ready to actually use trunk (to install or to suggest a patch), be ready to explain the directory structure, e.g., what's phase3?