OrchardCore icon indicating copy to clipboard operation
OrchardCore copied to clipboard

Release v2.0.0

Open MikeAlhayek opened this issue 1 year ago • 34 comments

Prepare the project

Do some housekeeping on GitHub in the main repo.

  • [x] Assign the milestone of the release's version to this issue.
  • [ ] Close remaining issues for the version (including merging corresponding pull requests if suitable) or assign them to the next one.
  • [ ] Assign all issues that were closed for an upcoming version (including a wildcard version like "2.x") to this version (milestone).

Prepare the code and documentation

Update the source, so everything looks like on the new version.

  • [x] Create a release/<version name> branch (e.g., release/2.0.0) from main or the previous release branch. This is necessary to target pull requests for the upcoming release.
  • [x] Create an issue branch out of this branch as usual.
  • [x] Check the release_ci workflow is using the expected .NET version to build the Docker images.
  • [x] Update the OrchardCore.Commons.props file with <VersionSuffix></VersionSuffix> such that preview build numbers are not injected in packages. Verify the VersionPrefix tag matches the released version.
  • [x] Update module versions in src/OrchardCore/OrchardCore.Abstractions/Modules/Manifest/ManifestConstants.cs.
  • [x] Create a new milestone.
  • [x] Change the Orchard Core version in the project templates, more specifically in dotnetcli.host.json and template.json files.
  • [ ] Add final updates to the release notes in the documentation. It should include the following, at least:
    • Overview of the release's highlights and goals. What do you want people to remember this release for?
    • Prerequisites. What framework version do you need, anything else to work with Orchard?
    • Upgrade steps, any migration necessary from previous versions, and any breaking changes.
  • [x] Add the release notes documentation page to the documentation site's navigation in mkdocs.yml and remove it from not_in_nav.
  • [x] Update the documentation to mention the version in all places where the latest version is referenced, for example, but not limited to (do a search for the package version string): Status in the root README, CLI templates, commands, the Creating a new decoupled CMS Website guide.

Test the release

Make sure everything works all right.

Prepare and publish Orchard Core Translations

Update everything in the Translations project. Only do this once all the code changes are done since localized strings can change until then.

  • [ ] Update .po files with PoExtractor. This will also update Crowdin.
  • [ ] Publish the new version on NuGet.
  • [ ] Update the OrchardCore.Translations.All package reference in the main repo's ./Dependencies.Packages.props file to refer to the new NuGet package.

Publish the release

Do the harder parts of making the release public. This should come after everything above is done.

  • [ ] Tag the head of release/<version name> with the version. Include v in the name, e.g. v2.0.0.
  • [ ] Merge release/<version name> to main.
    • You'll need to create a pull request.
    • Merge it as a merge commit, not squash merge.
    • If there are merge conflicts, then create a release/<version name>-integration branch and fix them there.
  • [ ] Create and publish a release on GitHub.
    • Generate release notes.
    • Add a link to the release notes in the docs (something like For details on this version see the [release notes in the documentation](link here).). Note that the docs will only be built once the branch is merged to main.
  • [ ] Test the guides with the packages now automatically published to NuGet. Test at least the following guides:
  • [ ] Update Try Orchard Core.

After the release is done

  • [ ] Create a new milestone with the next release number and close the old milestone.
  • [x] Create a new release notes documentation file for the next version in the OrchardCore.Docs project. (e.g., /releases/2.0.0.md). Don't add it to the docs navigation and exclude it from validation under not_in_nav with mkdocs.yml.
  • [x] Update the OrchardCore.Commons.props file with the next release number, and <VersionSuffix>preview</VersionSuffix> such that preview builds use the new one.

Publicize the release

Let the whole world know about our shiny new release. Savor this part! These steps will make the release public so only do them once everything else is ready.

MikeAlhayek avatar Jul 11 '24 18:07 MikeAlhayek

We'll start this process after PR #16402 is merged.

MikeAlhayek avatar Jul 11 '24 18:07 MikeAlhayek

Don't do this yet, please. We had tons of regressions, the last one you discovered yesterday, so let's wait a bit to see if anything new will be discovered.

