Problem/Motivation

Opening the Drupal 9 branch allows a few things to happen.

  1. We can upgrade Drupal's PHP requirements to require Symfony 4 or higher (and Twig etc.)
  2. Contrib modules can test against the Drupal 9 branch to ensure they still work
  3. We can begin removing deprecated code, and backwards compatibility layers

In order for the Drupal 9 branch to be useful, we need to be able to do the below things soon after the branch is opened.

Proposed resolution

The 9.0.x branch opened alongside 8.9.x according to the normal release schedule.

Must-haves prior to tagging Drupal 9.0.0-alpha1

  1. DONE: Contrib modules must be able to test against Drupal 9 without having to make an entire new code branch. #2807145: [policy, no patch] Allow contrib projects to specify multiple major core branches and #2313917: Core version key in module's .info.yml doesn't respect core semantic versioning enable this
  2. DONE: Make 9.0.x installable without depending on the core compatibility constant and resolve any other test failures: #3087874: [meta] Make 9.0.x branch pass testbot
  3. DONE: #3079791: Bump Drupal's minimum PHP version to 7.2 as soon as 9.0.x is branched (a higher version may be required later)
  4. Update Drupal's major PHP dependencies:
    1. DONE: #3088369: Update Drupal 9 to Symfony 4.4-dev
    2. DONE: #3094007: Update the 9.0.x branch to Symfony 4.4-beta2
    3. DONE: #3088754: Update to Drupal 9 to Symfony 4.4.0
    4. DONE: #3041076: Update Drupal 9 to Twig 2
    5. DONE: #3094146: Update Drupal 8 to the latest stable/compatibe Symfony 3.x versions
  5. Remove deprecated dependencies:
  6. DONE: #3016471: Make localization file download major version agnostic
  7. DONE: #3074993: Use "current" in update URLs instead of CORE_COMPATIBILITY to retrieve all future updates
  8. #3086644: LegacyProject composer templates wrongly reference 8.x + fix test coverage

Once these issues are resolved, a Drupal 9 branch becomes useful, because it allows for contrib testing of the upgrade path and updated dependencies. The release notes for the alphas will specify that deprecated code has not yet been removed entirely and that any use of deprecated code by contrib/sites will be incompatible by beta1.

Requirements for beta1 are at #3079680: [META] Requirements for tagging Drupal 9.0.0-beta1.

Should-haves

Remaining tasks

User interface changes

API changes

Data model changes

Comments

catch created an issue. See original summary.

catch’s picture

Issue summary: View changes
effulgentsia’s picture

final 8.x LTS

Are you assuming more than one 8.x LTS? If so, has that been discussed anywhere?

catch’s picture

Should should really be 'final 8.x minor version, which would also be the LTS release'.

Although Symfony ended up with two LTS for 2.7 and 2.8, I think that's because they'd already committed to 2.7 being an LTS, and added 2.8 on top - so even if we time the 8.x LTS for the 9.0.0 release, it could still be the only one.

catch’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
xjm’s picture

xjm’s picture

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

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

catch’s picture

Title: Drupal 9 preparation » [policy, no patch] Pre-requisites for opening Drupal 9
Issue summary: View changes

Re-titling and re-writing the issue summary.

catch’s picture

Issue summary: View changes
catch’s picture

catch’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
klausi’s picture

I like the proposal of getting the latest 8.x development branch as ready as possible before we open 9.x.

I think there is a agreement that we want to get rid of simpletest.module, so we need to convert all web tests to browser tests before we open 9.x. That alone could take a while, probably 1 year?

catch’s picture

Yes that should come under "All deprecated usages removed from 8.x" although at the moment only KernelTestBase is actually marked @deprecated and WebTestBase is not. So an extra step of identifying deprecable code maybe.

Converting hundreds of tests is exactly the sort of thing we don't need to do when transitioning from 8.x to 9.x, so agreed that's something we'd want to do first.

The additional advantage then is that the 8.x LTS test coverage will be as minimally divergent from 9.x as it's possible for it to be (which also goes for any other deprecated usage removal).

klausi’s picture

catch’s picture

Status: Active » Needs review

I think there's enough of a plan here to review now.

catch’s picture

Issue summary: View changes

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.

Dries’s picture

I've been thinking about this quite a bit and I like this proposal. I think we should declare this to be our desire, but allow ourselves to change our mind (e.g. maybe when modules don't continuously upgrade to the latest APIs, making Drupal 9 a "big bang" release after all).

