This issue is for discussing whether we should adopt some of the release schedule adopted for Drupal 8 in #2135189: Proposal to manage the Drupal core release cycle for Drupal 7 too.

The short version:

  • Drupal 7 would use the same 6 month "minor release" schedule that Drupal 8 will use (i.e. rather than features coming out in random monthly point releases like they currently do, they would be batched and come out on 6 month intervals - with only bug/security fixes in the point releases that come out in between).
  • The 6-month minor release for Drupal 7 would come out on the same day as the 6-month minor release for Drupal 8 (i.e. we would start this on the same day that 8.1.0 comes out).
  • A pseudo-semantic versioning scheme would be adopted. E.g., Drupal 7.41, 7.42, 7.43, would be bugfix/security releases, then jump to 7.50 for the 6-month minor release, then repeat. As far as I know, the Update Manager module in core can handle these kinds of "jumps" in the version numbers just fine, though we should probably double check.

See #2135189-90: Proposal to manage the Drupal core release cycle and onward for more details and further discussion.

Comments

David_Rothstein created an issue. See original summary.

David_Rothstein’s picture

Issue summary: View changes
David_Rothstein’s picture

David_Rothstein’s picture

Issue summary: View changes
David_Rothstein’s picture

Issue tags: +Project governance
klausi’s picture

Yes please! This makes Drupal 7 releases much more predictable and contributors know the timeline when their new backwards compatible features must be ready for inclusion. The issue summary offers some good proposals, completely agree with them.

The problem is git branching: where do you commit the new features? To 7.x? Or do you leave the patches flying around just before release and then commit all the things? That would be bad, since we want to offer a dev branch in the 6 months period that people can use and test the new features in combination. We could invent a "7.x-next-features" branch. Can we setup testbot to regularly run all the tests on 7.x-next-features?

Minor edge case in release numbers: if you have a security release and a bug fix release every month, then you have 12 numbers in 6 months. Example: starting with 7.40 you could end up with 7.52 already before the next feature release after 6 months. But judging from the current speed of Drupal 7 releases in last years that is highly unlikely and just a theoretical problem, so let's just ignore this.

David_Rothstein’s picture

Regarding branching, I'm not sure if we have the ability to do that in the full-fledged way that Drupal 8 does (i.e., with full drupal.org integration). I could be proved wrong though.

