Three lines in .travis.yml. That is the whole cost of knowing in July what will break on PHP 7 in December.
php:
- 5.6
- nightly
matrix:
allow_failures:
- php: nightly
Alpha builds are out, release is planned for this autumn, and production is on 5.6 and will stay there for a while. The build stays green on 5.6. The nightly job fails quietly in the corner and produces a list of future problems while nobody is under pressure to read it.
Ours came back with about thirty. Sorting them was more useful than fixing them.
Part of the list is language. PHP 4 style constructors are deprecated, and Kohana-era code is full of classes where the constructor carries the class name. Part is extensions: ext/mysql is gone, every mysql_* call dies, and that alone is a small project. Then the framework itself, which for us means patching our own copy of Kohana. Then third-party libraries, where you file an issue upstream and wait.
Each group has a different owner and a different deadline. A constructor rename is an afternoon. An abandoned library may be forever, and it is much better to learn that in July than in December.
Nobody asks to run 7 in production this year. But when it ships and the benchmarks make management curious, there are two possible answers. “We need three months just to assess.” Or “here is the list, half is already done.”
Half of ours is done. The other half is waiting on people I have never met.