klausi’s picture

Is there an issue to roll back to routing system yet? Would be interesting to see a compilation of problems we have with it and what the alternative would be. Looking forward to https://events.drupal.org/dublin2016/sessions/routing-drupal-9-and-lesso... but the summary does not give any hints yet :(

pwolanin’s picture

Well, I guess that core conversation will be popular ;-)

@chx - can you clarify here (or in another issue) what it would mean to "remove" the router?

A lot of the code came from D7 in terms of actually doing it efficiently.

chx’s picture

> @chx - can you clarify here (or in another issue) what it would mean to "remove" the router?

Remove all APIs and code depending on route names and for incoming, find the one possible route with a database query. I believe that is possible. For outgoing just use path where needed. Most of the time it's an entity link anyways.

timmillwood’s picture

I feel the biggest pre-requisite would be, do people have time.

catch’s picture

This issue exists for defining a set of pre-requisites for opening the 9.x branch. It's not for discussing actual proposed changes in 9.x, plenty of other places to do that.

Let's open an issue to discuss 9.x routing. I'm sure there's things we could do in 8.x with bc layers too.

For outgoing just use path where needed. Most of the time it's an entity link anyways.

A lot of this was already done in #2407505: [meta] Finalize the menu links (and other user-entered paths) system and similar issues. We massively pulled back from route names during the 8.x beta, not as much as I'd have liked, but things like the entity:// schema and similar help a lot.

xjm’s picture

andrewmacpherson’s picture

A Drupal 9 branch would allow us to drop (or "reset") the templates, CSS, etc, in the Stable (and Classy?) themes.

xjm’s picture

The one unaddressed point of feedback so far is:

I feel the biggest pre-requisite would be, do people have time.

I don't think this is actually a concern -- we can keep releasing minors until the necessary work is complete. Honestly the work defined here is only a fraction of the work we did for D8's development. Given the new minor version cycle, the one risk associated with not releasing major branch is the degradation of performance and maintainability due to accumulated BC layers. But the thing is, to fix that and release 9.0.0, we still need to provide a working migration path, clean removal of deprecated code, etc. The main difference is that we do everything we can before opening the branch, rather than opening the branch and then letting things spiral out of control for the next two years after that.

Regarding the points in the summary:

  • Timing -- I mostly agree, but I'd say "The earliest possible LTS of 8.x is 8.5.0" rather than 8.6.0 released before 9.x is opened. That means 3 more minors / 18 more months from now. Less than that is probably infeasible; longer than that in the future feels a bit magic eight ball. We can always shift the expectation later since it is "at least".
  • Migration path -- I agree with all this.
  • API changes -- Agree with all of 1-4. Not sure about point 5 though; I would not block opening 9.x on having RTBC BC breaks for non-deprecated code. Such patches/feature branches would be really difficult to maintain. I think such changes are ready when they're ready, and if they don't make 9.x, they don't make 9.x.
  • Feature removals -- not sure about this one, for the same reason as with API changes point 5.
  • Bugs -- absolutely agree. So far we have a good track record over the past year for fixing post-release criticals. We are about 25% of the way through triaging the major queue.
  • Feature additions -- I think the first three points are all things that should be reviewed as part of the checklist for opening 9.x, but I'm not sure whether or not they should block it. I think we can also discuss these things as we get closer to that point. For the fourth point, I think we should actually do what Symfony does and avoid additions in 9.0.x entirely. They should go into 9.1.x.

