@Gilles @Krinkle Based on the work that you've been doing with NavTiming over the last few months, is this something that would be easy to do? (Either add a header to the response that specifies whether the page in question was served by PHP7/HHVM, or reading the cookie that we'll be setting on the client side to direct people to the A/B group.)
|Stalled||None||T216734 Drop devDependency on phpunit-mock-objects, which is abandoned and warns against use|
|Stalled||None||T216735 Drop support for PHPUnit 6.x|
|Stalled||None||T192167 Drop support for PHPUnit 4.x|
|Stalled||None||T196206 Bump symfony libraries when we no longer need hhvm support|
|Open||None||T220589 Support phan in MediaWiki's default composer.json|
|Open||None||T192166 Drop HHVM support from MediaWiki|
|Open||None||T176370 Migrate to PHP 7 in WMF production|
|Open||None||T211906 Expose PHP7/HHVM to NavTiming in a header, send with navtiming beacon so we can use it as a dimension|
If there's already a cookie planned to enable that, I think that's the easiest thing to use here. Server-Timing has limited cross-browser support at this point: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing
During the HHVM rollout, mw.config.get( 'wgPoweredByHHVM' ) would tell you if the page was being rendered via HHVM or not: rEWMV973c7340e75f: Inject 'wgPoweredByHHVM' JS config var if powered by HHVM
The application server layer https://gerrit.wikimedia.org/r/plugins/gitiles/operations/puppet/+/production/modules/mediawiki/templates/apache/mediawiki-vhost.conf.erb#14, and the caching layer https://gerrit.wikimedia.org/r/c/operations/puppet/+/478680/6/modules/varnish/templates/text-frontend.inc.vcl.erb are set to recognize the cookie PHP_ENGINE and send traffic to php-fpm if the value is php7.
Responses from php and hhvm can be told apart from their X-Powered-By header too.