Problem/Motivation
Drupal 9 allows us to remove deprecated code and backwards compatibility layers.
However, we also want Drupal 8 modules to be able to run on both Drupal 8 and Drupal 9 per #2822727: [policy, no patch] Adopt a continuous API upgrade path for major version changes and make the transition between releases as smooth as possible.
This means that if (version numbers are examples only) 8.10.0 and 9.0.0 are released on the same day, that would be no window for Drupal 8 modules to update for new deprecations introduced in 8.10.0 that are removed in 9.0.0.
Proposed resolution
If 8.10.0 and 9.0.0 are released on the same day, only remove deprecations and backwards compatibility layers added in Drupal 8.8.0 or earlier.
We may have to make exceptions for Symfony or Twig backwards compatibility breaks, since we can't update for those major versions until we actually release Drupal 9, although we could also aim to document these in advance too if possible.
Advantages: any module that is up-to-date with 8.8.0 by the time 8.10.0 is released a year later will have a good chance of working on 9.0.0 too.
Disadvantages: one year's worth of deprecated code that could have been released in 9.0.0 will need to be supported until 9.x's end of life.
Remaining tasks
Document this as a policy if it's agreed. Once we are a year in front of the Drupal 9.0.0 release, start marking deprecations for removal in 10.0.0
Comments
Comment #2
catchHmm we need to do this in an 8.x release, so moving back.
Comment #3
xjmMajor I think.
Comment #4
plachMaybe we could remove code deprecated in 8.9.0 and 8.10.0 in 9.2.0? This would give contrib authors one full year to make sure their modules are 9.x compliant. I guess this would be feasible if we adjusted our BC policy to reflect that. And given that we aim to make the 8.9.0 -> 9.0.0 transition as smooth as the 8.9.0 -> 8.10.0 one, I guess it would be reasonable to expect that a 9.1.0 -> 9.2.0 transition, where only one year's worth of deprecated code is removed, would be at least equally smooth.
Comment #15
catch#3410492: Defer disruptive 10.3 deprecations for removal until 12.0 duplicates this but is more up-to-date.