@sarahelsaig is also still working on upgrading Orchard Core Commerce (see https://github.com/OrchardCMS/OrchardCore.Commerce/pull/454) and other solutions to the latest preview. Since the goalpost keeps moving with new issues discovered, this is far from straightforward.

Piedone avatar Jul 11 '24 19:07 Piedone

@Piedone yes no need to release this immediately. But as far as I know that @sarahelsaig has been working on this for a while now and found one bug only "which was fixed". So I assumed there was no additional bugs found. Either way, at some point we have to draw a line and just ship so we can allow wider audience to test the new release.

MikeAlhayek avatar Jul 11 '24 19:07 MikeAlhayek

Actually I've found 11 bugs while testing with OCC and the Lombiq modules. The latest was fixed only 3 weeks ago. Also earlier this week I have found a new ISession concurrent access bug in OCC. I haven't opened an issue yet because I couldn't isolate the reproduction steps and it would not be a useful bug report without that.

sarahelsaig avatar Jul 11 '24 20:07 sarahelsaig

The point though is, having OCC and a few other large Lombiq solutions upgraded, and their over 300 UI tests passing, is a strong evidence that we're ready for a release. Otherwise, we'll have subsequent patch releases every other day.

This has been a really bumpy road, getting blocked repeatedly. Version 2 will be a very risky release, hence we had a huge amount of regressions reported. So, due to the lack of a comprehensive automated QA suite, this is our second-best bet to make sure it'll go well.

We can prevent further moving the goalposts by not merging anything else than bugfixes though.

Piedone avatar Jul 11 '24 20:07 Piedone

@Piedone Ideally we want Lombiq projects converted and all tests pass. But, will this happen any time soon? We just don't want to hold the release indefinitely without having some sort of plan to release. Is there a target finish date for Lombiq transition?

Actually I've found 11 bugs while testing with OCC and the Lombiq modules.

@sarahelsaig beside that ISession issue, are there any other issue from the 11 you reported that still need to be addressed?

MikeAlhayek avatar Jul 11 '24 20:07 MikeAlhayek

I'll defer about the timing to Sári. However, this also depends on what changes go to OC in the meantime.

Piedone avatar Jul 11 '24 23:07 Piedone

Once we have timeline, we'll be able to determine what will go into 2.0 and what will have to wait. But we should be looking into releasing 2.0 before August 1st as a max date. 1.8.0 was released in January 2, 2024. So we are well over due for a release.

MikeAlhayek avatar Jul 12 '24 00:07 MikeAlhayek

We triaged this issue and set the milestone according to the priority we think is appropriate (see the docs on how we triage and prioritize issues).

This indicates when the core team may start working on it. However, if you'd like to contribute, we'd warmly welcome you to do that anytime. See our guide on contributions here.

github-actions[bot] avatar Jul 18 '24 18:07 github-actions[bot]

image

Piedone avatar Jul 18 '24 18:07 Piedone

Change the Orchard Core version in the project templates, more specifically in dotnetcli.host.json and template.json files.

@Piedone I think this line item you added to the to do list. Both dotnetcli.host.json and template.json are not tracked on Github. Why do we need these files? Should they be checked in?

MikeAlhayek avatar Jul 20 '24 00:07 MikeAlhayek

They are part of the templates:

image

image

Piedone avatar Jul 22 '24 12:07 Piedone

Are there any drawbacks to gitub's nuget service?

hyzx86 avatar Jul 24 '24 04:07 hyzx86

Do you mean GitHub Packages? It isn't free, unlike Cloudsmith.

Piedone avatar Jul 24 '24 10:07 Piedone

@Piedone I tried a long time ago without any cost

hishamco avatar Jul 24 '24 12:07 hishamco

I see, it's actually free for public packages: https://docs.github.com/en/billing/managing-billing-for-github-packages/about-billing-for-github-packages#about-billing-for-github-packages

Piedone avatar Jul 24 '24 12:07 Piedone

Yes it's, it might be suited for us, especially for nightly builds, the thing I suffered from at that time was referencing them, from another apps

hishamco avatar Jul 24 '24 13:07 hishamco

@hyzx86 @Piedone @hishamco please convert that into a discussion so we can keep this issue 2.0.0 release related only.

Thank you

MikeAlhayek avatar Jul 24 '24 16:07 MikeAlhayek

They are part of the templates:

@Piedone I think the issue is that these files are ignored from .gitignore I am not sure why these are ignored. @agriffard do you recall why this folder was ignore while the files are still on the server? https://github.com/OrchardCMS/OrchardCore/commit/a9122aea1a9bf4e138e63cadb86f258355f03504#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947R204

In this PR, I removed the exclusion rule so that we can track changes to the .template.config folders.

MikeAlhayek avatar Jul 24 '24 21:07 MikeAlhayek

I don't feel like moving to GitHub Packages BTW, it seems like a pretty equivalent service.

Piedone avatar Jul 25 '24 00:07 Piedone

@Piedone It looks like @sarahelsaig completed the migration of e-commerce project and everything is passing. Are there any other project that we should wait for before we resume the release of 2.0?

MikeAlhayek avatar Jul 26 '24 19:07 MikeAlhayek

Yeah, she's working on DotNest as well, which is a different kind of test with all the random people's tenants. Note though that every breaking change like https://github.com/OrchardCMS/OrchardCore/pull/16493 necessitates another round of updates.

I'd also be a lot more confident if we can go a week without a regression being reported.

Piedone avatar Jul 26 '24 22:07 Piedone

Note though that every breaking change like https://github.com/OrchardCMS/OrchardCore/pull/16493 necessitates another round of updates.

This update should not need any code change. Rebuilding the project should be all one will need.

I am okay with waiting a week to waiting. But the question, how long will the DotNest upgrade takes? @sarahelsaig in there an rough ETA for DotNest?

MikeAlhayek avatar Jul 26 '24 22:07 MikeAlhayek

This update should not need any code change. Rebuilding the project should be all one will need.

Great, then!

Piedone avatar Jul 26 '24 23:07 Piedone

in there an rough ETA for DotNest?

Unless there are some new surprise breaking change, I will finish it in the next couple days.

sarahelsaig avatar Jul 29 '24 21:07 sarahelsaig

@sarahelsaig can you share updates, please?

Piedone avatar Aug 15 '24 16:08 Piedone

The important point is that all of our current queries SqlQuery, Lucene Query and Graphql Query as well as the scripting extension executeQuery don't support totals so if we can't get these PRs done on the fly, can we start by defining these api's as returning an object rather than a collection?

link :https://github.com/OrchardCMS/OrchardCore/pull/11159

hyzx86 avatar Aug 18 '24 17:08 hyzx86

The important point is that all of our current queries SqlQuery, Lucene Query and Graphql Query as well as the scripting extension executeQuery don't support totals so if we can't get these PRs done on the fly, can we start by defining these api's as returning an object rather than a collection?

@hyzx86 is this comment related to the release process of 2.0? Maybe you meant to post that on a different issue.

This issue is strictly for releasing 2.0 not with issues that could be related to 2.0. If you have an issue with 2.0, please open a new issue and we'll tag it with 2.0 milestone.

MikeAlhayek avatar Aug 18 '24 17:08 MikeAlhayek

The important point is that all of our current queries SqlQuery, Lucene Query and Graphql Query as well as the scripting extension executeQuery don't support totals so if we can't get these PRs done on the fly, can we start by defining these api's as returning an object rather than a collection?

@hyzx86 is this comment related to the release process of 2.0? Maybe you meant to post that on a different issue.

This issue is strictly for releasing 2.0 not with issues that could be related to 2.0. If you have an issue with 2.0, please open a new issue and we'll tag it with 2.0 milestone.

I mean these tweaks will need to introduce some disruptive updates, and since we've already done some disruptive upgrades in 2.0

hyzx86 avatar Aug 18 '24 17:08 hyzx86

@hyzx86 Then please open a separate issue with any issue/concerns you may have with the current state of main.

MikeAlhayek avatar Aug 18 '24 18:08 MikeAlhayek