However, I was thinking we would have (at most) around 2 bugfix releases between the 6-month minor releases - just based on where Drupal 7 is at this point we really don't need more than that. So let's say 7.50 comes out January 1, then there might be a bugfix release on March 1 and another on May 1. That would leave two months between May 1 (the last pure bugfix release) and July 1 (the next feature release). So if we held off committing feature patches until then (people could certainly work on them before then, but they wouldn't be committed), we could basically do this without the need for separate branches, and there would still be two months in which 7.x-dev is being prepared for the next feature release.

If there needed to be an emergency hotfix during that two month period for some reason, we could branch that off the previous release (just like we do for security releases), so it wouldn't interfere with the code in 7.x-dev either.

xjm’s picture

We could probably create (e.g.) a 7.50.x-dev branch alongside 7.x-dev (see the related discussion in #2576141: Release branches for core patch releases/release candidates with the sort-of-hack of 8.00.x-dev as a branch name for a release branch) and then later create 7.60.x-dev, etc. We could either merge these back into 7.x-dev or just tag from the new dev branch.

We also will eventually need to move in the direction of infrastructure support for more diverse branch names (e.g. for D8 feature branches) so it's worth considering what changes we might want to make on d.o.

fuzzy76’s picture

In 2,5 years time we will release 7.90 with this plan. Are we confident D7 will be retired by then, or should we see if 7.100 is viable and won't break everything?

David_Rothstein’s picture

Since 7.9 => 7.10 worked OK I hope that means 7.9x => 7.100 would work fine too, but yes, worth checking just in case :)

xjm’s picture

xjm’s picture

So initially, I was very in favor of this, because it would make D7 and D8 more predictable and consistent. However, after looking at the actual agreement in #2135189: Proposal to manage the Drupal core release cycle (which took a lot of work to finalize with consensus) and at #2598662: Decide when Drupal 7 (and Drupal 8 and later) should enter the LTS and security-support-only phase, I actually think D7 was supposed to have been treated as an LTS already. @Dries was in favor of 7.x being in LTS as of the day 8.0.0 is released. I think we should at least stop adding features to 7.x as of 8.1.0 (or whenever Migrate is fully supported). And if that's in April, then it's worth asking whether we gain anything by stacking up features for that final release, or whether it'd be better to just keep adding them in whatever patch release until then. Sites that want new features should migrate to D8. Sites that want stability should stay on D7.

See also my comment in #2598662-14: Decide when Drupal 7 (and Drupal 8 and later) should enter the LTS and security-support-only phase.

catch’s picture

I think going into proper LTS mode when 7-8 migrations are fully supported is a good idea.

David_Rothstein’s picture

I'd like to finish this discussion soon since there are issues (#611294: Refine permissions for Field UI is one example) that would make sense to skip for the next Drupal 7 release and hold off on until the proposed Drupal 7.50 (on April 20) if we're going to have that.

I mentioned this issue on a https://groups.drupal.org/core post in October (which is how it got some community feedback then) but it was towards the bottom of the post. I think I should post a short, dedicated announcement there this week, pointing people to this issue and asking for final feedback.

In the meantime, I put together a quick testing patch (attached) which takes the data from updates.drupal.org and replaces the data for the most recent Drupal 7 release (currently Drupal 7.41) with a fake version that skips some version numbers (e.g. "7.100"). This can be used for manual testing on 7.40 or earlier. I tried it out and everything seems to work fine; it correctly detects the new release and advises the site to update to it. So I believe Drupal 7 Update Manager can support version jumps like 7.43=>7.50 (and can support it beyond 7.100 too), which is one of the issues discussed above.

Regarding the comments about an LTS, I left some more detailed thoughts about that on #2598662: Decide when Drupal 7 (and Drupal 8 and later) should enter the LTS and security-support-only phase at the time, but in short, it doesn't seem to me like Drupal 7=>8 migrations will be fully supported (including contrib modules) for quite a while. As long as there are a lot of sites still running Drupal 7 with no immediate plans to move off of it, I would think it still makes sense to add new features where appropriate. And even bugfixes can sometimes be disruptive (often more disruptive than new features) so if there's a bugfix worth having that seems a little risky, that would be something to hold off for the special 6-month releases too.

David_Rothstein’s picture

I posted the announcement here: https://groups.drupal.org/node/508530

geek-merlin’s picture

Very +1 on this.

mpdonadio’s picture

Will this also include triaging issues that are eligible for the next release?

Personally, I am not against this, but I think there is frustration among some users right now about bugfixes in 7 and the attention that they get (especially ones that got put on hold because of backport policy). There are 50+ RTBC issues right now, and I didn't even try to count the number of Needs Review ones. Having even longer waits may not go over well.

chx’s picture

As dww is away I believe I am the custodian of the dependency system so to speak. Will 7.100 cause a problem for dependencies? drupal_check_incompatibility is called from system_requirements and system_modules both and it uses version_compare. in drupal_parse_dependency we use \d+ everywhere. This gives me confidence that we are limited only by the maximum string lengths PCRE can match and version_compare can compare. The pcre.backtrack_limit default seems to be 100 000 and version_compare can cope with that so we are good at least till 7.9999....99 (99990 9 digits or so, we need a few characters for other parts of the match). That's significantly more than the number of the atoms of the universe or some other nonsense. We are not constrained by the dependency system.

chx’s picture

As I was asked about my opinion about the issue itself, beating a dead horse

Crell’s picture

I would agree with #12/#13 (and I believe #19, as I think that's what chx is implying with the awesome gif). D7 has been out for years. The energy and focus is on Drupal 8. Move D7 into LTS mode, don't backport things, just keep it stable and secure. Bug fixes, sure, let's do, but keep features for D8. (That's consistent with the intended plan for D8 when D9 comes out, AFAIK.)

David_Rothstein’s picture

Will this also include triaging issues that are eligible for the next release?

I think there could be a "7.50 target" tag (or similar) that people could apply to issues as appropriate. Personally I would keep an eye on the RTBC queue for these kinds of issues.

I am not against this, but I think there is frustration among some users right now about bugfixes in 7 and the attention that they get (especially ones that got put on hold because of backport policy).... I didn't even try to count the number of Needs Review ones.

What are their concerns exactly? It seems to me like this is a function of the number of people working on Drupal 8 issues + the number of people working on Drupal 7 backports of those issues + the number of people reviewing Drupal 7 patches. So I wouldn't expect it to be affected by this issue.

There are 50+ RTBC issues right now... Having even longer waits may not go over well.

The 50+ issues was just because it was shortly before a release, and I tend to go through and commit things before the release (this maximizes the time for getting reviews... and we are badly in need of more high-quality reviews). So right now the RTBC queue is back down to fewer than 10 issues :) (usually it would be even smaller but a few issues were deliberately held off for one release cycle, partly due to the possibility of us adopting this issue)