At DrupalCon Dublin, the framework and release managers met with Nicolas Grekas (one of the Symfony core committers) to discuss how they handle BC and deprecations. (See #2575081-33: [policy, no patch] Use E_USER_DEPRECATED in Drupal 8 minor releases.) Adopting those practices will make a lot of the recommendations here much easier to implement, so I would in turn add adopting those practices as a prerequisite for opening 9.x. I would also add the explicit documentation indicated in #2550249: [meta] Document @internal APIs both explicitly in phpdoc and implicitly in d.o documentation since that is really entangled with what BC means and what we need to deprecate.

For me, this is close to RTBC, minus the few points above I'm unsure of.

catch’s picture

API changes -- Agree with all of 1-4. Not sure about point 5 though; I would not block opening 9.x on having RTBC BC breaks for non-deprecated code. Such patches/feature branches would be really difficult to maintain. I think such changes are ready when they're ready, and if they don't make 9.x, they don't make 9.x.

I've shifted my position since opening this, and I think we should really only do the following for 9.0.0 in terms of API changes:

1. remove backwards compatibility layers
2. Do @internal API changes that are either too disruptive for a minor, or just happen to land in the branch due to timing (a handful of these comprise most of the 9.x queue now)
3. Remove stable features
4. Vendor library updates if we're unable to do them in a minor (or if they happen to land due to timing)

Also 5. potentially add or stabilize experimental modules.

If we couple this with additionally releasing the 8.x LTS at the same time, that is plenty to do for six months - i.e. it's the same as a normal minor release cycle plus those additions.

But the thing is, to fix that and release 9.0.0, we still need to provide a working migration path, clean removal of deprecated code, etc. The main difference is that we do everything we can before opening the branch, rather than opening the branch and then letting things spiral out of control for the next two years after that.

Yes this is the point. If they have to get done anyway, why not do them up front. The worst that happens is an extra minor release or two of 8.x, vs diverging the major branch piecemeal over a much longer period while the production release stagnates - which is exactly what we did with 7-8 from the moment 8.x was opened in Chicago.

Another thing we should add here is making core compatibility more flexible so that modules can potentially work with both 8.x and 9.x at the same time without branching.

catch’s picture

Just opened #2822727: [policy, no patch] Adopt a continuous API upgrade path for major version changes to thrash out the "what is eligible for 9.x" bit of this.

effulgentsia’s picture

Remove stable features

Should this be scoped down to just "stable features that have already been documented somewhere as deprecated"?

Fabianx’s picture

+1 to #36

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.

catch’s picture

catch’s picture

Issue summary: View changes

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.

benjifisher’s picture

Issue summary: View changes
Gábor Hojtsy’s picture

Issue tags: +Drupal 9

Tagging for Drupal 9.

Pasqualle’s picture

What exactly "opening Drupal9" means? Having the drupal9 branch created and actively maintained?

Because if that is the case, then based on all these requirements, we are already late to release Drupal 9 on time. Contrib needs to have a year to test against D9 before it is released.

catch’s picture

@Pasqualle, it means opening the branch. Several of the things in the list above, aren't done yet - for example core compatibility doesn't support two major versions. We need to get those things done in 8.x before opening the branch, so that we know that we'll be able to actually release it.

However also, by delaying opening the branch until these things are ready, 'testing against Drupal 9' really means 'updating against Drupal 8 minor releases' - since everything new in 9.0.0 will also be in 8.x minor releases.

Gábor Hojtsy’s picture

Title: [policy, no patch] Pre-requisites for opening Drupal 9 » [policy, no patch] Pre-requisites for branching Drupal 9 from Drupal 8

I proposed a title update to make that clear :)

catch’s picture

Issue summary: View changes

I just re-read the list and I think it's more or less accurate. One thing I removed is the critical/security bugs as a hard blocker.

We're going to lose Symfony support for core unless we update, so having issues open when 8.LAST.x is tagged which would require a minor release to fix, has to be weighed against no security support.

If it came to it, we could release an 8.REALLYLASTTHISTIME.x minor release to resolve a critical bug or security issue that is fixed during the one year LTS cycle - this doesn't mean we keep adding features, just that LTS doesn't have to mean a hard freeze on critical or security bugfixes for the final year of 8.x's lifecycle.

catch’s picture

The issue summary was slightly outdated, but not as much as I thought it would be. I've re-done the list and added some commentary. It could use a link to issues for each bullet point.

Gábor Hojtsy’s picture

Issue summary: View changes

Created #3007166: [META] Stabilise and/or remove experimental modules as appropriate in/before Drupal 9 and will use it as a collection issue for experimental module stuff.

Gábor Hojtsy’s picture

Issue summary: View changes

Added child issue for item 3 as well.

Gábor Hojtsy’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
Mile23’s picture

Issue summary: View changes

The only way to prove that #2093143: [meta] Remove calls to @deprecated and "backwards compatibility" procedural functions from core is outdated is to finish #2856742: [meta] Adopt trigger_error() for deprecation messages where it is missing :-)

$ grep -lr @trigger_error core/ | wc -l
     267
$ grep -lr @deprecated core/ | wc -l
     344
