MediaWiki 1.21

MediaWiki 1.21 was developed between September 2012 and March 2013. Consult the release notes file for the full list of changes. It was deployed on Wikimedia Foundation wikis through incremental "wmf"-branches from October 2012 to March 2013. The 1.21.0 stable release is expected to come out on May 15th, 2013. Download the or checkout the   branch in Git to follow this release as it stabalises.

What's new?
MediaWiki 1.21 will include all changes released in the smaller, bi-weekly "1.21wmfX" software deployments to Wikimedia sites.

Comments from the RC
From wikitech-l mailing list:


 * 46934
 * There is just one issue that I would like to mention: in my database (MySQL) pre-upgrade jobs have job_random set to 0 and do not seem to be picked up - not even when I use the option --type=replaceText.  I can repeat the replace text operations, so this is not big problem for me.  However, if this is the normal behaviour for an upgrade, maybe it should be  mentioned in the notes somewhere.

Skins

 * The CologneBlue skin has been refactored to make it relevant again, more compatible with existing scripts, and more similar in structure to Vector and Monobook, reusing a lot of existing code.

The only major difference for end-users should be a slight reordering of the sidebar menu (the "Context" submenu was removed and its contents merged into other ones). If you were, however, depending on the exact HTML it used to produce, you'll need to review your tools.

ContentHandler
As part of the Wikidata initiative, 1.21 adopts an extensible framework so that pages can contain something other than wikitext.

Right now, built-in content types are limited to


 * wikitext - wikitext, as usual
 * javascript - user-provided JavaScript code
 * css - user-provided CSS code
 * text - plain text

Extension developers can create additional content types. Extension:EventLogging uses ContentHandler to implement a namespace for JSON schemas, and may be used as a reference.


 * The new ContentHandler might affect diff rendering, handing of CSS and JavaScript pages, import/export (including PDF export), and API stuff, especially when rendering and editing. Also look out for issues in template rendering, images and media handling, localisation, and mobile device access.  (merged on Oct 9)

High-resolution image support

 * High-resolution image support. This is a work-in-progress that tries to give higher-res images to high-density screens that can support it, like new Retina displays.  More info is at .  Administrators may need to watch out for higher load on their image scaling software.

Ajax patrolling
The features users have waited for longest: One-click AJAX patrolling. With this new feature, users can mark revisions or pages as having been "patrolled" with a single click while staying on the current page. (bug 7851)

Internationalization

 * The general logging framework was made completely localisable at last, by fixing bug 24156 (deferred since MediaWiki 1.18). The logging for each action (whether in core or extensions) might still need to be updated to use the new system, though.
 * MediaWiki:Contributions now reflects the gender of the user.

New accounts

 * It's now easier to create accounts for other users by sending a temporary password via e-mail: Special:CreateAccount now shows a checkbox for logged-in users to use this feature, rather than a button.
 * Account API: bots and other scripts can now use the API to create user accounts, rather than attempting to pseudo-submit the HTML form.

Account creation welcome
The title of the page you see on account creation is now "Welcome, Username". To make this, the MediaWiki:welcomecreation message was split into two messages:


 * MediaWiki:Welcomeuser:


 * MediaWiki:Welcomecreation-msg:

If your wiki has customized the MediaWiki:welcomecreation message and wants to preserve the customization, an admin needs to
 * 1) move it to MediaWiki:welcomecreation-msg (without leaving a redirect),
 * 2) remove the "== Welcome, $1==" heading line from welcomecreation-msg,
 * 3) (preferably) log out and create an account to see if it works.

Password recovery system uses tokens
The previous password recovery system, where users were emailed a short temporary password, has been replaced with a token system. Users now click a link in the email they receive rather than copy/pasting a password into the login form. This new system has the following advantages: Additionally, the expiration time of password reset tokens has been reduced from one week to one day.
 * Tokens are significantly longer than temporary passwords. This means that they are less prone to brute force attacks.
 * Since the users are clicking on a link, they can be pointed to the secure site using https.
 * The login form is now used only for logins; password resets now always go through Special:PasswordReset.
 * Special:PasswordReset now uses FormSpecialPage, making it easier for extension developers to add fields to the form.

More wikitext now supported in JavaScript messages
Tired of all your MediaWiki i18n messages showing on the JavaScript side as wikitext? Parse them with jqueryMsg, now with wikilinks and int: transclusion support! For more details, see Manual:Messages API.

Using semantic headings for the navigation menu
The previous scheme of using (varying per skin) &lt;h4>, &lt;h5> and/or &lt;h6> tags (with nothing apart from the main &lt;h1> above them in the hierarchy) was change to consistently using a &lt;h2> above the entire navigation and &lt;h3>s as portlet headings in all skins.

The &lt;h2> is hidden for normal browsers, but accessible for screen-readers or text browsers.

While this change is minor, it might require similarly minor updates in any customized CSS or JS (or in screen scrapers).

Extended collation support
UCA-based category collations for 68 languages based in Latin, Greek and Cyrillic alphabets are now supported. You can use them by setting, where   is the appropriate language code.

Bundled extensions
Newly bundled for 1.21 (bug 43815):
 * Cite
 * ImageMap
 * Interwiki
 * Title Blacklist
 * SpamBlacklist
 * Poem
 * InputBox
 * LocalisationUpdate
 * SyntaxHighlight GeSHi