Because of course /buildmenu took users away from regular Natural Selection servers, resulting in a holy war dynamic: https://gwern.net/holy-war
>The enduring phenomenon of ‘holy wars’ in computing, such as the bitterness around the prolonged Python 2 to Python 3 migration, is not due to mere pettiness or love of conflict, but because they are a coordination problem: dominant platforms enjoy strong network effects, such as reduced ‘bitrot’ as it is regularly used & maintained by many users, and can inflict a mirror-image ‘bitcreep’ on other platforms which gradually are neglected and begin to bitrot because of the dominant platform.
>The outright negative effect of bitcreep mean that holdouts do not just cost early adopters the possible network effects, they also greatly reduce the value of a given thing, and may cause the early adopters to be actually worse off and more miserable on a daily basis. Given the extent to which holdouts have benefited from the community, holdout behavior is perceived as parasitic and immoral behavior by adopters, while holdouts in turn deny any moral obligation and resent the methods that adopters use to increase adoption (such as, in the absence of formal controls, informal ones like bullying).
The trouble with the Python 2 => 3 transition is just how much work it imposed on everyone in the ecosystem, and the general lack of care for backwards / forwards compatibility in the ecosystem - the fact you need something like "virtualenv" at all is damning in itself, out of the major stacks only NodeJS requires similar hacks (e.g. nvm).
The PHP world, for example, is very famous for its focus on compatibility: breaking changes are generally announced far before they are released, and the amount of actually breaking changes is very very small - out of my mind, the only thing that really bit a lot of very old code was the removal of implicitly provided global variables and the mysql legacy functions, which by that point were deprecated for like a decade and in many cases could be resolved by more-or-less simple search and replace runs. Other than that, a lot of legacy code works fine or with similarly minor modifications in PHP 8 - while the runtime itself is capable of running code with syntax features of the modern world.
The 8 series has made a lot of little changes that are currently deprecations but if converted to errors as promised in 9 will be the end for lots of legacy code without changes: most of the standard library not taking null arguments where it used to, changed/added typehinting for the standard classes affecting anything that extends/implements them, and disallowing dynamic properties on objects are some big ones that come to mind.
Once 9 makes some of this mandatory it'll also be much more difficult for a single codebase to work across a wide range of PHP versions. That's possibly even an explicit goal: forcing narrower support from applications and libraries will prod more hosts and end-users to update.
Not that these are bad changes, but that the philosophy of extreme compatibility really isn't in force anymore. It's not a Python 2/3 scenario but a gradual constant shift.
Most of the PHP haters haven't worked with PHP since the 5.x days. PHP 7 started to reverse the trend and PHP 8 together with a decent IDE is on-par with Java.
>The enduring phenomenon of ‘holy wars’ in computing, such as the bitterness around the prolonged Python 2 to Python 3 migration, is not due to mere pettiness or love of conflict, but because they are a coordination problem: dominant platforms enjoy strong network effects, such as reduced ‘bitrot’ as it is regularly used & maintained by many users, and can inflict a mirror-image ‘bitcreep’ on other platforms which gradually are neglected and begin to bitrot because of the dominant platform.
>The outright negative effect of bitcreep mean that holdouts do not just cost early adopters the possible network effects, they also greatly reduce the value of a given thing, and may cause the early adopters to be actually worse off and more miserable on a daily basis. Given the extent to which holdouts have benefited from the community, holdout behavior is perceived as parasitic and immoral behavior by adopters, while holdouts in turn deny any moral obligation and resent the methods that adopters use to increase adoption (such as, in the absence of formal controls, informal ones like bullying).