Gábor Hojtsy’s picture

Title: [policy, no patch] Pre-requisites for branching Drupal 9 from Drupal 8 » [META] Pre-requisites for branching Drupal 9 from Drupal 8

Added #3007300: [META] Release Drupal 9 on June 3 2020 as an interim parent issue, and made that a child of #2615502: [meta] Plan the core development and release process for 8.0.1 and beyond (that this issue used to be a child of). Since we are dealing with what needs to be done before Drupal 9 is branched, what needs to be done between then and Drupal 9 is released would be the realm of that issue. So that issue will be the master starting point for the work on Drupal 9.

Gábor Hojtsy’s picture

Gábor Hojtsy’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
Mile23’s picture

Maybe contemplate cleaning up the components before the 9 branch: #1826054: [Meta] Expose Drupal Components outside of Drupal

Gábor Hojtsy’s picture

Issue summary: View changes

Broke up 1 to 1 and 2, because they were two separate things.

catch’s picture

Issue summary: View changes
Gábor Hojtsy’s picture

Issue summary: View changes

Enhanced point 4 for with the [or] case of how version handling is supported.

Gábor Hojtsy’s picture

plach’s picture

@Mile23, #60:

That would be great to have before opening the D9 branch, but why would it be a pre-requisite? I had a look at the issue summary and it seems the missing steps are only additive, they don't seem to imply breaking changes. Are you suggesting this to make sure that we can expose 8.x components as well or am I missing something?

jibran’s picture

Gábor Hojtsy’s picture

Title: [META] Pre-requisites for branching Drupal 9 from Drupal 8 » [META] Requirements for branching to Drupal 9 from Drupal 8

Retitle for more specific issue organization.

Gábor Hojtsy’s picture

Title: [META] Requirements for branching to Drupal 9 from Drupal 8 » [META] Requirements for opening the Drupal 9 branch
Issue summary: View changes
Gábor Hojtsy’s picture

Issue summary: View changes
Gábor Hojtsy’s picture

Issue summary: View changes

Moving back the experimental modules item since all that is to be done in 8.x.x and mainly before 9.x is branched.

Gábor Hojtsy’s picture

Issue summary: View changes

Further reformatting of issue summary, made it an actual list.

dww’s picture

Issue summary: View changes

Based on Slack convo w/ xjm and Gabor, adding #3031198: [META] Add classy_dev and minor-branch theme snapshots to allow fixing markup bugs within minor releases without front-end disruption (now marked a child of this) to the "should have" list.

dww’s picture

Issue summary: View changes

whoops.

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.

xjm’s picture

Issue summary: View changes

#3015625: [META] Prepare patches to be committed to the Drupal 9 branch once it is open is probably a "should-have" before we open the branch. We need to gather data, adopt a policy, and announce it soon.

xjm’s picture

catch’s picture

Issue summary: View changes

Updated the issue summary to try to reflect where things stand at the moment.

effulgentsia’s picture

Issue summary: View changes

Thanks! Fixed minor typos.

effulgentsia’s picture

All deprecated code usages must be removed and deprecations properly documented

Why must the branch be delayed until all of these are done? Wouldn't the branch still be useful before then, in allowing the removal of the >90% of deprecations that are already properly documented and not used?

We should have a policy that allows fixing markup bugs without front-end disruption... Frankly, we should have that before 8.7.0 is released, but we definitely should have it before we open up the 9.0.x branch.

The last few words of that are inconsistent with this being listed in the "Prior to tagging Drupal 9 beta 1" section.

catch’s picture

@effulgentsia

#1 I think we're down to about 9 cases now? I don't think it really matters if we're down to zero or < 1% really (also I didn't update the wording for this from three years ago, just moved it around). However given momentum on removing deprecated code usages it seems unlikely this would be the thing to hold up branching at this point regardless.

#2 just was not sure what to do with that section but didn't completely want to lose it, it should probably be a reference to the Stable/Classy issue for 9.x but can't find that right now.

catch’s picture

Issue summary: View changes
xjm’s picture

@catch and I also discussed and agreed back in July that if we get to October 11 (the weekend before the 8.8 alpha deadline and the normal point at which we create the new development branch) and the must-haves are close but not-quite-done, we will still open 8.9.x and 9.0.x at the same time. This will unblock the 9.0.x-only work without adding a lot of commit overhead or confusion about the purpose of the branch. However, we won't start tagging alphas until the first three points are complete.

