Manual:Extension support

From mediawiki.org

Who this is for[edit]

This is a resource for Extension authors looking to support official older versions of MediaWiki core releases. There are many administrators out there running older wiki's who for one reason or another have not upgraded their core. For the purpose of this article core refers to the MediaWiki version and not to extension code.

Why support[edit]

Some reasons why a wiki may be running an older core include:

  • Key extensions they use (3rd party or in-house) only work on specific cores.
  • They have made core code changes [they don't want to/or can't] reproduce on newer versions
  • Their workplace requires them to put all core software upgrades through a certification process that is costly
  • Installing a new core means re-testing all their extensions, and hoping they all have fixes to problems introduced. They may feel that they can only afford to install extensions at this time.

This is a sad common scenario in workplace/corporate wikis.

Depending on the amount of work required, you can extend the audience of your extension by making it compatible with older cores. This is especially true of extensions aiming at or catering to Enterprise hub.

What's out there[edit]

Here is a table that attempts to paint a picture of what version branches are most used on public facing mediawikis:

Branch % Branched Age
1.19.x 0.7% since 2011-07-18 2 months ago
1.18.x 0.4% 2011-07-18 2 months ago
1.17.x 14.5% 2010-12-07 10 months ago
1.16.x 60.7% 2010-02-22 1 year 6 months ago
1.15.x 18.2% 2009-03-25 2 years 5 months ago
1.14.x 4.2% 2009-01-07 2 years 8 months ago
1.4.x 1.2% 2004-12-01 7 years 10 months ago

Run on 2011-09-23, sample size of 433 public, patrolled, active wikis. Please note that this does not take into account any intranet wikis (of which there are many and are often out of date), public wikis we've missed or login-only public wikis. It does not include large wiki farms (like wikia) as they tend to upgrade all their wikis at once and run the same software behind the scenes. Their number of wikis may be staggering, but they tend to only run one codebase each and don't often install new 3rd party extensions. It should only be used to give you a rough idea of installations out there.

