Problem/Motivation

Originally, 4.x was planned to be the D10 release. Later on the team realized that this caused more problems, so all D10 compatibility was backported into 3.x. The 4.x dev branch and 4.0.0 release were both unpublished.

However, the damage was done and so we've been supporting both 3.x and 4.0.x even though they're the same version.

The reason why we need to support 2 versions is because many downstream modules require the 3.x version of ctools. Until they bump their major version, we need to keep pushing 3.x releases for compatibility.

Proposed Resolution

Mark the 4.x version supported and recommended. Move the 3.x version to supported but not recommended. The 8.x-3.x and 4.0.x versions will be the same (two tags from the 8.x-3.x 4.x branch).

Starting with Drupal 11 compatibility, the 4.1.x branch will now be default and 8.x-3.x will cease feature development. The 4.1.0 release will be compatible with 10 and 11, while 8.x-3.x and 4.x will not be Drupal 11 compatible.

If there are security issues, those can be backported to the 8.x-3.x branch.

Whenever there is work to bring in the new context plugin system, it will require a major version bump. That work will go into 5.x. The 4.1.x, 4.0.x, 8.x-3.x branches are not used anymore, and a 5.x branch will need to be made to support this.

Drupal Core support matrix Q2 2024

Drupal 8 (EOL): 3.9 and lower.
Drupal 9.3 to 10.4/5 : 3.14 / 4.0.5+.
Drupal 11+: 4.1.0+

Comments

japerry created an issue. See original summary.

japerry’s picture

Issue summary: View changes
japerry’s picture

Title: ctools 3.9 release » ctools 3.10 release

Pushing up the release 3.10 because a hotfix for 3.8.

japerry’s picture

Title: ctools 3.10 release » ctools 4.1.0 release
Version: 8.x-3.x-dev » 4.1.x-dev
Category: Bug report » Plan

Update to 4.1.0, will change the description.

This is the meta issue that will hold the features going into the new major version.

japerry’s picture

Issue summary: View changes
mstrelan’s picture

I'm pretty surprised 4.0.0 was unpublished. We have a composer metapackage that requires ctools 4.0.0 and multiple projects depending on that metapackage. Now we can't update the projects to the current version of the metapackage until we downgrade ctools.

- my-org/my-project-metapackage dev-master requires drupal/ctools 4.0.0 -> found drupal/ctools[dev-3.x, dev-4.0.x, dev-4.1.x, 3.0.0-alpha17, ..., 3.x-dev (alias of dev-3.x), 4.0.x-dev (alias of dev-4.0.x), 4.1.x-dev (alias of dev-4.1.x)] but these do not match your constraint and are therefore not installable. Make sure you either fix the constraint or avoid updating this package to keep the one present in the lock file (drupal/ctools[4.0.0]).

paulmckibben’s picture

Question: if we had installed version 4.0.0, is it safe to downgrade to 8.x-3.10?

japerry’s picture

Yes. The 3.10 and 4.0.1 release are the same. Everyone should be on 3.10 until we make this actual 4.1 release.

hip’s picture

Well. Not sure what could have gone wrong, but after downgrading as suggested
composer require drupal/ctools:^3.11

Drupal installation is unreachable.

Ctools module was on latest 4.01 before the 'downgrade' and crash. Any ideas? Can I attach some logs or whatsoever?
T.I.A.

B.T.W. 'crash' means browser keeps trying to load 'something' for ever while blank page shows on ANY URL address for the site, be it public or admin.

hip’s picture

UPDATE.
Emptying the cache (I did it straight in SQL queries, truncating 'cache*' tables) did the trick. After that I could run the DB update from URL and everything seems back to normal with the Ctools downgrade applied. Hope it helps.

joelstein’s picture

In case you came here because Ctools is/was a Pathauto dependency, see #3303233: Please pin ctools dependency on 3.x branch.

anatolii1309’s picture

I don't understand how it was recommended and then we decided not to do it?
Now I have a bunch of projects that swear at this error. How to fix it?

floown’s picture

On a site in preprod, I prefer ask before to do a big mistake…

If I understand well, Chaos Tool Suite (ctools) (Non supportée) <--------- it means that I should downgrad the module?
I have now:

cat composer.json | grep ctools
    "drupal/ctools": "^4.0"

Should I just do a: composer require 'drupal/ctools:^3.11'

It's a safe way?

//EDIT: installed version: 4.0.1
Nom système : ctools
Version : 4.0.1
Requis par (required by) :

Chaos Tools Blocks (désactivé)

floown’s picture

Hi!

