MediaWiki 1.38


MediaWiki 1.38 is an obsolete release of MediaWiki. Consult the RELEASE NOTES file for the full list of changes. It was deployed on Wikimedia Foundation wikis through incremental "wmf"-branches between September 2021 and March 2022. The 1.38.0 stable release came out on 2 June 2022. Download 1.38.7 or checkout the REL1_38 branch in Git to follow this release.

Configuration changes for system administrators

MediaWiki 1.38 is introducing a new system for configuration loading. The new system is fully compatible with the traditional way of configuring, but it offers some new features. Interested parties are encouraged to experiment with the new ways to load configuration and report any issues they come across.

New configuration

  • (T297708) $wgMaxExecutionTimeForExpensiveQueries – This setting can be used to control the maximum execution time for several expensive query pages (e.g. RecentChanges and UserContribs).
  • $wgBrowserFormatDetection – This setting allows overriding browsers' automatic detection and handling of formats. It's initially used to prevent auto-linking of possible telephone numbers in wiki pages' output in Safari on iOS; this can be re-enabled if you wish, or locally extended for other browsers' quirks.
  • (T240685) $wgMetricsTarget, $wgMetricsFormat, and $wgMetricsPrefix – These provide configuration for a new MetricsFactory service with support for the dogstatsd format, intended for integration with Prometheus.
  • $wgGroupInheritsPermissions – This setting allows inheriting permissions, both granted and revoked, from another group.
  • $wgForeignApiReposForeignAPIRepo now has a apiMetadataExpiry option to control for how long file metadata is cached. Additionally, the default changed from 1 hour to 4 hours.
  • $wgSkinsPreferred – This lets you set a list of preferred skins to be listed higher in Special:Preferences.
  • Warning Warning: EXPERIMENTAL (see the docs on the new system to load configuration)
    • $wgWikiFarmSettingsDirectory – A directory that contains site-specific configuration files. Setting this will enable multi-tenant ("wiki farm") mode, causing site-specific settings to be loaded based on information from the web request.
    • $wgWikiFarmSettingsExtension – The file extension to be used when looking up site-specific settings files in $wgWikiFarmSettingsDirectory, such as json or yaml.
    • $wgWikiFarmSiteDetector – A callback function that returns the name of the wiki for the current request. Replaced by the MW_WIKI_NAME environment variable in 1.39. This is used in multi-tenant ("wiki farm") mode to determine which settings file to load from $wgWikiFarmSettingsDirectory.
  • $wgEnableRemoteBagOStuffTests – This replaces the environment variable PHPUNIT_USE_BAGOSTUFF.
  • (T230211) $wgForceDeferredUpdatesPreSend – Force deferred updates to be run before sending a response to the client, instead of attempting to run them after sending the response. Setting this to true is useful for end-to-end testing, to ensure that the effects of a request are visible to any subsequent requests, even if they are made immediately after the first one. Note however that this does not ensure that database replication is complete, nor does it execute any jobs enqueued for later.
  • $wgTemplateLinksSchemaMigrationStagetemplatelinks table schema migration stage, for normalizing tl_namespace and tl_title fields.

Changed configuration

  • $wgStyleDirectory and $wgExtensionDirectory – These are now set later, so can no longer be used within LocalSettings.php unless explicitly set in that file.
  • $wgFileBackends – This setting no longer takes fileJournal as an option.
  • $wgMaxImageArea – This setting may now be set to false to disable size checking before scaling. Extensions can still override its value by using the BitmapHandlerCheckImageArea hook.
  • $wgAjaxUploadDestCheck(deprecated) Act as always-true.
  • $wgInterwikiCache – This no longer supports the string value for CDB files.
  • (T292321) $wgParserOutputHooks(deprecated) Adjustments using this should be done with OutputPageParserOutputHook instead.
  • $wgExternalStores – This is newly documented in includes/externalstore/

Removed configuration

  • $wgShellLocale – This setting has been removed, as it was a flawed solution to the problem of locale dependence. MediaWiki will now always set a locale of C.UTF-8 or C and works around the remaining problems of the C locale by not using escapeshellarg. This follows the direction of PHP 8.0, which sets a locale of C by default instead of respecting LC_CTYPE.
  • (T293848) $wgLoggedOutMaxAge – Experiment removed, originally added in 1.35.
  • $wgIncludejQueryMigrate(deprecated in 1.36) We only support jQuery v3.
  • $wgUseCategoryBrowser – This experimental feature has been removed. If you still need to use this feature, please see Extension:CategoryExplorer .
  • $wgStyleSheetPath(deprecated in 1.3) Alias for $wgStylePath.

New user-facing features

Bundled extensions

  • (T191740) The AbuseFilter extension is now bundled with MediaWiki. This is an anti-abuse feature that allows privileged users to set specific actions to be taken when actions by users, such as edits or file uploads, match certain criteria.
  • (T232948) The Math extension is now bundled with MediaWiki. This is a content feature that lets users create mathematical formulæ, written in a sub-set of LaTeX and rendered in MathML with a fallback SVG image. By default, it will use Wikimedia's mathoid service to render each formula, but local rendering can be set up for network isolation or performance.
  • (T191743) The Minerva skin is now bundled with MediaWiki. This is a simple, light-weight, and scalable skin that is particularly optimised for mobile use, and integrates well with the MobileFrontend extension (available separately), but can also be used as a regular desktop skin.

Other changes

  • (T284921) The "auto-number headings" feature was removed following a consultation, due to performance reasons.

