Jump to content

Compatibility

From mediawiki.org
(Redirected from Compatibility policy)

MediaWiki strives to maintain broad compatibility between versions, and with a range of current and legacy software. At the same time, the constantly-evolving codebase and features of the latest MediaWiki development mean that it is not possible to maintain compatibility with legacy software indefinitely.

If you wish to suggest a change to what MediaWiki supports, you can file a request for comments on Phabricator (Help).

Server software

These sections provide an overview of the software required on the server to run MediaWiki.

PHP

The latest stable branch of MediaWiki (1.42) runs on PHP 8.1.0 and higher.

For upcoming versions, see Support policy for PHP .

Wikimedia production servers currently run PHP 7.4, with plans to upgrade to PHP 8.1 soon. Patches for MediaWiki core are tested against PHP 7.4 when created, and PHP 7.4, 8.1, 8.2 when merging. MediaWiki developers are encouraged to develop using PHP 8.1, and the MediaWiki Docker image uses PHP 8.1.

If your OS distribution has an unsupported version of PHP, you may be able to use a community package repository:

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 master
 8.3.0+
 8.2.0+
 8.1.0+
 8.0.0+ 
 7.4.3+ 
 7.3.19+ 
 7.2.x 
 7.1.x 
 7.0.x 
 5.6.x 
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 master
 5.5.9+ 
 5.5.0–5.5.8 
 5.4.x 
 5.3.3+ 
 5.3.2 
 5.2.3+ 
 5.1.x 
 5.0.x 
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 master

Database

MediaWiki is compatible with a variety of database servers. Using MySQL or MariaDB is recommended.

Using any other database software is not recommended for production use. Support differs from MediaWiki version to MediaWiki version and ranges from dubious to stable. MediaWiki provides database abstraction layers for PostgreSQL and SQLite, which are generally well-maintained.

Since Version 1.36, MediaWiki only commits to supporting upgrades from two LTS releases ago (see phab:T259771). Upgrades from older versions of MediaWiki will have to be performed in multiple steps. This means that if you want to upgrade to 1.42 from 1.34 or earlier, you'll first have to upgrade your 1.34 wiki to 1.35 (or 1.39), and, from 1.35 (or 1.39), you'll be able to upgrade to 1.42.
MediaWiki no longer supports using Oracle or Microsoft SQL Server as of version 1.34 .
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 master
 MariaDB 10.3.0+
 MariaDB 10.1.0+ 
 MySQL 5.7.0+
 MySQL 5.5.8+ 
 MySQL 5.0.3+ 
MySQL 4.x 
MySQL 3.x 
 SQLite 3.8.0+
 SQLite 3.3.7+ 
 SQLite 3+ 
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 master
 PostgreSQL 10+
 Postgres 9.4+ 
 Postgres 9.2+ 
 Postgres 8.3+ 
 Postgres 8.1 
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 master

Upgrade

Since Version 1.36, MediaWiki only commits to supporting upgrades from two LTS releases ago (see phab:T259771). Upgrades from older versions of MediaWiki will have to be performed in multiple steps. This means that if you want to upgrade to 1.42 from 1.34 or earlier, you'll first have to upgrade your 1.34 wiki to 1.35 (or 1.39), and, from 1.35 (or 1.39), you'll be able to upgrade to 1.42.

Web server

MediaWiki is broadly compatible with all major web servers that can invoke a compatible version of PHP. Apache is the most used and tested. Nginx is a good choice as well.

MediaWiki extensions and skins

As long as an extension or skin is properly maintained, the master branch of the extension or skin should be compatible with the master branch of MediaWiki. For determining compatibility with older MediaWiki versions, there are the following common policies used by extensions and skins:

  • master (key: master): the master branch of the extension or skin is compatible with both current and older versions of MediaWiki. Back-compatibility hacks are added to the extension's and skin's source code as needed.
  • release branches (key: rel): For every MediaWiki release, there is a corresponding branch in the extension or skin. So e.g. if you use MediaWiki 1.42, you should use the REL1_42 branch of the extension or skin.
  • long-term support release branches (key: ltsrel): For every MediaWiki release that is a Long Term Support release (see Version lifecycle release policy) there is a corresponding branch in the extension or skin. So e.g. if you use MediaWiki 1.39, you should use the REL1_39 branch of the extension. If you use a non-LTS version of MediaWiki, usually you will need to use the extension's or skin's branch for the previous LTS version. For instance, MediaWiki 1.34 wikis using a ltsrel extension or skin would usually use the REL1_31 branch of that extension or skin. However, there is no guarantee of compatibility.

