Major version updates are just removing deprecated code

Today, I've been watching the new Upgrading & What's in Symfony 7 video course on SymfonyCasts.

The first video - recent podcast guest Ryan Weaver - explains how Symfony's release cycle works.

New feature releases that contain new features are every six months.

Along with the x.4 release - such as Symfony 6,4 - there is also a new major release - in this case, Symfony 7.

They are essentially identical, except for code that was deprecated in Symfony 6, which has been removed.

So, updating from Symfony 6.4 to 7 means you just need to remove any deprecated code from your application and make it work in the Symfony 7 way.

This is also how Drupal releases new versions, too.

New releases, like Layout Builder, are added in minor versions like 8.1, and Drupal 9 is Drupal 8 without its deprecated code.

Because the code in major versions is so similar, contributed modules and themes can support multiple major versions at the same time.

Here's the thing

When upgrading projects from Drupal 8 to 9 and 9 to 10, the majority of the work can be done beforehand by keeping up to date with module releases and updating custom code to remove any deprecations.

This means the upgrade can be split over several weeks or months to reduce the risk.

Then, finally, you just update to the next major version.

All the hard work has already been done.