xjm’s picture

Issue summary: View changes
voleger’s picture

Issue summary: View changes

Thanks @xjm for the update. I guess copy-paste issue here.

tedbow’s picture

#2313917: Core version key in module's .info.yml doesn't respect core semantic versioning was committed which allowed closing #2807145: [policy, no patch] Allow contrib projects to specify multiple major core branches

These are the 2 issues under Must-haves prior to tagging Drupal 9.0.0-alpha1 item #3 in the issue summary 🎉

Gábor Hojtsy’s picture

Issue summary: View changes
Mile23’s picture

Just to point out that #3057420: [meta] How to deprecate Simpletest with minimal disruption continues apace. In that issue, we talked about deprecation of pieces of the testing infrastructure that would allow the simpletest module to be a contrib module.

In order for that to happen, someone needs to volunteer to be the maintainer of the contrib module. That person will not be me.

The contrib module has a project page, left over from the days of yore: https://www.drupal.org/project/simpletest

Gábor Hojtsy’s picture

Title: [META] Requirements for opening the Drupal 9 branch » [META] Requirements for opening the Drupal 9.0.x branch and 9.0.0-alpha1
Issue summary: View changes

Retitling since this is about branch opening AND alpha requirements as those go somewhat hand in hand for first alpha (unless the date is met earlier).

Also moved the beta requirements to #3079680: [META] Requirements for tagging Drupal 9.0.0-beta1 and parented its respective issues to that.

xjm’s picture

So all the things that are part of the beta-stability requirements for 9.0.x as a release are _also_ requirements for beta. Including having all deprecated code removed, etc. So we might want to do a little further issue tree refactoring.

@catch and I also discussed this morning that bumping the PHP version minimum to 7.2 will also be a 9.0.0-alphaa requirement, as will removing deprecated dependencies (like jQuery UI components, removed polyfills, etc.) Alphas will indicate in bold text that not all deprecated APIs have been removed and that any use of remaining deprecated code _will_ cause fatal errors by beta1. And that beta1 must be tested, etc.

Gábor Hojtsy’s picture

Status: Needs review » Needs work
Issue tags: +Needs issue summary update

Needs an issue summary update for the changed alpha requirement then.

catch’s picture

Issue summary: View changes
catch’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
pounard’s picture

@catch, php7.2 is security only from nov. 2019 to nov. 2020, then EOL, why not bumping to php7.3, especially after reading tweets like this one https://twitter.com/SaraMG/status/1167593974737133569 ? I'm asking this question naively I don't know if there's rules in Drupal dev regarding php support.

andypost’s picture

catch’s picture

@pounard the current plan is to immediately bump to PHP 7.2 within a week of 9.x branching, but then we can further increase that requirement to PHP 7.3 at any point after that.

pounard’s picture

@andypost @catch thanks !

xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes

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.

xjm’s picture

xjm’s picture

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

Also, as 9.0.x itself is open, moving this issue to 9.0.x. (Issues with actual patches should stay against 8.9.x for now, even if they're 9.0.x-only changes, because DrupalCI doesn't work yet for 9.0.x.)

xjm’s picture

Status: Needs work » Needs review
Issue tags: -Needs issue summary update

Also I don't think this is NW and the IS reflects the requirements AFAIK.

Gábor Hojtsy’s picture

Title: [META] Requirements for opening the Drupal 9.0.x branch and 9.0.0-alpha1 » [META] Requirements for tagging 9.0.0-alpha1
Issue summary: View changes

The branch is already open, so we are tracking alpha1 requirements here.

Updated some text to apply to the current scenario. Did not change any requirements.

Gábor Hojtsy’s picture

Issue summary: View changes

Typo.

xjm’s picture

Issue summary: View changes
Mile23’s picture

This meta is complete: #3057420: [meta] How to deprecate Simpletest with minimal disruption

It's unclear whether we're going to actually remove the simpletest module from D9 core, whether there will be a stub module (to allow an update path), or whether simpletest will remain in core as-is for D9.

If anyone wants to take the lead on that, I can help out, or if it's beyond all the necessary deadlines, then Oh Well. :-)

catch’s picture

Per #3084493: Fully deprecate and prepare for removal of SimpleTest module we can remove Simpletest module from Drupal 9 entirely, however it will need the contrib replacement to be available first so that modules can update to use that if they're still reliant on it.

