Wikimedia Technology/Annual Plans/FY2019/TEC4: PHP7 Migration

We've decided to migrate the PHP technology stack that the WMF uses to PHP7.

Our current runtime environment, HHVM, has served us well; however, the developers of HHVM have decided that they will not be maintaining PHP language compatibility going forward (https://hhvm.com/blog/2017/09/18/the-future-of-hhvm.html), and will not be providing security updates to the current versions that we use in production past the end of 2018. Given this, and given that Zend's PHP7 runtime shows performance that is equivalent to (or better than) HHVM in most circumstances, moving to that runtime environment makes more sense for us.

This program encompasses the work that's needed to accomplish that.

Teams contributing to the program

 * Performance (migration of performance monitoring tooling to versions that support PHP7;
 * SRE / {Service Operations, Traffic} (Server provisioning/reprovisioning in order to install an OS version that includes PHP7; preparation and/or review of puppet patches to install/configure PHP7 packages and runtimes, Edge routing between runtimes based on Cookie)
 * Security (Currently unknown need for security review)
 * MediaWiki Platform (Currently unknown need to remediate issues found with PHP7 compatibility within MediaWiki)

Annual Plan priorities
Primary Goal: 3. Knowledge as a Service - evolve our systems and structures

How does your program affect annual plan priority?
Moving the WMF production environment to a more-current PHP runtime will allow us to continue to receive security updates and to operate our systems in a safe, supported manner. Moving to PHP7 will also allow us to drop PHP5 support in a later MediaWiki release, and by doing so enable the use of potentially powerful new language features.

Program Goal

 * At the conclusion of this program, Zend PHP7 will be the only PHP runtime supported or used in the Wikimedia Foundation production environment.


 * Outcome 1
 * Zend PHP7 is the only PHP runtime in use in the WMF environment


 * Output 1.1
 * All servers that run PHP code have been updated to Debian 9 ("Stretch"). (Note: this is expected to be done by the end of FY17-18, but is included as an Output here for both completeness, and in recognition of the fact that some non-MediaWiki PHP applications may have different migration schedules from the MediaWiki fleet.)


 * Output 1.2
 * All wikis, including wikitech/office/etc, are being run under the Zend PHP7 runtime.


 * Output 1.3
 * All scheduled jobs are being run under the Zend PHP7 runtime.


 * Output 1.4
 * All secondary services related to serving the wikis are being run under the Zend PHP7 runtime.


 * Output 1.5
 * All non-MediaWiki PHP services are being run under the Zend PHP7 runtime.

Outcome 1

 * Zend PHP7 is the only PHP runtime in use in the WMF production environment


 * Target
 * 100% of wikis are running using the Zend PHP7 runtime
 * 100% of scheduled jobs and auxiliary services are using the Zend PHP7 runtime
 * 100% of non-MediaWiki PHP applications in production are using the Zend PHP7 runtime


 * Measurement method
 * 1) Audit of puppet to ensure that no reference is made to other PHP runtimes
 * 2) Manual audit to ensure that no services have snuck through the cracks

Dependencies
n/a