Solved. In my case (Ctools not used by another module (just an old dependancies from pathauto) I just uninstall it with the GUI. Then I have downgrade with a: composer require 'drupal/ctools:^3.11' then reactivate it in GUI.

Thanks to cmlara and dimkritsotakis on slack.

azovsky’s picture

mlncn’s picture

Or a ctools 4.0.2 release that is not broken. Yes we are all well aware by now that the 3.x series is the one to stay with but the 4.x series unfortunately currently exists right now and we should not have to be actively fighting to stop CTools from breaking sites on composer update.

xem8vfdh’s picture

whats the state of the 4.x branch? The module home page still says it's experimental, but also says it works with Drupal 10.

When should users move to the 4.x branch?

japerry’s picture

Title: ctools 4.1.0 release » ctools 4.0 plan, deprecate 3.x

After letting the 3.x and 4.x version bake together for the past year, I think its time we re-evaluate the versioning in ctools goes.

Why are 3.x and 4.x the same?
In the D10 release process, there was a misconception that we needed to make a major version bump to support Drupal 10 and drop Drupal 8. However, by doing this caused a dependency chain issue where downstream modules could not work with Drupal 10 without upgrading ctools as well.

Since there was no other technical reason within ctools, we went back to 3.x as the supported version, and 4.x as 'experimental'

What is the supported version now?
As of May 31 2023, its 3.x -- however, I believe its time we switch supported and recommended, due to how composer grabs latest versions. By making 4.x the recommended version, builds will be inline with what they expect. We will keep making 3.x builds in parallel with 4.x, so dependencies requiring 3.x still work.

Will 4.x ever diverge from 3.x?
No. Any features brought into 4.x will also be brought into 3.x.

What about 4.1.x?
Major changes such as context system changes, will be in 5.x.

xem8vfdh’s picture

Thanks for the details @japerry

Do you suggest D10 users who are on the latest everything remain on the 3 branch here, or should we move to 4?

japerry’s picture

Issue summary: View changes

Updated the issue summary. Hopefully that makes things more clear:

xem8vfdh’s picture

thanks @japerry. It sounds like those of us on D10+ should use the 4.x branch, and it's just a matter of updating the documentation on the module home page to reflect this.

japerry’s picture

Issue summary: View changes
japerry’s picture

Issue summary: View changes
Status: Active » Needs review

Updated the parent summary. Basically:

  • 8.x-3.x will NOT support Drupal 11
  • 4.x will become the base development branch
  • 4.1.0 will be Drupal 10 and 11 compatible
japerry’s picture

Issue summary: View changes
japerry’s picture

Status: Needs review » Fixed

4.1.0 is out! with this, 4.0.5 and 8.x-3.15 are the final releases for D10 and below... unless there is a security or other fatal issue found.

All future development should be against 4.1.x.

elc’s picture

ctools 4.0.5 has just been released, but is unsupported? Why even make the release?

Would it not be more wise to make the 4.0.x supported, but not recommended? Even the 8.x-3.x branch is currently supported.

Removing the recommended flag would also get people to move from 4.0.x but without the alarm of unsupported. At least then the branch would be deprecated with notice.

joelpittet’s picture

@ELC, I share your frustration and have personally disabled emails from the update module in favor of using composer audit to catch more serious security issues. However, I believe this discussion belongs upstream in either the Drupal core queue or the Drupal.org infrastructure queue.

I have had many discussions with them regarding this frustrating scenario (on Slack). It’s technically a security issue since we (maintainers) are no longer supporting that branch. This means a security issue could arise, and we are indicating that we will not address it on that minor release branch. Additionally, this problem is historical as we never used to have semantic versions, which compounds the issue, as do our branch naming conventions and how Drupal.org creates releases.

Alternatively, we could keep it open on this project as you’re suggesting, but this would be like playing whack-a-mole. Other maintainers might do this accidentally or on purpose, and you would end up chasing them around the queue. That’s why I recommend taking this problem upstream.

japerry’s picture

The 4.0 to 4.1 update is really an incremental one, sorta like 4.0.4 to 4.0.5. But its unfortunate that Drupal core treats minor releases of contrib modules like core, because any old release is instantly 'unsupported', but there is only an alert when its a minor version update. I wasn't going to make a 4.0.5 release, but then noticed that if someone had a blocking issue with 10.3 and was 'pinned' to the 4.0.x releases, we should fix it there so the 3.x/4.0 releases remained D10 compatible.

So if you're on the 4.x releases, updating to 4.1 should be seamless, unless a downstream module pinned to ~4.0.4, which is not a recommended practice.

As for 3.x, it was marked as 'supported' but not recommended to give a little more time for maintainers with downstream modules so they can update their dependencies to 4.x from 3.x. But 3.x is also essentially EOL and will be marked unsupported sometime after D11 comes out.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.