Ну в совместимости нет ничего плохого. В том же foobar2000 у меня есть пара плагинов, которые 10+ лет заброшены авторами, но исправно работают, так как автор плеера заботится о совместимости. Только у UI Hacks есть проблемы, и то только потому что он использует много низкоуровневых недокументированных вещей, и должен был со временем сломаться. Хотя нужные мне функции из UI Hacks работают и в последнем foobar2000 v1.6.2 =)
Да, в foobar2000 есть отдельная поддержка легаси API. Например, для одного из древних (и отлично до сих пор работающих) плагинов он выдаёт такое предупреждение, так как плагин использует API времён до foobar2000 v1.0:
И да, стоит заметить, что сам foobar2000 построен вокруг API родом из 90-х, который в свою очередь был построен с оглядкой на относительную совместимость на уровне исходных кодов с кодом из конца 80-х. А если мы ещё вспомним, что всё это так или иначе завязано на C, который вообще родом из 70-х...
Добавлено спустя 1 час 22 минуты:По теме PHP. В PHP7+ удалили несколько устаревших вещей, которые при небрежном использовании могли привести к уязвимости. С точки зрения кода самого PHP поддерживать их не было большой проблемой, там на самом деле мелочи с точки зрения кода. Разработчики PHP просто хотели таким образом подтолкнуть остальных переписать те части, которые написаны небезопасным (старым) образом. Но, с другой стороны, это на 5 лет оставило наш форум на неподдерживаемой версии PHP 5.6, так как на переход на PHP 7+ нужно было потратить несколько суток, и не было достаточно мотивации и времени этим заниматься (при том что я время от времени уделяю внимание паре десятков разных проектов).
Основное что мешало — это удалённая поддержка флага e (eval) в preg_replace. В phpBB парсинг BBCode был сильно завязан на использование этого флага, нужно было много переделывать. Я на полном серьёзе рассматривал вариант взять последний PHP, вернуть назад поддержку этого флага, и использовать свою кастомную версию PHP таким образом. Но в итоге всё-таки доработал код движка на новый лад, чтобы не только я мог пользоваться этим движком на последнем PHP =)
Если бы они сломали совместимость на порядок сильнее, а не в мелочах, то скорее всего это привело бы к тому, что старый PHP кто-нибудь форкнул и стал бы развивать отдельно. Это как с Perl 5 и Perl 6, где последний настолько ушёл от Perl 5, что Perl 6 начали считать отдельным языком, и переименовали его в Raku, чтобы не путаться.