Also this doesn't affect the Drupal 9.0.x alpha - we can remove simpletest from Drupal 9 any time up until beta.

Gábor Hojtsy’s picture

Issue summary: View changes

9.0.x can install and tests pass.

mikelutz’s picture

Issue summary: View changes
mikelutz’s picture

Issue summary: View changes
Wim Leers’s picture

alexpott’s picture

I wonder if having an equivalent of :

  • core/modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz
  • core/modules/system/tests/fixtures/update/drupal-8.filled.standard.php.gz
  • core/modules/system/tests/fixtures/update/drupal-8.6.0-minimal-with-warm-caches.sql.gz

Is necessary?

Wim Leers’s picture

I wondered that too.

catch’s picture

I think we definitely need that as part of #3087644: Remove Drupal 8 updates up to and including 88**, maybe as a prerequisite? But I'm not sure we need it to tag the alpha, since we don't have any upgrade path patches to commit.

xjm’s picture

Issue summary: View changes

We have three deprecated polyfill libraries to remove from core in addition to forking jQuery UI; adding the meta to the list.

Is there an existing issue for a Composer update of 9.0.x core? It would be good to treat such an issue as a plan issue and spin out any components that introduces disruptive changes or especially things that are major version upgrades.

catch’s picture

There is #3009213: [META] Update / reconsider PHP dependencies for Drupal 9 but that is not really a 'composer update all the things' issue.

Gábor Hojtsy’s picture

That also links to #2864037: [META] Update core PHP dependencies which is an ongoing issue that @Jibran keeps up with :)

Gábor Hojtsy’s picture

Issue summary: View changes

Swapping in the real twig2 issue.

Gábor Hojtsy’s picture

Issue summary: View changes

Symfony 4.4 done (for now) :)

drumm’s picture

Issue summary: View changes

#3016471: Make localization file download major version agnostic needs to be committed for ongoing compatibility with localize.drupal.org.

jibran’s picture

catch’s picture

I think that can happen during alpha. Pre-alpha is 'update/remove external dependencies since this included the largest number of changes we have little control over' and alpha-beta is 'remove internal deprecations while keeping external dependencies up to date'. However, we should add that to the beta requirements as an explicit item.

xjm’s picture

Issue summary: View changes
xmacinfo’s picture

@Gábor Hojtsy: Symfony 4.4 is a big milestone and the community worked hard to make this happen.

But what is the plan for Symfony 5? I know that this is still in development, but they target a release November 2019.

Would alpha or beta require Symfony 5? Or is Drupal 10 that is the target for Symfony 5?

catch’s picture

See #3055180: [META] Symfony 5 compatibility for Symfony 5 compatibility issues.

We currently do not have plans to jump from Symfony 3 in Drupal 8 to Symfony 5 in Drupal 9, because it may make it harder for contrib modules to be compatible with both versions. However there's also an issue here about changing our composer.json settings so that it's easier to switch between Symfony major versions: #2976394: Allow Symfony 4.4 to be installed in Drupal 8.

Wim Leers’s picture

Chi’s picture

We currently do not have plans to jump from Symfony 3 in Drupal 8 to Symfony 5 in Drupal 9, because it may make it harder for contrib modules to be compatible with both versions.

At some point not jumping to Symfony 5 will make it harder for contrib modules to support both Drupal 9 and Drupal 10. Symfony 6 will be released in two years which means Drupal 9 will fall at least two major versions behind upstream.

xmacinfo’s picture

...there's also an issue here about changing our composer.json settings so that it's easier to switch between Symfony major versions.

Supporting both Symfony 4 (by default) and 5 (modifying composer.json) in Drupal 9 would be great along the run (in the future) in later minor version (e.g. Drupal 9.1 or 9.2).

mikelutz’s picture

At some point not jumping to Symfony 5 will make it harder for contrib modules to support both Drupal 9 and Drupal 10. Symfony 6 will be released in two years which means Drupal 9 will fall at least two major versions behind upstream.

You are thinking of the minor releases, not the LTS releases that we need to use. Symfony's non-LTS support cycles have been dropped to 8 months, while ours are 12 months, so we can't realistically use anything other than an LTS release. The current Symfony LTS release is 3.4, which Drupal is using. Then next LTS, 4.4 releases in December and the pre-release is already used in Drupal 9.