It definitely is true that this proposal would mean certain issues (usually not bugfixes, but perhaps some of them) have to wait longer to make it into a core release, rather than always having a shot at making it into the next one. There could be up to a 6 month delay (by design). I am sympathetic to this concern and even raised it myself during the Drupal 8 discussion but ultimately it seemed like people thought that was an acceptable tradeoff for having more well-defined releases.

we are limited only by the maximum string lengths PCRE can match and version_compare can compare... That's significantly more than the number of the atoms of the universe or some other nonsense.

That's good to know :)

David_Rothstein’s picture

It might be helpful to this discussion to have some more concrete examples of current/active Drupal 7 issues that would fall under this 6-month policy.

Here are four examples. There are certainly more out there, but these came to mind. Three of the four are currently RTBC, and the fourth is hopefully on its way soon:
#611294: Refine permissions for Field UI
#2514136: Add default clickjacking defense to core
#1081266: Avoid re-scanning module directory when a filename or a module is missing
#1664602: Allow attributes to be passed to drupal_add_[css|js] (SRI)

stefan.r’s picture

Just wondering, are #12/#13/#20 arguing that small "features" such as those listed in #22 (issues more invasive than a simple bugfix yet so minor that they can hardly be called "new feature") should not go in anymore after D7 LTS? Considering D7 will hopefully still be supported for at least another 3 years, fixes to such issues will still be hugely beneficial for many sites that will still be actively maintained during that period, where migrating to 8.x is simply not an option (at least before security support ends), such as in slower moving, larger organizations.

I agree with most here that at some point D7 should have no further major new features, and I'd still give a +1 to the proposal in OP. The 6-monthly "minor" releases could include more invasive bugfixes and minor features such as those in #22, and the "patch" releases could be simple bugfixes and security fixes. I think we could do this independently of any decision to do a halt on new features/LTS?

As to the timing of that, 8.1.0 does sound a bit soon. It would be nice to still have utf8mb4 support in D7 for instance, which I would consider a "major" new feature, as opposed to the issues listed in #22.

znerol’s picture

