MediaWiki 1.31

MediaWiki 1.31 is a future release of MediaWiki.

Consult the  file for the full list of changes.

It is currently deployed on Wikimedia Foundation wikis through incremental "wmf"-branches starting 26 September 2017.

The 1.31.0 stable release is expected to come out on sometime in June 2018.

Download the or checkout the   branch download>Special:MyLanguage/Download from Git|in Git to follow this release.

More bundled extensions
The set of extensions that are bundled with the MediaWiki tarball is increasing. The new additions are:
 * provides a more friendly editor when editing CSS and JavaScript on-wiki.
 * provides a lightbox viewer for images and galleries.
 * provides two-factor authentication for wiki accounts.
 * provides a form to let administrators do string replacements on the entire wiki, for both page contents and page titles.

Tidy replaced with HTML 5 parsing algorithm

 * See the frequently asked questions for more details

The HTML 4 based Tidy library has been replaced by a pure-PHP HTML 5 parser to clean up improper wikitext in a modern and standards compliant way. If your content relied on some of the tidy fix-ups that are not being continued, they will need to be fixed. [Something about how in the long-run this will all be better. Pointers to Linter and ParserMigration].

Interwiki usernames
???

Further UI standardization
???

Upgrade notices for MediaWiki administrators
TODO: + PHP7

Configuration changes

 * and  are now deprecated and will be removed in a future version. The API is now considered to be stable, secure and essential.
 * was removed, as it is now the default. This was documented as a temporary variable during the migration period, deprecated since 1.29.
 * has been updated to support svg images and uses  where possible for fallback images such as png.
 * will no longer ignore  when user does not have the right to mark things patrolled.
 * Wikis that contain imported revisions or CentralAuth global blocks should run.
 * and  were removed (deprecated since 1.27).


 * now supports having fallbacks for browsers that are not using the latest version of the Referrer Policy specification.
 * is now set to  by default. This is a first step of migration to human-readable section IDs that will later result in   being the default mode.
 * The old CategorizedRecentChanges feature, including its related configuration option, has been removed.
 * (T188472) The  value for   is no longer supported for performance reasons, and installations with this setting will now work as if it was configured with.

New features

 * and similar methods now support JOINs with parentheses for grouping.
 * As a first pass in standardizing dialog boxes across the MediaWiki product, Html class now provides helper methods for messageBox, successBox, errorBox and warningBox generation.
 * Imports will now record unknown (and, optionally, known) usernames in a format like "iw>Example".
 * Linker (used on history pages, log pages, and so on) will display usernames formed like "iw>Example" as interwiki links, as if by wikitext like iw>Example.
 * The  hook allows extensions to auto-create users during an import.
 * Added a hook,, to allow extensions to affect the   post-cache transformations.

Languages updated

 * Mirandese (mwl) now supports gendered NS_USER/NS_USER_TALK namespaces.

Other changes

 * (deprecated in 1.27) was removed.
 * The global function  was renamed to LanguageCode::bcp47.
 * The global function  is now deprecated.
 * The global function  is now deprecated in favor of
 * The OutputPage class constructor now requires a context parameter, (instantiating without context was deprecated in 1.18)
 * (deprecated in 1.30) was removed.
 * ,, and the related   constants, deprecated in 1.29, were removed.
 * The,  ,  , and   methods, deprecated in 1.24, were removed.
 * and  were removed, use   instead.
 * Several methods for returning lists of fields to select from the database have been deprecated in favor of similar methods that also return the tables to select from and the join conditions for those tables.
 * with a prefix no longer works
 * with a prefix no longer works
 * Due to significant refactoring, method  that had no access restriction has been removed.
 * was deprecated.
 * Access to  class properties was deprecated, the relevant getters should be used instead.
 * is deprecated. Subclasses should override  instead.
 * The deprecated  constant was removed.   should be used instead.
 * Use of  to exit script was deprecated. Use   instead.
 * Passing a  object to   is deprecated.
 * Browser support for Opera 12 and older was removed. Opera 15+ continues at Grade A support.
 * The Block class will no longer accept usable-but-missing usernames for  or  . Callers should either ensure the blocker exists locally or use a new interwiki-format username like "iw>Example".
 * The following methods that get and set  state are deprecated. Callers should use the new stateless $options parameter to   instead.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.
 * Due to significant refactoring, method  that had no access restriction has been removed.
 * was deprecated.
 * Access to  class properties was deprecated, the relevant getters should be used instead.
 * is deprecated. Subclasses should override  instead.
 * The deprecated  constant was removed.   should be used instead.
 * Use of  to exit script was deprecated. Use   instead.
 * Passing a  object to   is deprecated.
 * Browser support for Opera 12 and older was removed. Opera 15+ continues at Grade A support.
 * The Block class will no longer accept usable-but-missing usernames for  or  . Callers should either ensure the blocker exists locally or use a new interwiki-format username like "iw>Example".
 * The following methods that get and set  state are deprecated. Callers should use the new stateless $options parameter to   instead.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.
 * The following methods that get and set  state are deprecated. Callers should use the new stateless $options parameter to   instead.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.
 * The public  state fields   and   are also deprecated.
 * The following methods and constants from the  class were deprecated in 1.27 have been removed.