Symfony 5.4 LTS won't be out for 2 more years, and we will release Drupal 10 on it. Symfony 6.4 LTS is 4 years out.

Chi’s picture

@mikelutz
As I get it, the whole point of sticking to Symfony LTS releases is that we cannot update Symfony major version in Drupal minor release.
Because it is considered as a BC break. But is it really true? I know Drush had troubles (#2874827: Drush 8.x doesn't install Drupal 8.4.x and Drush master doesn't install Drupal 8.3.x) when Drupal 8 moved to Symfony 3 but nowadays both Drush and Drupal Console are installed as local Composer packages. So it shouldn't be a problem anymore.
Being able to update dependencies within release cycle would make Drupal more vendor independent and extend Drupal 9 lifetime. That's not only about Symfony but any other dependencies that have more frequent release cycle, i.e. PhpUnit.

The relevant semver discussion.
https://github.com/semver/semver/issues/148

Chi’s picture

Another option to consider would be dropping our non-LTS support cycles same way as Symfony did.

Berdir’s picture

> Because it is considered as a BC break. But is it really true?

You're literally talking to the person that spent *days and weeks* to get Drupal 8 running on Symfony 4.4 as well as testing for Symfony 5. We've contributed upstream to fix problems and regressions and it is *hard* to make it work. It was practically impossible to get Drupal 8 to run on Symfony 4.3, only with some of our contributed changes and fixes were we able to make it work on 4.4. That's why Drupal 9 is now on a development snapshot of 4.4 and not 4.3.

So yes, it is very true, there are a lot of changes between Symfony major versions. Symfony 3 was an exception, we've communicated from the start (8.0) that we'll have to update and that some BC breaks will be unavoidable.

The current strategy is based on learnings over the last years to make this process work. Exactly to avoid that things like the Symfony 3 update. Drush and console still runs the Drupal code, so it needs to work with the Symfony version that Drupal ships with. Updating Drupal 9 to Symfony 4 broke Drush again and I think it was even questionable whether it will be possible at all to make Drush 9/10 even work with Drupal 9.

Chi’s picture

@Berdir That makes sense. Thanks.

questionable whether it will be possible at all to make Drush 9/10 even work with Drupal 9

Drush 10 does fully support Drupal 9 in its current state.

mikelutz’s picture

Issue summary: View changes
alexpott’s picture

Issue summary: View changes
mikelutz’s picture

Issue summary: View changes

Now that Symfony 4.4.0 is out, we should block alpha on it.

mikelutz’s picture

drumm’s picture

Krzysztof Domański’s picture

Issue summary: View changes

Issue summary update. Some issues have been done.

Krzysztof Domański’s picture

Issue summary: View changes

Issue summary update. Drupal 9 now uses the stable Symfony 4.4 release.

Gábor Hojtsy’s picture

Title: [META] Requirements for tagging 9.0.0-alpha1 » [META] Requirements for tagging Drupal 9.0.0-alpha1

Include Drupal in title for clarity. (Similar to beta issue).

Gábor Hojtsy’s picture

Issue summary: View changes

Seems like only #3074993: Use "current" in update URLs instead of CORE_COMPATIBILITY to retrieve all future updates remains from the requirements, reviews welcome :)

effulgentsia’s picture

Re #144, amazing that we're down to the final must-have!!

Which means, now is also a good time to re-evaluate our should-have list.

Why is #3075954: Remove duplicate scaffold files a should-have? It was added in #99. I don't really see any downside at all to it being done after alpha1, but a should-have implies that there'd be some downside to that, so what am I missing?

For #3091418: Update composer dependencies on 9.0.x following PHP 7.2 requirement, I think that's an accurate should-have, meaning that it would definitely be very nice for alpha1 to reflect up-to-date dependencies, but that we could also release alpha1 without that if needed and get those updates into later alphas. However, if that issue isn't easy to solve in one shot, would it make sense to split it into ones that are easy, and at least get those into alpha1, and then let the harder ones come later? Also, it might be nice to try to get the ones that need a major version update (e.g., phpunit from 6 to 7) done before alpha1, and let the libraries that only need a minor version update come in a later alpha.

Gábor Hojtsy’s picture

So #3075954: Remove duplicate scaffold files is also listed as a should have in the beta requirements, so I am not sure if that was intentionally added here. How can it be both a should have of alpha and then also beta?

xjm’s picture

Issue summary: View changes

Adding #3099876: Establish a packaging pipeline queue, because getting 9.0.x releases in the mix doubles the number of releases we have to coordinate with infra and build by hand.

xjm’s picture

So #3079680: [META] Requirements for tagging Drupal 9.0.0-beta1 is there because back in October in a meeting between core committers and the DA engineering team, the DA indicated the change was important and asked how to track the issue relative to 9.0.0's alpha release. It's not a must-have, so it does not block when or whether the alpha gets released. And it's listed as a should-have for both the alpha and beta because logically speaking all should-haves of the alpha are either should- or must-haves of the beta.

However, the issue currently does not indicate what the implications of not making the change are, so I'll follow up over there.

xjm’s picture

Issue summary: View changes

One of the should-haves was marked as a duplicate of a different issue, so updating with the correct link.

mondrake’s picture

Dunno whether it's for alpha or beta, but IMHO #3093632: Contrib metapackages cannot be installed in D9 should be addressed - contrib modules depending on sub-modules in other contrib modules cannot be installed (and therefore tested) in 9.0.x ATM.

xjm’s picture

Issue summary: View changes

Removing #3075954: Remove duplicate scaffold files based on discussion on that issue.

Gábor Hojtsy’s picture

Issue summary: View changes

Composer dependencies got updated :) One more should-have down.