The compatibility policy field of the Extension info box tells which policy is used by a given extension. Use the respective keys indicated above to specify the information.

Some extensions may have more specific compatibility policies, for instance:

Browsers

General information

Every web page starts in Basic mode, where only the HTML is rendered. CSS can be assumed to succeed for visual readers and should be used for presentation. The Modern layer (subdivided into support grades A, C, and X) defines optional enhancements and interactions written in client-side JavaScript. This layer may fail to load, arrive later, or not at all, including in modern browsers. This depends on various circumstances. To learn more, refer to MediaWiki Engineering guidelines.

The JavaScript requirements for the "Modern" layer are implemented via a feature test in the startup module, inspired by the "cutting the mustard" approach. The modern layer currently requires JavaScript version ES6 (ES2015). For MediaWiki developers, this means that you should not use syntax from later versions of JavaScript. This is enforced through ESLint rules in eslint-config-wikimedia.

There is an ever-growing number of different web browsers and browser-capable devices in the world. Too many to actively test and support each one. To guide our practices around browser support, we define three support grades. Each grade represents a different category of browsers.

In practice, the only difference between browser grades is our investment in testing and support. All browsers receive the same server responses and will try to load the Modern layer if it passes the required JavaScript capabilities.

Grade A

Grade A browsers receive the highest level of support. MediaWiki takes advantage of capabilities in modern browsers while allowing a graceful fallback for older browsers. New features developed must work in these browsers (whether or not in a degraded form).

Browsers in this category are known (listed below), actively tested against and meet the requirements for the "Modern" layer. Problems users perceive in these browsers are addressed with high priority.

Grade C

Grade C browsers must receive the core functionality of the MediaWiki platform. Our HTTP responses are compatible with these browsers (e.g., HTTP features we rely on, character encoding, and image formats used by the content; must work in these browsers). In the front end, this means content is presented in a readable manner, and content and account actions can be performed, but JavaScript features may or may not work. To browsers that don't pass the feature test mentioned above, modern JavaScript is not served at all.

Browsers in this category are known (listed below), and are rarely tested against. Problems users perceive in these browsers are addressed with high priority. However, mitigation may focus on ensuring that available functionality is not broken; if acceptable from a product perspective, this may result in the affected enhancement being disabled (whether or not temporarily) rather than restored in these browsers.

Grade X

All other browsers are referred to as "Grade X".

MediaWiki handles these browsers the same as Grade A and Grade C browsers: there is no user agent filter, and if they pass the feature test for the "Modern" layer, they receive JavaScript enhancements.

Browsers not included in any other group belong to this category, including:

  • Less popular browsers that are based on, or derived from, known modern browsers (e.g. Samsung Internet, UC Browser, Vivaldi, Opera, and IceCat).
  • Beta versions of modern browsers. These are considered Grade X if they are not yet tested against by us. Treating these as capable ensures optimal user experience in these browsers and facilitates upstream testing.
  • Browsers or browser versions that are no longer developed or maintained and incompatible with modern Internet standards. These might receive the "Basic" mode or might be unable to even connect to the web server.

This principle means users of new and evolving browsers are given a chance to have a modern experience.

These browsers are not common enough to justify the added maintenance cost for software development and are essentially never tested. Problems users perceive in these browsers are given low priority.

Browser support matrix

Desktop

The principles and different grades described above apply to MediaWiki core and extensions alike. The support matrix below applies these grades in the context of MediaWiki core, Wikimedia Foundation infrastructure, and any MediaWiki extensions that decide to follow it. Individual extensions may have their own support matrix distributing browsers among the different levels of support. See also Browser usage breakdown dashboard.