FWIW patches committed to 7.x are currently breaking the authcache test-suite (#2750317: Fix failing tests). Thus the question of branching is not so irrelevant at least for qa. I guess I have to start detecting features/core version in the test suite now, or just rewrite the assertions such that they work on any 7.x core version.

David_Rothstein’s picture

Category: Task » Plan
Status: Active » Reviewed & tested by the community

I should have posted another update on this issue a while ago, but better late then never. Also by waiting I had a chance to run this by @stefan.r (who is now a Drupal 7 release manager also) and we agreed on the following:

  1. The upcoming release will be labeled 7.50, since there are big enough changes in it (some of the issues from #22 plus others) that it really makes sense to highlight it like that.
  2. For the future, we can probably aim to do similar "big" releases roughly every six months, but for Drupal 7 it's not necessarily set in stone; if a six month period goes by and there don't happen to be any big enough changes that get committed, we won't have to do a release with the version jump that time.

It's also worth highlighting here that we aren't talking about committing patches that violate the guidelines on making changes to a stable core release; that has been in place for years and it already allows new features to be added (among other things), with its main goal just to try to avoid breaking people's sites regardless of what is added. (A couple of the issues in #22 do stretch the boundaries of that a fair amount, but it's because they are security-related improvements.) So I think if someone wants to change that #2598662: Decide when Drupal 7 (and Drupal 8 and later) should enter the LTS and security-support-only phase is still the relevant issue to discuss it. This issue however is mostly just about better organizing the kinds of patches we already commit into meaningfully-themed releases, so that what a release will contain is more predictable and better-communicated.

In terms of the timing of releases:

  • 7.50 is going to be a bit of a trial run for this, as the first one. Obviously it did not come out on April 20 as I originally hoped :)
  • But it's actually better not to do these on the same day as a major Drupal 8 release since that way there won't be "competing" front page announcements.
  • Maybe we can try to bring future ones a bit closer to the Drupal 8 schedule, e.g. December for (a possible) Drupal 7.60 which is five months rather than six months?
  • It's not clear to me yet how much people care about having a fixed date which is known well in advance, vs. just knowing that it's approximately going to be in six month windows?

Putting this at RTBC for now for any additional feedback. There may be a couple small documentation changes to make for this (on drupal.org) although I think not many.

Figuring out if we can do multiple development branches for Drupal 7 is maybe a good followup issue? (Personally I tend to think it's not worth the effort/burden though.)

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 14: update-test-version-jump-2598382-14-do-not-test.patch, failed testing.

cilefen’s picture

Re: multiple development branches, that would be a sea change for people who merge upstream commits: #2709981: Document a process for merging commits from upstream in D8

David_Rothstein’s picture

Title: Adopt a 6-month feature release schedule for Drupal 7 (similar to Drupal 8) and use pseudo-semantic versioning » [policy] Adopt a 6-month feature release schedule for Drupal 7 (similar to Drupal 8) and use pseudo-semantic versioning
Status: Needs work » Reviewed & tested by the community

Oops, I forgot there was a test patch posted here. But there's nothing to commit :)

fabianx’s picture

#25: I agree that we don't need additional branches for more feature-y release.

We can mark those issues as approved and get them in after the last bugfix release before the feature release.

No feature should be so complicated that we would need to commit it way in advance - so this is a good internal check, too.

esolitos’s picture

I really like this, however shouldn't be a Change record or an announcement be published about this?
Personally I was wondering for a while why the issues were tagged with "Drupal 7.50" before I could find this discussion. :)

David_Rothstein’s picture

Well, it's essentially just starting to happen with this release, so hopefully my announcement at https://groups.drupal.org/node/512445 basically covers that.... (And we'll repeat something about it in the actual release notes/announcement itself too, when the release is made.) But yes, we probably started using the "Drupal 7.50"-related tags a little too early - or rather I updated this issue a little too late :)

The existence of this discussion was also previously announced a couple of times on https://groups.drupal.org/core.

I'm not sure how much more of an announcement or documentation changes we need beyond the above - that's one of the things to look into more before closing this issue. We probably do want to make sure there isn't any documentation that implies releases can never "skip" a version number... but beyond that it sounds like it's going to be somewhat informal exactly when a release comes out that does that (even if the rough aim is to do it on 6-month intervals).