Looking at the table data, we can see that supporting anything before 1.15 is not that important, the people on 1.4.x will likely never upgrade, but the rest of the world has. But we can see that any extension author really should be seriously considering supporting 1.16.x, it's what the majority of the people are running. 1.19 and 1.18 not being prevalent is not a surprise, they don't have releases yet (but some people can't wait!). Supporting 1.15.x seems like a decent idea looking at numbers alone, but with a release around the corner you can expect a lot of people to "move up one".

It's important to note that the dates used here to give you an idea of "how long ago" was when developers first started preparing the code for that release, not when it was actually released.

Information from s23.org stats. Query for how I got these numbers.

Setting up a sandbox[edit]

Because warnings and errors have changed over PHP versions, a good approach to setting up a sandbox to test your extension is to install multiple version of xampp/lampp that match core versions.

Version information[edit]

Here is a table that attempts to document the likely version of PHP/MySQL to use with which core version. It can be used to document common extension changes to support older cores.

It will also link to hacks you can use to resolve problems to get cores working on newer versions of PHP and MySQL to avoid XAMPP setups. Be aware that if you use a newer version of PHP, your extension may not work in older versions of PHP, even if it works in the older core.

1.19[edit]

MediaWiki Notes, Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.19alpha trunk notes 5.2.3+ stated 4.0+ stated

1.18[edit]

MediaWiki Notes, Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.18 branch notes 2011-07-18 5.2.3+ stated 4.0+ stated Upgrading
1.18.0 tag notes 2011-11-28
1.18.0rc1 tag notes 2011-11-18
1.18.0beta1 tag notes 2011-11-04 5.2.3+ stated 4.0+ stated

1.17[edit]

MediaWiki Notes, Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.17 branch notes 2010-12-07 Upgrading
Downgrading
1.17.1 tag notes 2011-11-28
1.17.0 tag notes 2011-06-22 5.2.3+ stated 4.0+ stated
1.17.0rc-1 tag notes 2011-06-14 5.2.3+ stated 4.0+ stated
1.17.0beta1 tag notes 2011-05-05 5.2.3+ stated 4.0+ stated

1.16[edit]

MediaWiki Notes, Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.16 branch notes 2010-02-22 Upgrading
Downgrading
1.16.5 tag notes 2011-05-05 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.4 tag notes 2011-04-14 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.3 tag notes 2011-04-12 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.2 tag notes 2011-02-01 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.1 tag notes 2011-01-04 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.0 tag notes 2010-07-28 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.0beta3 tag notes 2010-05-28 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.0beta2 tag notes 2010-04-07 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.16.0beta1 tag notes 2010-03-13 5.1 stated, 5.2 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.15[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.15 branch notes 2009-03-25 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x Downgrading
1.15.5 tag notes 2010-07-28 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.15.4 tag notes 2010-05-28 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.15.3 tag notes 2010-04-07 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.15.2 tag notes 2010-03-08 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.15.1 tag notes 2009-07-14 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.15.0 tag notes 2009-06-10 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.15.0rc1 tag notes 2009-05-16 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.14[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.14 branch notes 2009-01-07 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x Run newer
1.14.1 tag notes 2009-07-14 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.14.0 tag notes 2009-02-22 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.14.0rc1 tag notes 2009-02-07 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.13[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.13 branch notes 2008-07-24 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x Upgrading
1.13.5 tag notes 2009-02-22 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.4 tag notes 2009-02-07 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.3 tag notes 2008-12-15 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.2 tag notes 2008-10-02 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.1 tag notes 2008-09-06 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.0 tag notes 2009-07-20 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.0rc2 tag notes 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.13.0rc1 tag notes 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.12[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.12 branch notes 2008-02-18 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x Downgrading
1.12.4 tag notes 2009-02-07 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.12.3 tag notes 2008-12-17 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.12.2 tag notes 2008-12-15 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.12.1 tag notes 2008-10-02 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.12.0 tag notes 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.12.0rc1 tag notes 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.11[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.11 branch notes 2007-09-06 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.11.2 tag notes 2008-03-02 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.11.1 tag notes 2008-01-23 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.11.0 tag notes 2007-09-10 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.11.0rc1 tag notes 5 stated, 5.2 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.10[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.10 branch notes 2007-05-01 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.4 tag notes 2008-03-02 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.3 tag notes 2008-01-23 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.2 tag notes 2007-09-10 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.1 tag notes 2007-07-13 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.0 tag notes 2007-05-09 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.0rc2 tag notes 2007-05-04 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.10.0rc1 tag notes 2007-04-30 5 stated, 5.1 rec, no 5.0 x64, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.9[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.9 branch notes 2007-01-08 5.0+ runs
1.9.6 tag notes 2008-03-02
1.9.5 tag notes 2008-01-23
1.9.4 tag notes 2007-09-10
1.9.3 tag notes 2007-02-20
1.9.2 tag notes 2007-02-04
1.9.1 tag notes 2007-01-24
1.9.0 tag notes 2007-01-10
1.9.0rc2 tag notes
1.9.0rc1 tag notes

1.8[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.8 branch notes 2006-10-11 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.8.5 tag notes 2007-09-10 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.8.4 tag notes 2007-02-20 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.8.3 tag notes 2007-01-09 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.8.2 tag notes 2006-10-13 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.8.1 tag notes 2006-10-11 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.8.0 tag notes 2006-10-10 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.7[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.7 branch notes 2006-07-07 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.7.3 tag notes 2007-02-20 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.7.2 tag notes 2007-01-09 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.7.1 tag notes 2006-07-08 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x
1.7.0 tag notes 2006-07-06 5 stated, 5.1 rec, no 4 4.0 stated, 4.1/5.0 tentative, no 3.23.x

1.6[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.6 branch notes 2006-04-05
1.6.12 tag notes 2009-02-07
1.6.11 tag notes 2008-12-15
1.6.10 tag notes 2007-02-20
1.6.9 tag notes 2007-01-09
1.6.8 tag notes 2006-07-08
1.6.7 tag notes 2006-06-06
1.6.6 tag notes 2006-05-23
1.6.5 tag notes 2006-05-02
1.6.4 tag notes 2006-05-02
1.6.3 tag notes 2006-04-10
1.6.2 tag notes 2006-04-08
1.6.1 tag notes 2006-04-05
1.6.0 tag notes 2006-04-05

1.5[edit]

Release Notes

Version Repo Label Date PHP MySQL Sandboxes RunHacks Extension Changes
1.5 branch, tag notes 2005-08-01
1.5.8 tag notes 2006-03-26
1.5.7 tag notes 2006-03-02
1.5.6 tag notes 2006-01-19
1.5.5 tag notes 2006-01-05
1.5.4 tag notes 2005-12-21
1.5.3 tag notes 2005-12-04
1.5.2 tag notes 2005-11-02
1.5.1 tag notes 2005-10-26
1.5.0 tag notes 2005-10-05
1.5.0rc4 notes 2005-08-29
1.5.0rc3 tag notes 2005-08-24
1.5.0rc2 tag notes 2005-08-23
1.5.0rc1 tag notes
1.5.0beta4 tag notes 2005-07-30
1.5.0beta3 tag notes 2005-07-07
1.5.0beta2 tag notes 2005-07-05
1.5.0beta1 tag notes 2005-06-26
1.5.0alpha2 tag notes 2005-06-03
1.5.0alpha1 tag notes 2005-05-03

1.4[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.4 branch, tag notes 2004-12-01 4.0 stated, 4.1 tricky, 5.0 no
1.4.15 tag notes 2006-03-26
1.4.14 tag notes 2006-01-19
1.4.13 tag notes 2006-01-05
1.4.12 tag notes 2005-11-02
1.4.11 tag notes 2005-10-05
1.4.10 tag notes 2005-09-21
1.4.9 tag notes 2005-08-29
1.4.8 tag notes 2005-08-23
1.4.7 tag notes 2005-07-16
1.4.6 tag notes 2005-07-07
1.4.5 tag notes 2005-06-03
1.4.4 tag notes 2005-05-04
1.4.3 tag notes 2005-04-28
1.4.2 tag notes 2005-04-20
1.4.1 tag notes 2005-04-17 4.0 stated, 4.1 tricky, 5.0 no
1.4.0 tag notes 4.0 stated, 4.1 tricky, 5.0 no
1.4.0rc1 tag notes
1.4.0beta6 tag notes
1.4.0beta5 tag notes
1.4.0beta4 tag notes
1.4.0beta3 tag notes
1.4.0beta2 tag notes
1.4.0beta1 tag notes

1.3[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.3A branch notes 2004-09-22
1.3 branch notes 2004-05-22
1.3.18 tag notes 2005-11-02
1.3.17 tag notes 2005-10-05
1.3.16 tag notes 2005-09-21
1.3.15 tag notes 2005-08-29
1.3.14 tag notes 2005-08-23
1.3.13 tag notes 2005-06-03
1.3.12 tag notes 2005-04-20
1.3.11 tag notes 2005-02-20
1.3.10 tag notes 2005-02-03
1.3.9 tag notes 2004-12-12
1.3.8 tag notes 2004-11-15
1.3.7 tag notes 2004-10-18
1.3.6 tag notes 2004-10-14
1.3.5 tag notes 2004-09-30
1.3.4 tag notes 2004-09-28
1.3.3 tag notes 2004-09-09
1.3.2 tag notes 2004-08-30
1.3.1 tag notes 2004-08-14
1.3.0 tag notes 2004-08-11
1.3.0beta6 tag notes 2004-08-06
1.3.0beta5 tag notes 2004-07-22
1.3.0beta4a tag notes 2004-06-26
1.3.0beta4 tag notes
1.3.0beta3 tag notes 2004-06-12
1.3.0beta2 tag notes 2004-06-05
1.3.0beta1 tag notes 2004-05-21

1.2[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.2 branch notes 2004-02-28
1.2.6 2004-05-24
1.2.5 2004-05-03
1.2.4 2004-04-13
1.2.3 2004-04-02
1.2.2 2004-03-28
1.2.1 2004-03-27
1.2.0 2004-03-24

1.1[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
1.1 branch notes 2003-12-08
1.1 2003-12-08

Pre 1.1[edit]

Release Notes

Version Repo Notes Date PHP MySQL Sandboxes RunHacks Extension Changes
2003-11-18 notes 2003-11-18
2003-11-17 notes 2003-11-17
2003-11-07 notes 2003-11-07
2003-08-29 notes 2003-08-29
2002-06-25beta tag notes 2002-06-25 4.06+, 4.2.1 3.23+, 3.23.49
2002-07-11rc1 tag notes 2002-06-25 4.06+, 4.2.1 3.23+, 3.23.49

Common problems[edit]

PHP compatibility[edit]

Internal changes in PHP sometimes cause code that used to work to stop working on newer versions of PHP. New versions of MediaWiki tend to update to work around this, but if you have an old version, you may run into surprises!

  • reference errors, especially on PHP 5.3 and later
    • Usually these can be resolved by removing one or more '&'s from a function declaration -- you may have to alter the extension to match the calls made in core

Character set problems[edit]

Updating from older to newer versions of MediaWiki occasionally ends up with problems relating to character encoding / collation settings on tables.

  • how to resolve this?