MediaWiki is free software originally (since 2001–2002) written for Wikipedia (later, Wikimedia projects) by its own community.
Phase I: UseModWiki
Wikipedia was launched in January 2001. At the time, it was mostly an experiment, to try to boost the production of content for Nupedia, a free-content, but peer-reviewed, encyclopedia created by Jimmy Wales. Because it was an experiment, Wikipedia was originally powered by UseModWiki, an existing GPL wiki engine written in Perl, using CamelCase and storing all pages in individual text files with no history of changes made.
It soon appeared that CamelCase wasn't really appropriate to name encyclopedia articles. In late January 2001, UseModWiki developer and Wikipedia participant Clifford Adams added a new feature to UseModWiki: free links, e.g. the ability to link to pages with a special syntax (double square brackets), instead of automatic CamelCase linking. A few weeks later, Wikipedia upgraded to the new version of UseModWiki supporting free links, and enabled them.
While this initial phase isn't about MediaWiki, it provides some context and shows that, even before MediaWiki was created, Wikipedia started to shape the features of the software that powered it. UseModWiki also influenced some of MediaWiki's features, for example its markup language. The Nostalgia Wikipedia contains a complete copy of the Wikipedia database from December 2001, when Wikipedia still used UseModWiki.
Phase II: the PHP script
In 2001, Wikipedia was not yet a top 10 website; it was an obscure project sitting in a dark corner of the Interwebs, unknown to most search engines, and hosted on a single server. Still, performance was already an issue, notably because UseModWiki stored its content in a flat file database. At the time, Wikipedians were worried about being "inundated with traffic" following articles in the New York Times, Slashdot or Wired.
So, in summer 2001, Wikipedia participant Magnus Manske (then a university student) started to work on a dedicated Wikipedia wiki engine in his free time. He aimed to improve Wikipedia's performance using a database-driven app, and to be able to develop Wikipedia-specific features that couldn't be provided by a "generic" wiki engine. Written in PHP and MySQL-backed, the new engine was simply called the "PHP script", "PHP wiki", "Wikipedia software" or "phase II".
The "PHP script" was made available in August 2001, shared on SourceForge in September, and tested until late 2001. As Wikipedia suffered from recurring performance issues because of increasing traffic, the English language Wikipedia eventually switched from UseModWiki to the PHP script in January 2002. Other language versions also created in 2001 were slowly upgraded as well, although some of them would stay powered by UseModWiki until 2004. An automated program, called "User:Conversion script", converted the last version of the existing articles to the phase II format; Brion Vibber partly restored previous revisions of the UseModWiki history on the English Wikipedia in September 2002.
As PHP software using a MySQL database, the PHP script was the first iteration of what would later become MediaWiki. It also introduced many critical features still in use today, like namespaces to organize content (including talk pages), skins, and special pages (including maintenance reports, a contributions list and a user watchlist).
Phase III: MediaWiki
Despite the improvements from the PHP script and database back-end, the combination of increasing traffic, expensive features and limited hardware continued to cause performance issues on Wikipedia. In 2002, Lee Daniel Crocker rewrote the code again, calling the new software "Phase III". Because the site was experiencing frequent difficulties, Lee thought there "wasn't much time to sit down and properly architect and develop a solution", so he "just reorganized the existing architecture for better performance and hacked all the code". Profiling features were added to track down slow functions.
The Phase III software kept the same basic interface, and was designed to look and behave as much like the Phase II software as possible. A few new features were also added, like a new file upload system, side-by-side diffs of content changes, and interwiki links.
It was deployed to the English Wikipedia in July 2002, along with a hardware move to a new (but still single) server. Other features were added over 2002, like new maintenance special pages, or the "edit on double click" option. Performance issues quickly reappeared, though. For example, in November 2002, administrators had to temporarily disable the "view count" and "site" statistics, which were causing two database writes on every page view. They would also occasionally switch the site to read-only mode to maintain the service for readers, and disable expensive maintenance pages during high-access times because of table locking problems.
In early 2003, developers discussed whether they should properly re-engineer and re-architect the software from scratch, before the fire-fighting became unmanageable, or continue to tweak and improve the existing code base. They chose the latter solution, mostly because most developers were sufficiently happy with the code base, and confident enough that further iterative improvements would be enough to keep up with the growth of the site.
In June 2003, administrators added a second server, the first database server separate from the web server. (The new machine was also the web server for non-English Wikipedia sites.) Load-balancing between the two servers would be set up later that year. Admins also enabled a new page caching system that used the filesystem to cache rendered, ready-to-output pages for anonymous users.
June 2003 is also when Jimmy Wales created the Wikimedia Foundation, a nonprofit to support Wikipedia and manage its infrastructure and day-to-day operations. The "Wikipedia software" was officially named "MediaWiki" in July, as wordplay by Daniel Mayer on the Wikimedia Foundation's name. What was thought at the time to be a clever pun would confuse generations of users and developers.
New features were added in July, like the automatically-generated table of contents, and the ability to edit page sections, both still in use today. The first release under the name "MediaWiki" happened in August 2003, concluding the long genesis of an application whose overall structure would remain fairly stable from there on.
There are no immediate plans for a Phase IV of the software. Instead, MediaWiki development now happens in smaller steps: see the Roadmap.
Once reached phase III, the growth of MediaWiki exploded, thanks to many volunteer developers, who are the reason that MediaWiki exists. Some notable examples of what's been done by volunteer devs follow (including those devs whose volunteer work was so helpful that they were later hired to work on MediaWiki professionally).
Growth and volunteers
- Original MediaWiki software: Magnus Manske, Lee Daniel Crocker
- Wiki tables: Magnus Manske
- Namespaces: ?
- Templates: Tim Starling (MW 1.2)
- Template and MediaWiki namespace: Erik Möller and Tim Starling (MW 1.3)
- MonoBook skin: Gabriel Wicke, with a design document and a mass of user comments (MW 1.3)
- Categories: ? (MW 1.4)
- The table of contents – Erik Möller
- Section editing – Erik Möller
- Watchlist: ?
- Regular/daily updates from Translatewiki.net – Nikerabbit, Siebrand and since 2007 Raymond (including the LocalisationUpdate extension)
- Committing or enabling all sorts of l10n – Nikerabbit, Brion Vibber, Rob Church, Ævar Arnfjörð Bjarmason, Rotem Liss, Hashar
- Other l10n/i18n – Huji, Collinj, JeLuF, Reedy, Simetrical, IAlex
- Original author 2005–2006 – Yurik
- Maintainer 2008?–2013? – Catrope
- Others – Bryan, IAlex, Reedy
- Current maintainer – Anomie
Some of the MediaWiki extensions used on WMF wikis originally created and/or currently maintained by volunteers:
- Extension:Global Usage
- Extension:RSS feed
And many widely used extensions for non-Wikimedia wikis, like:
- Most of Semantic MediaWiki – many contributors
- ConfirmEdit's most used and useful module, QuestyCaptcha – Emufarmers