webchick’s picture

Assigned: Unassigned » dries

This feels like the kind of direction change @Dries should chime in on first.

David_Rothstein’s picture

Well, Drupal 7.50 is already out today: https://www.drupal.org/blog/drupal-7-50

However, we have not actually committed to doing more of those in the future.

I don't see this as that much of a direction change, because deciding between committing a patch today and putting it in a release called "Drupal 7.51" vs. holding off and committing the same patch a few months from now and putting it in a release called "Drupal 7.60" is for the most part just a release management decision.

The version jump is of course noticeable, but that's part of the point - it communicates some information about what to expect with the release. (And we definitely know from #2135189: Proposal to manage the Drupal core release cycle and elsewhere that people very much like the idea of more meaningful release version numbers...)

But in any case, would be interesting to hear any such feedback. (That is one reason this issue has had the "Project governance" tag from the beginning.)

alan d.’s picture

Love the idea of schedule 6 monthly releases. I'd +1 only 6 month releases for all maintenance releases!

In the last 2 years, intermittent releases generally just noise of the vast majority of our sites, and generally have created more issues than fixing existing issues after updating due to a security release. I believe we have only have 1 core patch on one site out of a 100+ sites, but a couple updates have cost time in a) doing the updates, and b) causing new issues (7.36, 7.33 from memory).

Then again, maybe we are not the standard Drupal users, we happily can program around issues to provide a shared workaround to known limitation / bug.

@David_Rothstein
Re: Drupal 7.50. Awesome. Lack of "administer fields" permission has been a headache since the dawn of time ;)

lostcarpark’s picture

Well done on getting 7.50 out. I must admit I've been concentrating on D8, so was wondering if there'd been a sudden flurry of be versions in the last few days.

I agree this is a good policy in general, though I also agree we should be looking at when D7 will go LTS. However, given how long it's taking for many modules to be migrated, D7 will continue to be required for quite some time, and it makes sense to include some new features and backports from D8.

I also expect D7 to live on for some time after D9 is released. The main reason D6 didn't have a long extended support period was the lack of automated testing. D7 has no such barrier.

rcodina’s picture

@lostcarpark I agree 100% with you. I also think that if some new features are included on D7 core every 6 months we will be also preventing users most reticent to Symfony to stick to Drupal instead of switching to BackdropCMS or another CMS. At least, until most of D7 modules have a pretty stable D8 version. So far I miss Path Breadcrumbs, Webform, EVA, Search API, Rules, etc.

catch’s picture

@rcordina the breadcrumbs implementation in Drupal 8 core now uses paths, so that should be covered.

rcodina’s picture

@catch Could you share a link where I can read about this? I've done a website in D8 and I had to do a custom module to set up the breadcrumbs in some cases.

catch’s picture

rcodina’s picture

@catch So I still need a custom module in cases where path doesn't match the breadcrumb my customer wants.

Crell’s picture

rcodina: That's hardly new. What's new is that core actually has a formal breadcrumb API now rather than just a global setter, which makes writing arbitrary breadcrumb logic much easier and less buggy.

Similarly, many many use cases of webform can now be handled by the core contact module. Not all, but many. So depending on your use case you may not need webform at all. Often the functionality is available for D8 already, just under a new name or a different approach.

rcodina’s picture

@Crell I already know that there is a new API because I had to use it to customize breadcrumbs in some cases. Regarding Webform, there is an interisting thread here.

dawehner’s picture

Can we please stop this discussion in this issue. It's 100% unrelated with this issue. Feel free to open a new issue for this :)

pancho’s picture

Status: Reviewed & tested by the community » Closed (won't fix)

2,5 years later and with Drupal 9 being released in just over a year, I'm unfortunately not seeing this happen anymore.
Therefore I'm closing this plan as a won't fix. Feel free to reopen, if I'm wrong and this is still in the cards.