This will track the migration of production MediaWiki workloads to PHP 8.3, including both traffic-serving and batch workloads.
We will use a similar procedure as previously employed for the PHP 8.1 migration (T383845).
Preparation:
- Switch all MediaWiki "next" and "migration" releases to PHP 8.3.
- Enable PHP_ENGINE cookie-based routing at ATS.
- Support selection of PHP 8.3 in mwscript-k8s.
- Capacity right-sizing for multi-DC serving following the September 2025 DC switchover.
- Introduce support for PHP_ENGINE cookie-based routing in rest-gateway -- See T405955#11262893.
Status:
Last update: 2025-11-12
Milestones:
- 2025-11-03: Maintenance scripts launched with the mwscript-k8s command run on PHP 8.3 by default, with optional fallback to 8.1 via the --php_version flag (T405955#11337323).
- 2025-11-03: 100% of eligible clients are enrolled in serving on PHP 8.3 for external web and API traffic (T405955#11337323).
- 2025-11-04: 100% of internal API (mw-api-int) and jobrunner (mw-jobrunner) traffic is served on PHP 8.3 (T405955#11342091).
- 2025-11-05: 100% of remaining (i.e., not rest-gateway routed) Parsoid endpoints (mw-parsoid) traffic is served on PHP 8.3 (T405955#11346217).
- 2025-11-05: noc.wikimedia.org (mw-misc) is served on PHP 8.3 (T405955#11347417).
- 2025-11-06: www.wikifunctions.org (mw-wikifunctions) is served on PHP 8.3 (T405955#11351097).
- 2025-11-10: video transcoding jobs (mw-videoscaler) are running on PHP 8.3 (T405955#11360350).
- 2025-11-10: periodic maintenance jobs (mw-cron) are running on PHP 8.3 (T405955#11360350).
- 2025-11-12: 100% of residual external web and API traffic (i.e., not cookie-enrolled) is served on PHP 8.3 (T405955#11368240).
Rollback:
N/A
Schedule:
The migration will span 3-4 consecutive calendar weeks, using an accelerated version of the fairly conservative schedule used during the 8.1 migration.
What follows is the tentative schedule, and is subject to change in the event that issues are encountered (e.g., may be paused or reverted). In general, migration increments will follow a progressive exponential ramp over successive production-affecting days of the week (Monday though Thursday).
The following will be updated as the migration progresses.
Week 1 -- Larger traffic-serving workloads begin pilot. (Week of 20th of October)
- mw-api-ext (cookie) : 0 -> 1%
- mw-web (cookie) : 0 -> 1%
Week 2 -- Larger traffic-serving workloads continue, with cookie-based external- and capacity-based internal-traffic migrations staggered. (Week of 27th of October)
- mw-api-ext (cookie) : 1 -> 50%
- mw-api-int : 0 -> 25%
- mw-jobrunner : 0 -> 25%
- mw-web (cookie) : 1 -> 50%
Week 3 -- Larger traffic-serving workloads continue, completing with the exception of residual external traffic. Smaller traffic-serving workloads switch. Batch workloads start. (Week of 3rd of November)
- mw-api-ext (cookie) : 50 -> 100%
- mw-api-ext (residual) : 0 -> 25% (Note: This only starts after cookie-based traffic enrollment reaches 100%)
- mw-api-int : 25 -> 100%
- mw-jobrunner : 25 -> 100%
- mw-misc : 100% (Flag-day)
- mw-parsoid : 100% (Flag-day) (Note: mw-parsoid now receives insufficient traffic for an incremental migration to make sense)
- mw-script : Default to 8.3 (Note: 8.1 remains available via --php_version)
- mw-web (cookie) : 50 -> 100%
- mw-web (residual) : 0 -> 25% (Note: This only starts after cookie-based traffic enrollment reaches 100%)
- mw-wikifunctions : 100% (Flag-day)
Week 4 -- Larger traffic-serving workloads complete. Batch workloads complete. (Week of 10th of November)
- mw-api-ext (residual) : 25 - 100%
- mw-cron : Default to 8.3 (Note: 8.1 remains available for manual re-runs via mwscript-k8s, and possibly via helmfile override)
- mw-web (residual) : 25 - 100%
- mw-experimental : 100% (Note: We can push this earlier if there is sufficient interest)
- mw-videoscaler : 100% (Flag-day)
- mediawiki-dumps-legacy: 100% (Flag-day)
Cleanup:
- Scale down migration releases.
- Unwind PHP_ENGINE-based routing-to-next and scale down next releases.
- Unwind PHP_ENGINE cookie enrollment.
- Use 8.3 images in scap when running maintenance scripts.
- Switch deployment hosts to PHP 8.3 (e.g., for non-scap local mwscript usage)
- Remove support for 8.1 falback in mwscript-k8s.
- Use 8.3 MediaWiki debug images in mw-debug's pinkunicorn release (shortly before the next item).
- Stop building PHP 8.1 MediaWiki images (T405955#11406998).