Browser support matrix as of November 2024 v · d · e
Browsers Chrome Edge Firefox Safari iOS Android[note 1]
Modern (Grade A) Last three years' versions (2021) 11.1+ (2018) 11.3+ (2018) 6+ (2015)[note 2]
Basic (Grade C) 49+ (2016) 79+ (2020) 49+ (2016) 10+ (2016) 10+ (2016) 5+ (2014)[note 3]
Unknown (Grade X) All other browsers
Practical implications as of November 2024
Platform Minimum OS or device Supported modern browser
Android Moto G (1st generation) (2013)
Google Nexus 4 (2012)
Android 5.1, Firefox (current)
Samsung Galaxy S5 (2014)
Google Nexus 5 (2013)
Moto G (2nd generation) (2014)
Android 6.0, Chrome 106, Firefox (current)
iOS iPhone 5s (2013) iOS Mobile Safari 11.3 - 12 (2018-2023)[note 4]
Linux Debian 10 Buster (2019) firefox-esr 102
Ubuntu 18.04 LTS (2018) firefox (current), chromium-browser (current)
macOS OS X 10.11 El Capitan (2015-2018) Safari 11.1, Chrome 103
macOS 10.13 High Sierra (2017-2020) Safari 13, Firefox 115 ESR, Chrome 116
macOS 10.15 Catalina (2019-2022) Safari 15, current Firefox, Chrome 128
macOS 11 Big Sur (2020-2023) Safari 16, current Firefox, current Chrome
Windows Windows 7 (2009-2020) Edge 109, Firefox 115 ESR, Chrome 109

List of changes, most recent first:

  • As of MediaWiki 1.43 , Basic support is removed for Internet Explorer 11 (IE 11), Edge 12–18, Chrome 31–48, Firefox 39–48, Safari 9 on macOS and iOS, and Opera. Chromium versions of Opera will probably see exactly the same experience as before. T288287
  • As of 2023, the support targets have been re-stated; for Chrome and Chrome-based browsers, this is now the last three years' versions (covering three years rather than three months); for Firefox, this is now the current and previous LTS versions (reaching approximately the same time range). T178356
  • As of MediaWiki 1.41 , Modern support is removed for Internet Explorer 11, macOS and iOS Safari 9–10, and Firefox 39–53. T178356
  • As of MediaWiki 1.39 , Basic support is removed for Internet Explorer 9-10, Firefox 27-38, and Android 4.3-4.4 T293298, T297313, T290815
  • As of MediaWiki 1.36 , Basic support is removed for Firefox 3-26, Internet Explorer 8, Safari 3-8, iOS (Safari) 5-8, Android 3.0-4.2, Chrome 1-30, and Opera 15-18. T248061, T262946, T266866
  • As of MediaWiki 1.36 , Modern support is removed for Android 4.1-4.2, iOS 6.1-8, and Safari 5.1-8. T266866
  • As of MediaWiki 1.35 , Basic support is removed for Internet Explorer 6-7 and Android 2. T232563, T249788
  • As of MediaWiki 1.31 , JavaScript for Internet Explorer 10 has been disabled. T187869
  • As of MediaWiki 1.29 , JavaScript for Internet Explorer 9 has been disabled along with other non-ES5 browsers. T128115
  • As of MediaWiki 1.27 , JavaScript for Internet Explorer 8 has been disabled. T118303, Wikitech-ambassadors message
  • As of MediaWiki 1.24 , JavaScript for Internet Explorer 6 and 7 has been disabled. gerrit:152072, gerrit:152128, Wikitech-ambassadors message

The Wikimedia Foundation also provides an up-to-date browserslist config reflecting the support matrix.

Mobile

The Web team at the Wikimedia Foundation applies a narrower support matrix for mobile-specific skins, e.g., Minerva and/or extensions designed only to run on mobile devices, e.g., MobileFrontend . The support matrix is compiled from the data provided by the analytics user agent breakdown dashboard. Where browser usage is over 5%, a modern experience (Grade A) is supported. Basic support (Grade C) is provided for anything over 0.1% during the previous 12 months. In mobile we strive to provide a Grade B. Users of grade B may or may not get JavaScript and we do not test to the same level as A, thus we prioritise bug fixes lower. Modern support browser list on MobileFrontend is defined in .browserlistsrc file.

Anything absent in the list or older is considered a basic supported browser.

See also

Notes

  1. Refers to Android WebView, based on Chromium since Android 4.4(2013). In Android 5.0+(2014), Chrome WebView can be updated separately without having to update Android versions. For standalone browsers, refer to Chrome and Firefox columns.
  2. Chrome 96(2021), which is more than three years old, dropped support for Android 5(2014). Latest versions of Firefox as well as Wikimedia apps support Android 5+(2014).
  3. Note this refers to the stock Android browser. For Chrome for Android, provided that you're running Chrome 49+, it requires Android 4.1+(2012). For Firefox for Android, provided that you're running Firefox 49+, it requires Android 4.0+(2011).
  4. iOS 11 dropped support for iPhone 5 and older devices

References