Drupal, which may be the 2nd most popular content management system after WordPress according to these stats, is now at version 9.2. Version 7.0 was released 11 years ago but when 8.0 was being developed (it was released in 2015) the team decided that there there were so many key improvements, including mobile-first design, multi-language support and HTML 5 forms, that in-place upgrade from 7.0 was too hard. In addition, some modules (used to extend Drupal) had no Drupal 8 version. Read all about the migration story here. It is not trivial.
From 8 on, the team promised, compatibility would be preserved so that upgrades would be easier.
What happened? Did every Drupal 7 site migrate to version 8 in order to enjoy the new features and promised future upgrade path?
No. Last month the team confessed that “a majority of all sites in the Drupal project are still on Drupal 7.” The date for ending support for Drupal 7 keeps getting pushed back and is now November 1 2023, but to be reviewed annually. “We will announce by July 2023 whether we will extend Drupal 7 community support an additional year,” said the post.
While this is good news in one sense for Drupal 7 site maintainers, it is not good news for the Drupal project. Having more than half Drupal sites on what is now an ancient version is unhealthy and maintaining it is a distraction.
Should the team have compromised the improvements in Drupal 8 for the sake of compatibility? It is imponderable but underlines a general truth in software development: breaking compatibility in major ways is expensive and can only be worth it if the benefits are correspondingly huge.
Another example that come to mind is Visual Basic .NET which was incompatible with Visual Basic 6.0 and in consequence there are many VB 6.0 applications still out there, that have never been upgraded.
Python 2 is another example.
What this also means is that time invested in making upgrade easy, or preserving compatibility in a widely-used project, may seem unrewarding but has a big payback.