T278139: Drop PHP 7.3 support in MediaWiki when appropriate | T358666: Drop PHP 8.1 support from MediaWiki
This is a placeholder task for when this work happens, so that other tasks can depend upon it.
T278139: Drop PHP 7.3 support in MediaWiki when appropriate | T358666: Drop PHP 8.1 support from MediaWiki
This is a placeholder task for when this work happens, so that other tasks can depend upon it.
| Status | Subtype | Assigned | Task | |
|---|---|---|---|---|
| · · · | ||||
| Resolved | Reedy | T338103 Micro-optimize ApiResult::isMetadataKey with str_starts_with once we support PHP8+ | ||
| Resolved | Reedy | T373753 Drop symfony/polyfill-php 73-81 from mediawiki-vendor | ||
| Resolved | seanleong-WMDE | T379930 Use WeakMap instead of an array in RestrictedEntityLookupFactory | ||
| Stalled | None | T334726 Use return type `never` in Wikibase | ||
| Open | None | T328919 Upgrade PHPUnit in MediaWiki code to PHPUnit 10 | ||
| Resolved | Reedy | T378424 PHP 8.4: Implicitly nullable parameter declarations deprecated in qrcode vendor libs | ||
| Resolved | Jdforrester-WMF | T319055 Upgrade to psr/container 2.x | ||
| Resolved | Jdforrester-WMF | T328921 Drop PHP 7.4 and PHP 8.0 support from MediaWiki | ||
| Resolved | Krinkle | T319432 Migrate WMF production from PHP 7.4 to PHP 8.1 | ||
| Resolved | Jdforrester-WMF | T359868 Drop PHP 7.4 and 8.0 support from MediaWiki 1.42; require PHP 8.1+ | ||
| · · · |
Change #1127083 had a related patch set uploaded (by Jforrester; author: Jforrester):
[integration/config@master] [DNM] Zuul: Drop all PHP 7.4 testing for MediaWiki things
Change #1128015 had a related patch set uploaded (by Jforrester; author: Jforrester):
[mediawiki/core@master] Drop PHP 7.4/8.0 support from master (already dropped from release branches
Change #1128016 had a related patch set uploaded (by Krinkle; author: Jforrester):
[mediawiki/core@master] Drop various PHP 7.4/8.0 support hacks, no longer needed
Mentioned in SAL (#wikimedia-releng) [2025-05-13T19:27:02Z] <James_F> Zuul: Upgrade all Quibble 'apitests' jobs from 7.4 to 8.1, for T386691, T328921, T328922
I have a dummy question to ask: once we get the green light from the ServiceOps team to proceed with the deprecation of PHP7.4, what's the effort for the work needed to proceed? Is it possible to measure how many weeks are needed to complete the work?
I'm interested in knowing it so I can make an assessment on the MW Release 1.44 timeline. cc/ @Krinkle and @Jdforrester-WMF
Which work, exactly?
Your follow-up question below suggests you mean just the actual dropping of active PHP 7.4/8.0 support, which is already done in REL1_44 (like with REL1_43 and REL1_42).
The wider work of unwinding large parts of CI and other support will take a fair bit longer, but most of the obvious patches are already written and waiting to go.
Then there's the work that's blocked on this work (see the task tree), which potentially gets quite large, but I don't think any of that is in scope for this work.
I'm interested in knowing it so I can make an assessment on the MW Release 1.44 timeline. cc/ @Krinkle and @Jdforrester-WMF
I don't see how this is relevant to the 1.44 release timeline. PHP 7.4 and 8.0 support were dropped in MW 1.42, with a special hack in master to "temporarily" support it for Wikimedia production, and that remains the case.
Change #1147822 had a related patch set uploaded (by Krinkle; author: Krinkle):
[mediawiki/vendor@master] build: Switch local image from composer-php74 to composer-php81
I believe Mateus, by proxy of me, is operating on the assumption that the "backwards cherry-pick" that we applied to MW 1.42 and MW 1.43 (i.e. the dropping of 7.4 and 8.0 support, which is a patch we kind of backported to those two REL branches, but hasn't landed in the master branch yet), is something we prefer not to repeat for the MW 1.44 release. Instead, we're aiming to upgrade "for real" this release cycle, as per the OKR/Hypothesis for the MW release cycle and PHP upgrade to align.
In addition to the literal "drop support" patch, given that we aim to the upgrade "for real" this time, it also means we can (without diverging prod from release, and without releasing code we haven't deployed at scale) finally unblock all other changes we've been holding back for a while; such as overdue upgrades to Composer library dependencies that we are running on EOL versions due to latest versions requiring PHP 8.
Change #1127093 had a related patch set uploaded (by Krinkle; author: Jforrester):
[integration/config@master] Zuul: [integration/quibble] Stop testing in PHP 7.4
Change #1127117 had a related patch set uploaded (by Krinkle; author: Jforrester):
[integration/config@master] Docker: Provide quibble-bullseye-php81-coverage
Change #1127118 had a related patch set uploaded (by Krinkle; author: Jforrester):
[integration/config@master] jjb: Migrate jobs silently using PHP 7.4 to 8.1
Change #1127118 merged by jenkins-bot:
[integration/config@master] jjb: Migrate jobs silently using PHP 7.4 to 8.1
Oh, right; that assumption isn't correct, the fix already landed in REL1_44 two weeks ago. https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1143077
Instead, we're aiming to upgrade "for real" this release cycle, as per the OKR/Hypothesis for the MW release cycle and PHP upgrade to align.
"This cycle" is now REL1_45, as the REL1_44 cut has already happened and SRE still aren't in a place for us to do this (and may well not be for weeks yet). We can't hold back rc.0/etc. on the off-chance that Wikimedia prod will finally be ready.
Change #1147822 merged by jenkins-bot:
[mediawiki/vendor@master] build: Switch local image from composer-php74 to composer-php81
Change #1148890 had a related patch set uploaded (by Krinkle; author: Krinkle):
[mediawiki/extensions/DonationInterface@master] build: Allow either monolog 2.x or monolog 3.x to be used
Change #1148890 merged by jenkins-bot:
[mediawiki/extensions/DonationInterface@master] build: Allow either monolog 2.x or monolog 3.x to be used
Change #1127083 merged by jenkins-bot:
[integration/config@master] Zuul: Drop all PHP 7.4 testing for MediaWiki things
Mentioned in SAL (#wikimedia-releng) [2025-06-05T16:09:32Z] <James_F> Zuul: Drop all PHP 7.4 testing for MediaWiki things, for T328921 and T328922
Change #1127093 merged by jenkins-bot:
[integration/config@master] Zuul: [integration/quibble] Stop testing in PHP 7.4
Mentioned in SAL (#wikimedia-releng) [2025-06-05T16:26:26Z] <James_F> Zuul: [integration/quibble] Stop testing in PHP 7.4, for T328921 and T328922
Change #1128015 merged by jenkins-bot:
[mediawiki/core@master] Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42)
Change #1154237 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/EntitySchema@master] Bump secondary CI from PHP 7.4 to 8.1
Change #1154239 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/Wikibase@master] Bump secondary CI from PHP 7.4 to 8.1
Change #1154239 abandoned by Lucas Werkmeister (WMDE):
[mediawiki/extensions/Wikibase@master] Bump secondary CI from PHP 7.4 to 8.1
Reason:
dupe of I0796e7f9f2
Change #1154237 merged by jenkins-bot:
[mediawiki/extensions/EntitySchema@master] Bump secondary CI from PHP 7.4 to 8.1
Change #1154325 had a related patch set uploaded (by Daimona Eaytoy; author: Daimona Eaytoy):
[mediawiki/core@master] Update phan stubs for PHP 8.1
Change #1154327 had a related patch set uploaded (by Daimona Eaytoy; author: Daimona Eaytoy):
[mediawiki/tools/phan@master] Bump minimum target PHP version to 8.1
Change #1128016 merged by jenkins-bot:
[mediawiki/core@master] Drop various PHP 7.4/8.0 support hacks, no longer needed
Change #1154327 merged by jenkins-bot:
[mediawiki/tools/phan@master] Bump minimum target PHP version to 8.1
Change #1154325 merged by jenkins-bot:
[mediawiki/core@master] Update phan stubs for PHP 8.1
Change #1154397 had a related patch set uploaded (by Reedy; author: Reedy):
[mediawiki/vendor@master] composer.json: Bump to php >= 8.1.0
Change #1154397 merged by jenkins-bot:
[mediawiki/vendor@master] composer.json: Bump to php >= 8.1.0
Change #1159372 had a related patch set uploaded (by Reedy; author: Reedy):
[mediawiki/vendor@REL1_44] composer.json: Bump to php >= 8.1.0
Change #1159375 had a related patch set uploaded (by Reedy; author: Reedy):
[mediawiki/vendor@REL1_43] composer.json: Bump to php >= 8.1.0
Change #1159372 merged by Reedy:
[mediawiki/vendor@REL1_44] composer.json: Bump to php >= 8.1.0
Change #1159375 merged by Reedy:
[mediawiki/vendor@REL1_43] composer.json: Bump to php >= 8.1.0
Change #1160713 had a related patch set uploaded (by Reedy; author: Jforrester):
[mediawiki/core@REL1_43] Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42)
Change #1160716 had a related patch set uploaded (by Reedy; author: Jforrester):
[mediawiki/core@REL1_44] Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42)
Change #1160716 merged by jenkins-bot:
[mediawiki/core@REL1_44] Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42)
Change #1160713 merged by jenkins-bot:
[mediawiki/core@REL1_43] Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42)
Change #1199257 had a related patch set uploaded (by Reedy; author: Krinkle):
[mediawiki/vendor@REL1_44] build: Switch local image from composer-php74 to composer-php81
Change #1199259 had a related patch set uploaded (by Reedy; author: Krinkle):
[mediawiki/vendor@REL1_43] build: Switch local image from composer-php74 to composer-php81
Change #1199259 merged by Reedy:
[mediawiki/vendor@REL1_43] build: Switch local image from composer-php74 to composer-php81
Change #1199257 merged by Reedy:
[mediawiki/vendor@REL1_44] build: Switch local image from composer-php74 to composer-php81