New operator/developer features

  • The configuration mechanism changed substantially; you can read more about how.
  • Warning Warning: EXPERIMENTAL: The environment variable MW_CONFIG_FILE can be used to specify the location of the settings file. This allows alternative settings files to be loaded depending on the environment. Settings files may be given as PHP files like the traditional LocalSettings.php file, or they may use JSON or YAML format. See Manual:YAML settings file format
  • Added a deleteUserEmail maintenance script – This file enables the deletion of a given user's associated email address. It can be helpful for privacy-preserving operations.
  • The description array for constructing an HTMLForm now can use 'disable-if' to disable fields on a condition easily, supported expressions are the same as 'hide-if'.
  • There is a new interface, IForeignRepoWithMWApi, to allow you to mark file repos provided by an extension as supporting making API queries against the foreign file repo so that extensions like TimedMediaHandler that depend on this can stop hard-coding looking for specific class names.
  • Warning Warning: EXPERIMENTAL Added support for an easy to configure multi-tenant ("wiki farm") mode: Settings for each site can be placed in a directory specified by $wgWikiFarmSettingsDirectory. Site detection is controlled by $wgWikiFarmSiteDetector and defaults to the requested host name. For example, setting $wgWikiFarmSettingsDirectory = "sites" would cause the settings for to be loaded from "sites/wiki_example_com.yaml". WARNING: YAML files under the Web root may be accessible to browsers, please take appropriate measures to protect them from access via HTTP.
  • Running QUnit tests for an individual test suite module is possible with grunt qunit --qunit-component={componentName}, where {componentName} is "MediaWiki" to run core's QUnit tests or the skin or extension name.
  • The mediawiki.mixins module now has a .user-select() Less mixin.

External library changes

New external libraries

  • symfony/yaml was promoted from development-only.

Changed external libraries

  • Updated OOUI from v0.42.0 to v0.43.2.
  • Updated Vue from 2.6.11 to 3.2.23.
  • Updated WVUI from v0.3.0 to v0.4.0.
  • Updated composer/semver from 3.2.5 to 3.2.6.
  • Updated guzzlehttp/guzzle from 7.2.0 to 7.4.1.
  • Updated pear/mail_mime from 1.10.9 to 1.10.11.
  • Updated pear/net_smtp from 1.9.2 to 1.10.0.
  • Updated psr/log from 1.1.3 to 1.1.4.
  • Updated psy/psysh from 0.10.5 to 0.11.1.
  • Updated symfony/polyfill-php80 from 1.23.1 to 1.25.0.
  • Updated wikimedia/assert from 0.5.0 to 0.5.1.
  • Updated wikimedia/cdb from 1.4.1 to 2.0.0.
  • Updated wikimedia/ip-utils from 3.0.2 to 4.0.0.
  • Updated wikimedia/minify from 2.2.4 to 2.2.6.
  • Updated wikimedia/object-factory from 3.0.2 to 4.0.0.
  • Updated wikimedia/parsoid from v0.14.0-a14 to v0.15.0.
  • Updated wikimedia/purtle from 1.0.7 to 1.0.8.
  • Updated wikimedia/request-timeout from 1.1.0 to 1.2.0.
  • Updated wikimedia/shellbox from 2.0.0 to 3.0.0.
  • Updated wikimedia/wrappedstring from 3.2.0 to 4.0.1.
Changed development-only external libraries
  • Updated QUnit from 2.16.0 to 2.18.0.
  • Updated composer/semver from 3.5.4 to 3.5.5.
  • Updated composer/spdx-licenses from 1.5.4 to 1.5.5.
  • Updated doctrine/dbal for PHP < 7.3 from 2.10.4 to 2.13.6.
  • Updated doctrine/dbal for PHP >= 7.3 from 3.0.0 to 3.1.5.

Removed external libraries

  • jquery.jStorage, deprecated since MW 1.28; use instead.

Action API changes

  • New deletetalk parameter on action=delete that allows you to delete the associated talk page of a subject page.
  • (T117549) New variant parameter for all API actions, for specifying language variant (akin to the existing variant parameter for index.php).

Languages updated

MediaWiki supports over 400 languages. Many localisations are updated regularly. Below only new and removed languages are listed, as well as changes to languages because of Phabricator reports.

  • (T292166) Updated namespace names for the Lombard language.
  • (T299201) Changed the autonym of the Angika (anp) language to अंगिका
  • (T298309) Changed the autonym of the Abkhazian (ab) language to аԥсшәа
  • (T302972) Changed the autonym of the Rundi (rn) language to ikirundi
  • (T220303) Show numbered lists with Burmese numerals in relevant languages
  • (T291899) Added language support for Xiang Chinese (hsn).
  • (T292612) Added language support for S'gaw Karen (ksw).
  • (T293656) Added language support for Frafra (gur).
  • (T294729) Added language support for Pa'O (blk).
  • (T296286) Added language support for Skolt Sami (sms).
  • (T296612) Added language support for Makhuwa (vmw).
  • (T296707) Added language support for Ga (gaa).
  • (T297073) Added language support for Nanai (gld).
  • (T297074) Added language support for Nawdm (nmz).
  • (T298075) Added language support for Northern Thai (nod).
  • (T298182) Added language support for Kabuverdianu (kea).
  • (T298385) Added language support for Nheengatu (yrl).
  • (T299329) Added language support for Fon (fon).
  • (T300474) Added language support for Nyankole (nyn).
  • (T302556) Added language support for Pannonian Rusyn (rsk).