Gábor Hojtsy’s picture

Issue summary: View changes

Also the Symfony update was done.

catch’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
Gábor Hojtsy’s picture

Issue summary: View changes

Doctrine is done. 8.9 deprecations policy was announced.

Gábor Hojtsy’s picture

Issue summary: View changes

PHP version is now settled, so the only remaining ones are #3099876: Establish a packaging pipeline queue on the infrastructure side and #3074993: Use "current" in update URLs instead of CORE_COMPATIBILITY to retrieve all future updates on the core side, the two of which should make us alpha-ready AFAIS.

kim.pepper’s picture

DamienMcKenna’s picture

Tagging that this must be completed before 9.0.0-beta1 can be completed, just to cross-reference it all.

catch’s picture

Status: Needs review » Reviewed & tested by the community

We are officially done here apart from final changes to the packaging pipeline (more of an 8.8.x issue than a 9.0.x one but affects our ability to actually be able to tag the release), so moving to RTBC.

Gábor Hojtsy’s picture

My understanding is this is currently on hold for #3108115: Update packaging to support packaging releases from the local copy of subtree splits, instead of Packagist or a workaround to be found for it.

Gábor Hojtsy’s picture

Issue summary: View changes
Status: Reviewed & tested by the community » Needs review

Adding #3086644: LegacyProject composer templates wrongly reference 8.x + fix test coverage as per @mixologic.

Turns out we cant release 9.x until we have some composer templates that can actually, use 9.x.

Gábor Hojtsy’s picture

Status: Needs review » Fixed

Out now! https://twitter.com/DropIsMoving/status/1227312415714533381?s=20

Crediting @xjm, @Mixologic, @drumm, @hestenet for doing the release and coordination.

dww’s picture

If we're crediting the folks for release coordination (yay, thanks!), doesn't it also make sense to credit everyone who contributed to this issue, updated lists, triaged, etc? Just blanket credit everyone who participated here?

Cheers,
-Derek

Gábor Hojtsy’s picture

@dww: this issue has a lot of history, especially in the first few years of it, it was a policy issue discussing details and people popping in to ask questions. It felt most appropriate to me to not try to piece that apart. I credited the four people who were actually sitting live on our video meeting yesterday for two hours debugging problems and testing pieces while doing the release. (I did add @hestenet additionally as he was doing super detailed daily reporting and coordination on the DA side in the past weeks to prepare for the alpha and that was not reflected anywhere).

I did not mean this to devalue the contribution of people who helped discuss and tend to the alpha plan. If this makes crediting uneven, I am happy to remove all credits from this issue.

xjm’s picture

I also added credit for @catch since he also spent hours helping define the alpha requirements, but I agree with the choice in #167. Individual alpha blockers are already credited on their individual issues.

Thanks!

dww’s picture

Definitely agreed with adding @catch. That was the big obvious item in the list that was missing a checkbox. ;) Totally fine leaving the rest of us off.

Cheers,
-Derek

Status: Fixed » Closed (fixed)

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