Skip to content

Instantly share code, notes, and snippets.

@Danack
Last active May 5, 2020 13:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Danack/d86e908d70c3db6aa70c2ab6a3eabed7 to your computer and use it in GitHub Desktop.
Save Danack/d86e908d70c3db6aa70c2ab6a3eabed7 to your computer and use it in GitHub Desktop.
novel length response.

PHP 7.4 support lifecycle

There is one major inaccuracy in the article PHP showing its maturity in release 7.4. In particular, the part "PHP is likely to continue with releases in the 7.x branch, adding incremental improvements,".

That is not the case.

There is no 7.5 planned, and currently the support plans for PHP 7.4 are:

  • Active Support until 28 Nov 2021
  • Security Support until 28 Nov 2022

From now, that is:

  • 1 year, 6 months
  • 2 years, 6 months

respectively.

This is a relatively short time compared to other software languages.

The thing that balances this out imo, is that the PHP project also takes greater care than typically done to maintain backwards-compatbility. Although there will be some deliberate breaks (and some accidental ones) in the PHP 8 release, the vast majority of projects will be able to upgrade with much less effort than, for example, upgrading from ANSI C to C99, or definitely less work than Python 2.x to 3.x

Not only is the work less than compared to other languages, we also have some better tools for upgrades than other languages.

Rector is a good example. https://getrector.org/ It is an automated refactoring tool that understands PHP code, and has plugin based rules for how code should be refactored. When a PHP version is released, some Rector rules are written that:

  • understands which bits of the code are subject to a BC break
  • how to refactor those bits into equivalent code that works on the new version, or when possible into a version that works on both versions.
  • gives an error for parts it can't refactor.

More info about Rector:
Text form: https://www.tomasvotruba.com/blog/2018/02/19/rector-part-1-what-and-how/
Video form: https://www.youtube.com/watch?v=S6fg7sJfh20
Home: https://getrector.org/

The PHP ecosystem has also seen a rapid improvement in the static code analyzers that are available to PHP users:

https://phpstan.org/ https://psalm.dev/
https://github.com/phan/phan
https://github.com/Roave/BackwardCompatibilityCheck

Sometimes healthy competition is better than projects working together. But I digress, back to the matter of the short time period of PHP 7.4 support.

In my opinion, the main reason for the short support lifetime, is the limited amount of people who are able and willing to work on maintaining PHP. This is not just a lack of volunteers, it's also a communications problem in scaling how many people can work on core PHP. The current communication methods aren't working that well for various reasons.

Rather than waiting until just before the end of support for PHP 7.4, if any group could be found or formed now, having a discussion about the possibility of providing an LTS version of PHP 7.4 separate to the current core maintainers would be a lot easier to do over the next 18 months, rather than in the few weeks when people become more aware of the deadline.

My own prediction is that a LTS version is unlikely to happen, and instead people will just moan and whinge about how "PHP maintainers don't work hard enough" and "they need to contribute more of their own free time" to a project that they already provide huge amount of value to. But then I am quite cynical about the energy people who work at companies will spend on emotional blackmail to get their way, instead of funding open source projects for the software their business relies on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment