Problem/Motivation

Part of #2550249: [meta] Document @internal APIs both explicitly in phpdoc and implicitly in d.o documentation.

In general, we do not backport internal refactorings or API additions to stable releases (i.e., they are allowed in minor releases, but not patch releases). Internal refactorings are occasionally allowed at committer discretion (mainly to keep the branches from diverging, if it is non-disruptive and low-risk). API additions can be made in patch releases for experimental modules, but not stable code, for compliance with semver and because they have a small risk of disrupting stable code through method name collisions (etc.).

However, the testing framework is a bit of a special case, because (as far as I know) the testing infrastructure only allows contrib test suites to run against one core branch, which at present cannot even be configured per project. On the other hand, backporting changes to 8.1.x can also be disruptive, if tests that were passing suddenly start failing. https://www.drupal.org/node/2696421 is the infrastructure policy about testing targets, but I believe it describes an end goal rather than the current implementation.

https://www.drupal.org/core/d8-bc-policy considers the testing framework public API:

The contents of automated tests provided by core modules are never considered part of the API. While the testing framework itself may be treated as an API individual test classes are always internal.

There is also an interesting case with the new testing API, in BrowserTestBase and JavaScriptTestBase. BTB was added late in the 8.0.x cycle as an exception to beta restrictions. JSTB was added as a priority feature for 8.1.x. Both APIs are still under active development. Neither, however, are considered experimental -- and we don't have a way to mark non-modules experimental anyway. On the other hand, converting core's test suite to rely on experimental code would also give me pause, so we should consider what we actually think the stability of those APIs is.

Proposed resolution

  • Discuss and document best practices for backporting test changes.
  • Clarify the "experimentalness" (or not) of BTB and JSTB.

Comments

xjm created an issue. See original summary.

xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
dawehner’s picture

https://www.drupal.org/node/2735005#comment-11444659 has some arguments which could be taken into account:

I'm all for not backporting actual test changes, this is not adding that much value.

Backporting test framework changes though have a couple of big advantages:

  • People more likely will see those improvements and leverage it as part of their daily workflow
  • Contrib authors potentially have less of an issue to keep their tests working on the two current important branches of core
daffie’s picture

I have a problem with this. And let me explain why. I think that it is wrong to have test exceptions for specific databases is regular tests.
They should be moved to their proper location and that is with their database driver. Maybe this sounds a bit vague and let me more clear with an example. Now we have:

namespace Drupal\KernelTests\Core\Entity;

class EntityDefinitionUpdateTest extends EntityKernelTestBase {
  // Tests with specific exceptions for MySQL
}

I think that should be changed to:

namespace Drupal\KernelTests\Core\Entity;

class EntityDefinitionUpdateTest extends EntityKernelTestBase {
  // Generic tests. No specific exception for any database.
}
namespace Drupal\Database\mysql\Tests;

class MySQLEntityDefinitionUpdateTest extends EntityDefinitionUpdateTest {
  // Changed tests with specific exceptions for MySQL
}

Now if we change the policy as suggested by the issue summary we cannot do this. So I am against.
That does not mean that I am against moving the tests to PHPUnit tests, KernelTestBase tests or adding functional testing. I think that is great and we should do that!
See the tests as internal until that is all done is fine, but after that they should not be internal.

dawehner’s picture

See the tests as internal until that is all done is fine, but after that they should not be internal.

So do you argue that each individual test should be treated internal?

daffie’s picture

No, every individual test should not become internal. We can treat them internal for their transformation to PHPUnit tests, but after that they should not be internal, but be part of the public API.

Tests have to be part of the API, so that contrib database driver to make their database specific exception to core tests. The 3 by core supported databases have their specific exceptions in the regular tests and the contrib databases cannot do that. They have to be able to override the regular tests and if the tests are internal and can be changed, contrib database cannot reliable override the regular tests. But if someone has a better idea how to fix that please let me know.

dawehner’s picture

@daffie
Thank you for clarifying that point. I'm wondering though whether the benefit of treating everything as API is worth giving that being able to change tests also improves things.

daffie’s picture

xjm’s picture

I have a problem with this.

There is no proposal in this issue yet, only problem statement.

xjm’s picture

@daffie, I think you have misunderstood. This issue is only about how we handle backports of changes to the testing framework. Tests themselves are always considered internal and have been since before release. This policy does not propose to change that. It does not, in fact, propose anything yet, but making test classes public API certainly is not a part of it. So they can still of course be changed as needed, to extend test coverage or for whatever reason. Does that address your concern?

xjm’s picture

BTW it's mostly out of scope here, but I also disagree that we should make individual tests database-driver-specific other than tests for the drivers themselves; that would open the door for huge per-database regressions. Our tests should pass on all supported environments, and anything that causes a test to fail on one environment but not another is considered a critical bug. Core has per-commit and nightly testing on MySQL, Postgres, and SQLite with PHP 5.5, 5.6, and 7, of the same test suite. If there is a specific case where a test seems to be hardcoding MySQL expectations, @daffie, can you file an issue about that case to discuss it?

Let's keep this thread focused though on how, when, and whether to backport API changes to the testing framework (WTB, KTB, BTB, JSTB, etc.).

dawehner’s picture

Discuss and document best practices for backporting test changes.

IMHO we should continue to aim for making good design decisions over crappy workarounds, but keep BC layers in place, maybe in some trait or so. This gives us a bit the best of two worlds ...

Clarify the "experimentalness" (or not) of BTB and JSTB.

I think for BTB we should clarify that we are not yet 100% feature complete with BTB, so in case you don't find some particular feature, feel free to use web test base.
Maybe defining some goal like 8.3 maybe, at which we say, WebTestBase is deprecated, could be a good idea to tell people far in advance about it, so they can slowly transfer over.

daffie’s picture

xjm: You are right and I have misread the issue summary. I will open a new issue. Thank you for taking the time to explain.

Eric_A’s picture

In #2735199-27: Convert web tests to browser tests for help module I wrote:

failure to sync AssertLegacyTrait, WebAssert, BrowserTestBase might come to hunt us later when cherry-picking other, not conversion related issues.

I fear that for a significant share of bug fixes cherry-picking days will be over and that we will have to actually back port accompanying tests if framework changes are not being applied to the stable branch.

Eric_A’s picture

I fear that for a significant share of bug fixes cherry-picking days will be over and that we will have to actually back port accompanying tests if framework changes are not being applied to the stable branch.

Granted, this will be the case anyway when a test is converted in 8.2.x and not 8.1.x. Still, though.
8.1.x will be here for months to come.

xjm’s picture

@Eric_A, can you provide other examples of API additions to BTB already being backported to 8.1.x following 8.1.0's release on April 20? I see #2735199: Convert web tests to browser tests for help module above, which is from a conversion (not an API addition) and so would normally be allowed by our policy since tests themselves are not API. (I actually have concerns about the "one module at a time" test conversions like that because it makes many things more complicated, including things like backports, but I've raised that on #2735005: Convert all Simpletest web tests to BrowserTestBase (or UnitTestBase/KernelTestBase) already so we don't need to discuss here.) Under the current policy, the API addition issues are correctly being filed against 8.2.x only.

If it's already been happening and the branches have not already diverged, then it doesn't make sense to stop doing so now, and we should discuss whether to do so consistently, since the risk of disruption from API additions is hopefully low. Randomly backporting some, but not all, fixes is the worst of both worlds. So let's talk about the actual impacts of backporting the changes.

For example. Let's say I have a local test MyTestBase extends BrowserTestBase and the test has a local assertion MyTestBase::assertWebHeader(). If we add BrowserTestBase::assertWebHeader(), my test suddenly breaks, which is a sudden disruption for me, even though I was guaranteed disruptive fixes and internal API breaks would only occur with minor versions every six months. My test suite is suddenly failing, which could break deployments etc., and I have to spend an unknown amount of time to determine whether it's because of a regression in my code, then find out it was an unannounced and unscheduled API change, and then rename my own assertion in my tests, which then propagates that BC break downstream to any tests that subclass mine.

As @catch pointed out, this also happens to contrib authors with minor versions when we make (e.g.) a constructor change to add a service (an allowed internal API change in minor releases) -- unit tests which mock the class start to fail and have to be fixed. The release schedule is designed so that those disruptions can be planned for every six months, and fixed in batches when a new minor is coming out.

However, the added problem for tests is that, at least previously, contrib authors did not have control over which branch their contrib modules are tested against on DrupalCI. I just checked and it does appear to default to 8.2.x for contrib tests, which means those modules are already being disrupted by internal API changes on Drupal.org. (I can configure a custom branch test against 8.1.x with "custom parameters", but I'm not sure if that will be used nightly or not.) We've discussed in a DrupalCI testing policy issue (elsewhere) that contrib authors should be able to test against a stable release by default to avoid any of this.

But contrib authors are also only one audience potentially disrupted. Sites actually running 8.1.x and running test suites are another, as are custom modules being tested with internal systems instead of DrupalCI, and I think we'd need to consider carefully whether we want to start disrupting them every patch release as well.

There are benefits to backporting, such as keeping the branches from diverging to make bugfixes easier, but there are also risks. We have the semver-inspired release schedule and API change policy for a reason.

Eric_A’s picture

@Eric_A, can you provide other examples of API additions to BTB already being backported to 8.1.x following 8.1.0's release on April 20?

Lately I've been following a big handful of BrowserTestBase issues being backported to 8.1.x. The early ones were a combination of test conversion and needed framework additions, like for example #2736109: Convert web tests to browser tests for action module.
And we had issues like (EDIT: fixed issue link) #2750941: Additional BC assertions from WebTestBase to BrowserTestBase.

git log --all -- core/tests/Drupal/Tests/BrowserTestBase.php helps paint the picture.

I can dig up issues later if that would still help.

Eric_A’s picture

Note that I'm not sure anymore wether these were/ should be considered normal API addition. From what I remember @alexpott has stated a couple of times that (framework) testing changes were exempt from normal minor/patch level rules.

xjm’s picture

Thanks @Eric_A.

From what I remember @alexpott has stated a couple of times that (framework) testing changes were exempt from normal minor/patch level rules.

@alexpott was wrong about that, unfortunately; the testing framework itself has always been documented as being public API and there currently is no exception for it in the allowed changes policy. (Edit: "Testing improvements" was an exception to the pre-8.0.0 beta restrictions, which is probably where this confusion came from.) However, this issue should hopefully help clarify whether we do want to change toward such a policy (or some specific subset, i.e. we backport these kinds of API additions but not behavior changes/removals, or methods that exist on WTB are a reserved namespace for BTB too, or BTB is experimental, etc.), because there are different considerations than for production code.

dawehner’s picture

For example. Let's say I have a local test MyTestBase extends BrowserTestBase and the test has a local assertion MyTestBase::assertWebHeader(). If we add BrowserTestBase::assertWebHeader(), my test suddenly breaks, which is a sudden disruption for me, even though I was guaranteed disruptive fixes and internal API breaks would only occur with minor versions every six months. My test suite is suddenly failing, which could break deployments etc., and I have to spend an unknown amount of time to determine whether it's because of a regression in my code, then find out it was an unannounced and unscheduled API change, and then rename my own assertion in my tests, which then propagates that BC break downstream to any tests that subclass mine.

Given those potential issues could we not just make our lives actually easy and say: API additions in BTB aren't allowed in patch releases, its not worth the effort. Diverging tests are IMHO not that big of an issue, given that we mostly will add additional test methods, which can be copied over quite easy.

For contrib though, we can come up with some better solution: Those API additions could be added to some dedicated traits/classes like AssertionTrait82, which could be included by contrib/custom modules in 8.1, so conversions later to 8.2 could be basically removing the usage of the trait and that's it.

In general it makes me a bit sad how we managed to remove any kind of momentum from what we had in those conversions. At least for myself this doesn't seem to be the best way to deal with preexisting community momentum.

xjm’s picture

Issue summary: View changes

@dawehner, I can totally understand how you feel; I actually really care about this initiative and I hate feeling like the documented best practice and the expectations of contributors pull me in opposite directions and force me to choose between them. I should have addressed this two months ago. Part of the reason we have policies is to try to prevent these sorts of confusions from arising -- if the policy turns out to be wrong or incomplete, as might be the case in this issue, then we should correct the policy as soon as possible rather than making small exceptions to it that only a few people actually know about.

It doesn't have anything to do with features though. In fact, almost the opposite. The allowed changes and API policies are intended to do as much as possible to make sure a patch-level update will never introduce a disruption so that we can build confidence and make sure people apply those updates immediately... even if they are doing something weird or unsupported. E.g. consider the 8.1.4/8.1.5/8.1.6 release series -- technically 8.1.4 should not have broken things for anyone, but it did. If we had not released hotfixes to resolve the problem for the sites affected, then it would have been even harder to get people to update to 8.1.7 for httpoxy. So that is why we try to err on the side of being overcautious for the production branch. Even if there is a 0.1% chance something breaks a site. And yeah, this adds maintainability overhead and, believe me, is just as frustrating for committers as it is for patch contributors. But we have been trying this way of creating releases for less than a year so we're bound to get things wrong from time to time.

Anyway, https://www.drupal.org/node/2696421 is the CI policy document. It came from an internal draft the DA did several rounds of feedback on, but without an issue. Adding to the summary.

xjm’s picture

By the way, following up on #Eric_A's feedback above, the last non-security commit to 8.1.x will happen on or before September 7, 2016; but the same questions/concerns will apply to 8.2.x, 8.3.x, etc. in the future.

Berdir’s picture

@xjm asked me to comment here from the contrib maintainer perspective.

Here's the thing: Contrib tests (daily branch, commit and patch tests) are by default run against against 8.2.x and you can't change that. You can add manual test runs of HEAD and patches against 8.1.x, but changing the default is not possible. And the switch to 8.2.x already happened shortly after 8.1.0, and switching to 8.1.x happened shortly after 8.0.0). That is IMHO too early (maybe switch should happen during/shortly before beta or so) but that's a different discussion.

This means, until that changes, contrib that runs tests on d.o and not e.g. with travis has no choice but to follow 8.2.x anyway, and I've seen quite some changes recently in 8.2.x (for example with all the rest.module changes and a module that has rest integration with tests) that make it hard/impossible to have tests working on 8.1.x too.

During the kernel test conversions, the most annoying part was not keeping around old versions of some common base classes (e.g. MigrationTestBase), we did it in many cases but forgot some. Specific tests I'm not worried about too much. But because of the above, backporting or not actually doesn't really make a difference at first, since tests are run already against 8.2.x (and after september, probably against 8.3.x), your tests otherwise break from one day to the other. The "only" advantage is that it is easier to keep your tests working on the current stable minor version when you update it for the next minor version.

Does that make sense?

xjm’s picture

Assigned: Unassigned » bowersox
Issue summary: View changes
xjm’s picture

Assigned: bowersox » Unassigned

Er. That was not intentional.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

xjm’s picture

I posted #2797975: [policy] Nightly regression testing for full contributed projects against both the production and development minor branches which is relevant to the impact on contrib (not only for this policy discussion, but also even trivial changes in core minors that affect contrib tests).

alexpott’s picture

Another perspective on this is that maintaining multiple versions of testing frameworks in core makes it more difficult for developers and contrib. @Berdir already pointed out we test contrib against the next minor so they are always having to update to that. But the current BC policy means that changes like #2763401: PHPunit browser tests should log all Mink requests aren't eligible for patch release. I think this not good for the project to quote @catch

We write bug fixes against 8.3.x generally, those are able to use the 8.3.x test framework.
So not committing things to 8.2.x can mean that bug fixes won’t backport, just due to the test coverage.
That’s the best argument for me to commit to 8.2.x

I think we should at least have a committer discretion line in https://www.drupal.org/core/d8-allowed-changes#patch about allowing changes to the testing framework to keep feature parity between next patch and next minor.

xjm’s picture

So there are two problems here for me:

  1. BTB is essentially experimental; it is not yet our "testing framework". We want to make it the primary framework for browser tests, but that is currently still simpletest until everything is stable enough to make the switch. So if we want feature parity for faster innovation on a pre-release, incomplete API, that's fine, but it comes with the cost of actually breaking people's BTB tests. Every time we make an API change in Migrate, for example, there are lots of screams, despite it being experimental and despite attempts to provide best-effort BC that isn't even required. The testing framework is an even more essential API.
  2. I think backporting improvements to "the testing framework" is valuable. However, backporting improvements that actually do involve disruptions to the main extension point (once that is BTB) is much higher risk than fixing something in the test runner. This is why for other things we've tried to say we will make internal API additions in minors but not patch releases.

OTOH not backporting things because of differing test coverage, or backporting things without test coverage, are both undesirable as well. This is why we plan to schedule conversions to BTB for beta/RC phases -- to make the transition more smoothly.

xjm’s picture

@catch and @alexpott brought up the theoretical case where backporting a major bugfix gets blocked because a testing framework API addition is not available in the stable core branch.

I think it might make sense to backport things at maintainer discretion if that situation actually happens or is likely to happen. To use catch's example, if we have a critical issue that has a JS test that leverages an API addition to JSTB, when that happens, we know about it right away and can make a decision. On the other hand, if we backport a potential disruption purely for ease of maintenance, we don't know how many custom modules and deployments we might break, and have to rely on angry tweets after the fact -- or not knowing at all that we've ruined someone's day.

What I don't want is to open up loopholes to make API additions to patch releases for our convenience. Protected methods on BTB are kinda API (or at least disruptive to change), despite being protected, because BTB is 100% intended to be subclassed.

For #2763401: PHPunit browser tests should log all Mink requests, maybe there is a flaw in our API design here and these things should instead be services available to tests, similar to the new API for assertions.$this->assertSession()->food() (to use @catch's example) is going to be way safer and less likely to disrupt someone's existing test than $this->assertFood(). In the middle term where we are converting the test suite and using the legacy assertion API, we still have the problem, but maybe we can gradually phase that out over a couple minors since the legacy trait has been deprecated from the start and never supported API.

Our testing API is one of the most important APIs we provide. That means breaking BC or making disruptive changes is really bad, just as making it more useful and robust is really valuable.

xjm’s picture

So for #2763401: PHPunit browser tests should log all Mink requests, the consequence of not backporting it might be: You want to hit yourself in the face when you try to debug something on 8.2.x that you wrote a BTB for. Maybe you theoretically signed up for that pain when you used a new API instead of the stable legacy one, but it sure is annoying now.

The consequence of backporting it in its non-underscore form might be: Someone else's deployment breaks, because the darn API isn't actually marked as experimental and they had no idea we might disrupt it. Or less likely on an individual basis but statistically probable for the aggregate, the seemingly simple addition has some other disruptive consequence we didn't foresee. (I'm thinking of you, #2796953: [regression] Plugins extending from classes of uninstalled modules lead to fatal error during discovery.)

dawehner’s picture

@catch and @alexpott brought up the theoretical case where backporting a major bugfix gets blocked because a testing framework API addition is not available in the stable core branch.

Sure, but this is btw. the same for any other change we do. It could always make it harder to backport.

For #2763401: PHPunit browser tests should log all Mink requests, maybe there is a flaw in our API design here and these things should instead be services available to tests, similar to the new API for assertions.$this->assertSession()->food() (to use @catch's example) is going to be way safer and less likely to disrupt someone's existing test than $this->assertFood(). In the middle term where we are converting the test suite and using the legacy assertion API, we still have the problem, but maybe we can gradually phase that out over a couple minors since the legacy trait has been deprecated from the start and never supported API.

Is that really better? Why would a new method on assertSession() not break stuff the same as a new method on BTB?

For me there are 2 conceptual changes needed for BTB:

  1. Internal improvements: Logging, handling of errors, stuff like teardown() and its complexity. All those changes are purely internal, and by that could be backported using private methods. If you have never exposed anything in a minor before, people cannot complain about things being private for a limited time, as it was never available in the initial minor release.
  2. API methods meant to be used by test classes. Those are things we could always just add via traits, but traits which are NOT included all the time.
xjm’s picture

The strategy in #34 sounds really promising to me. (I wonder how many of our other backport woes could be solved if we stopped avoiding private methods so much?)

xjm’s picture

So thinking about this. Increased visibility is a kind of API addition. So if we increase the visibility from nonexistent to private to protected to public even, each time, it's still an API addition, so maybe there's no reason not to make things private at first. It won't break subclasses. And since a private method definitely cannot be confused with public API, it also does not violate semver in principle.

Is that really better? Why would a new method on assertSession() not break stuff the same as a new method on BTB?

Well I think we were thinking that the subclasses would have their own assertions on their own assertion object, instantiated separately. Edit: or even straight on the class itself if it's actually coupled to that test. They would not be adding anything to WebAssert or directly extending it, just using the instantiated one. So there would never be a name collision. Or does that not make sense?

dawehner’s picture

They would not be adding anything to WebAssert or directly extending it, just using the instantiated one. So there would never be a name collision. Or does that not make sense?

Good question, I guess it would work. The one problem I see is that we want to produce a consistent API on the longrun, adding those "workarounds" would fragment the API in a way, that its not ideal. Ideally IMHO, we would have throw deprecation errors pointing to places which uses the actual API.

dawehner’s picture

We are discussing a potentialy approach on #2820182: Add a LegacyBrowserTestBase which uses every legacy trait we have. Instead of polluting the new test class, it creates a BC test class, which has all BC layers involved. This still makes porting easy, but keeps things clean.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.7.x-dev

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

quietone’s picture

Status: Active » Closed (outdated)

I read through this issue and as far as I can tell no changes to existing policy is needed. In other words, this is outdated. To be sure asked in committer Slack. catch responded and agreed. Therefor, closing this as outdated.

Any changes to the current backport policy can be discussed in new issues.