Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Releasing, Versioning and Deprecation #582

Open
felixfontein opened this issue Jun 25, 2020 · 171 comments
Open

Releasing, Versioning and Deprecation #582

felixfontein opened this issue Jun 25, 2020 · 171 comments
Labels

Comments

@felixfontein
Copy link
Collaborator

felixfontein commented Jun 25, 2020

Introduction

This issue describes how and when community.general is released, and to announce updates to the release/versioning schedule. The next section (Next release) is always updated to contain the next version to be released. Other changes to this first post are always announced by separate posts in this issue.

Next releases

9.4.0 around September 9th
8.6.5 around September 9th
7.5.9 when needed

Releasing schedule for major and minor versions

  • 2020-06-20: 0.2.0 (a couple of days after ansible-base 2.10 beta 1 is out; released from master branch)
  • last week of 2020-07: 1.0.0 major release

From then on:

  • release minor versions shortly before Ansible x.y.0 releases, i.e. roughly every four weeks
  • major versions every 6 months.

The precise dates will be announced on time. Before Ansible releases we might introduce additional minor releases to fix issues.

If no new commit has been merged for a minor release, it must be skipped. Major versions must not be skipped.

The schedule for minor versions might be adjusted in the future (maybe once per month, maybe something else). The release schedule for patch versions (see below) would be adjusted.

Releasing schedule for patch versions

  • Patch versions x.y.z until the last minor release of a major release branch will only be released when necessary. The intended frequency is never, they are reserved for packaging failures, or fixing major breakage / security problems.
  • Once the last minor release of a major release branch (usually x.2.0, generally x.Y.0) has been released, there will be bugfix releases x.Y.z.
  • These releases will happen regularly and when necessary.

Versioning

  • galaxy.yml in the master branch will always contain the version of the next major or minor release. It will be updated right after a release.
  • version_added needs to be used for every new feature and module/plugin, and needs to coincide with the next minor/major release version. (This will eventually be enforced by CI.)

Branching

  • Releasing minor and major releases is done from stable-x branches.
    • Shortly (usually a few hours) before a new major release, stable-x is branched.
  • New features can be backported to the current stable-x release branch after x.0.0, and until the last minor release for stable-x has been released.
    • Once a new major version is released, there will be no more minor releases for previous stable-x branches.
    • From then on, only bugfixes are allowed for ~6 months (backporting to the current two major releases).
    • After that, only major bugfixes security fixes are allowed for another ~6 months (backporting to the current three major releases).
    • This means that next to the main branch, the three latest stable-x branches receive backports.
    • New features must not break backwards compatibility!
  • Backporting process:
    • Until x.2.0, maintainers can merge backports themselves via bot. The bot will hopefully also allow to create backports automatically (if possible without conflicts). (We hope that they know the rules: no breaking of backwards compatibility!)
    • From x.2.0 on, only RM will merge backports.

Deprecation

  • Deprecations are done by version number (not by date).
  • New deprecations can be added during every minor release, under the condition that they do not break backwards compatibility.
  • Deprecations are expected to have a deprecation cycle of at least 2 major versions (i.e. ~1 year). Maintainers can use a longer deprecation cycle if they want to support the old code for that long.

Changelogs

  • Every change that does not only affect docs or tests must have a changelog fragment.
    • Exception: fixing/extending a feature that already has a changelog fragment and has not yet been released. Such PRs must always link to the original PR(s) they update.
    • Use your common sense!
    • (This might change later. The trivial category should then be used to document changes which are not important enough to end up in the text version of the changelog.)
    • Fragments must not be added for new module PRs and new plugin PRs. The only exception are test and filter plugins: these are not automatically documented yet.
  • The (x+1).0.0 changelog continues the x.0.0 changelog.
    • A x.y.0 changelog with y > 0 is not part of a changelog of a later X.*.* (with X > x) or x,Y,* (with Y > y) release.
    • A x.y.z changelog with z > 0 is not part of a changelog of a later (x+1).*.* or x.Y.z (with Y > y) release.
    • Since everything adding to the minor/patch changelogs are backports, the same changelog fragments of these minor/patch releases will be in the next major release's changelog. (This is the same behavior as in ansible/ansible.)
  • Changelogs do not contain previous major releases, and only use the ancestor feature (in changelogs/changelog.yaml) to point to the previous major release.
  • Changelog fragments are removed after a release is made.

Ansible-core support

For every new major release of community.general, the collection drops support for all ansible-core versions that have been End of Life for at least a couple of weeks before the release date.

@felixfontein felixfontein pinned this issue Jun 25, 2020
@ansibullbot ansibullbot added affects_2.10 bug This issue/PR relates to a bug needs_info This issue requires further information. Please answer any outstanding questions needs_template This issue/PR has an incomplete description. Please fill in the proposed template correctly needs_triage labels Jun 25, 2020
@ansible-collections ansible-collections locked and limited conversation to collaborators Jun 25, 2020
@felixfontein
Copy link
Collaborator Author

bot_skip

@felixfontein felixfontein removed affects_2.10 bug This issue/PR relates to a bug needs_info This issue requires further information. Please answer any outstanding questions needs_template This issue/PR has an incomplete description. Please fill in the proposed template correctly needs_triage labels Jun 25, 2020
@felixfontein
Copy link
Collaborator Author

We did a maintenance release this morning, 0.2.1, which is 0.2.0 with all references to the master branch changed to main (see #605).

We recently also did a 0.3.0-experimental.meta.redirects release, which was taken from master at that point and has all symlinks replaced by meta/runtime.yml redirect entries. This is mainly for testing the meta redirect feature, and it is included in the current Ansible 2.10.0a2 release. It will not be continued, and community.general 1.x.y will keep the symlinks (and thus will work fine with Ansible 2.9). (Maybe community.general 2.0.0 will stop using the symlinks and stick to meta/runtime.yml redirect.) Today we also made another releases 0.3.0-experimental.meta.redirects-2 and 0.3.0-experimental.meta.redirects-3, the latest is 0.3.0-experimental.meta.redirects with references to master changed to main.

@felixfontein
Copy link
Collaborator Author

The 1.0.0 release will be on Friday, July 31st.

@felixfontein
Copy link
Collaborator Author

Version 1.0.0 has been released. From now on, bugfixes and new features that are merged need to be backported to the stable-1 branch to appear in new 1.x.y releases.

The 1.1.0 release is regularly scheduled for end of September. Since the Ansible 2.10.0 beta freeze is on 2020-08-14, we might release 1.1.0 already then.

@felixfontein
Copy link
Collaborator Author

It was decided at the community meeting to do the 1.1.0 release on 2020-08-18 (Ansible 2.10 beta freeze).

@felixfontein
Copy link
Collaborator Author

felixfontein commented Aug 18, 2020

Version 1.2.0 1.1.0 has been released. It will be included in Ansible 2.10.0.

@felixfontein
Copy link
Collaborator Author

felixfontein commented Sep 22, 2020

Version 1.2.0 will be released on 2020-09-30, i.e. next week Wednesday.

@felixfontein
Copy link
Collaborator Author

Version 1.2.0 has been released. Next release will be 1.3.0 at ~end of November.

@felixfontein
Copy link
Collaborator Author

I plan to release 1.3.0 in four days (Thursday, November 26th).

@felixfontein
Copy link
Collaborator Author

1.3.0 has been released. The next 1.x.y release will be 1.3.1, whenever there is sufficient content.

The next version including new features will be 2.0.0, planned for end of January 2021.

@felixfontein
Copy link
Collaborator Author

We decided at the community meeting that patch releases (1.3.x) will be made roughly every three weeks, resp. shortly before Ansible 2.10.x releases. Assuming there are bugfixes to release, of course. This rythm might change in February 2021 when Ansible 3.0.0 is released (with community.general 2.0.0).

@felixfontein
Copy link
Collaborator Author

1.3.1 will be released on December 21th (i.e. tomorrow).

@felixfontein
Copy link
Collaborator Author

1.3.1 has been released. 1.3.2 might be released at the beginning of January, before Ansible 2.10.5 is released, if we have any new bugfixes by then.

@felixfontein
Copy link
Collaborator Author

1.3.2 has been released now. The next bugfix release 1.3.3 will probably be in three weeks, i.e. similar to when 2.0.0 will be released.

@felixfontein
Copy link
Collaborator Author

1.3.3 has been released, addressing CVE-2021-20178. 1.3.4 will be released in ~two weeks, i.e. as planned for 1.3.3 before.

@felixfontein
Copy link
Collaborator Author

1.3.4 has been released, addressing CVE-2021-20180. 1.3.5 will be released in ~two weeks, i.e. as planned for 1.3.3/1.3.4 before.

@felixfontein
Copy link
Collaborator Author

6.6.4 has been released with some bugfixes. The next 6.x.y release will be 6.6.5, roughly in four weeks if there is something to be released.

@felixfontein
Copy link
Collaborator Author

7.3.0 has been released with new features and bugfixes and one deprecation. The next 7.x.y release is expected to be 7.4.0 on September 11th.

@felixfontein
Copy link
Collaborator Author

Please note that there is a community vote on a new policy for which ansible-core versions to no longer support for a new community.general major release:

For every new major release of community.general, drop support for all ansible-core versions that have been End of Life for at least a couple of weeks before the release date.

If you want to participate in that vote, please write a comment with +1 (to vote for the new policy) or -1 (to reject the new policy) in ansible-community/community-topics#271. If you want to discuss it, please use the associated issue ansible-community/community-topics#245.

@felixfontein
Copy link
Collaborator Author

6.6.5 and 7.4.0 have been released with bugfixes and the latter with new features. The next 7.x.y release is expected to be 7.5.0 in four weeks, which will be the last 7.x.0 minor release.

8.0.0 will likely be released at the end of October, in the week before November 6th, which happens to be feature freeze for Ansible 9 (see the Ansible 9 release schedule).

@felixfontein
Copy link
Collaborator Author

felixfontein commented Sep 15, 2023

Since the vote was accepted, I've added

For every new major release of community.general, the collection drops support for all ansible-core versions that have been End of Life for at least a couple of weeks before the release date.

as a new section "Ansible-core result" to the issue (#582 (comment)). #7259 has been merged to announce the deprecation, and a later PR (edit: #7269) will drop support for ansible-core 2.11 and 2.12 for the upcoming community.general 8.0.0 release.

@felixfontein
Copy link
Collaborator Author

6.6.6 has been released with new bugfixes. The 7.5.0 release will follow tomorrow.

@felixfontein
Copy link
Collaborator Author

felixfontein commented Oct 9, 2023

7.5.0 has been released. The next 7.x.y release will be 7.5.1, in roughly four weeks. Note that the next minor or major release will be 8.0.0 in the week before November 6th. (Update: 7.5.0 is now really out. See edit history for details why this update is here.)

@felixfontein
Copy link
Collaborator Author

8.0.0 has been released. There might be a 8.0.1 bugfix release in the next week or the week thereafter for Ansible 9.0.0b1 / Ansible 9.0.0rc1.

@felixfontein
Copy link
Collaborator Author

5.8.10 has been released. This was the final 5.x.y release, the 5.x.y release train is now End of Life.

@felixfontein
Copy link
Collaborator Author

6.6.7 has been released. This is the last regular 6.x.y bugfix release; from now on 6.x.y will only receive major bugfixes and security fixes, until it will be EOL in roughly 6 months when community.general 9.0.0 will be released.

@felixfontein
Copy link
Collaborator Author

7.5.1 and 8.0.1 have been released. The next expected 7.x.y release will be 7.5.2 on December 4th, and the next expected 8.x.y release will be either 8.0.2 if a further bugfix release is needed for Ansible 9.0.0rc1 or a possible rc2, or 8.1.0 (also December 4th) for Ansible 9.1.0.

@felixfontein
Copy link
Collaborator Author

8.0.2 has been released for inclusion in Ansible 9.0.0rc1. In case a second release candidate will be necessary for Ansible 9.0.0, a 8.0.3 release might be made, but for now I'm assuming the next 8.x.y release will be 8.1.0.

@felixfontein
Copy link
Collaborator Author

7.5.2 has been released. The next 7.x.y release will be 7.5.3, released probably around January 1st.

@felixfontein
Copy link
Collaborator Author

8.1.0 has been released. The next 8.x.y release will probably be 8.2.0, released around January 1st.

@felixfontein
Copy link
Collaborator Author

8.2.0 and 7.5.3 have been released. The next 8.x.y release will probably be 8.3.0, and the next 7.x.y relesae will be 7.5.4, probably both released around January 29th.

@felixfontein
Copy link
Collaborator Author

8.3.0 and 7.5.4 have been released. The next 8.x.y release will probably be 8.4.0, and the next 7.x.y release will be 7.5.5, probably both released around February 26th.

@felixfontein
Copy link
Collaborator Author

7.5.5 has been released. The next expected 7.5.x release will be 7.5.6, probably around March 25th.

@felixfontein
Copy link
Collaborator Author

8.4.0 has been released. The next expeted 8.x.y release will be 8.5.0 around March 25th.

@felixfontein
Copy link
Collaborator Author

6.6.8 has been released with bugfixes and some security fixes. 7.5.6 and 8.5.0 will follow later today.

@felixfontein
Copy link
Collaborator Author

7.5.6 and 8.5.0 have been released with new features (8.5.0 only), bugfixes, and some security fixes. The next expected releases are 8.6.0 and potentially 7.5.7 in four weeks.

@felixfontein
Copy link
Collaborator Author

7.5.7 and 8.6.0 have been released with new features and modules (8.6.0 only) and bugfixes (both). The next expected releases for these release streams are 6.6.9, 7.5.8, 8.6.1 in four weeks.

Please note that 8.6.0 will be the last 8.x.0 minor release. The next major release, 9.0.0, will happen in four weeks for inclusion in Ansible 10.0.0b1 (https://docs.ansible.com/ansible/devel/roadmap/COLLECTIONS_10.html#release-schedule), in time for Ansible 10's feature freeze.

Please note that at the same time, 6.6.9 will be the last 6.x.y release. The 6.x.y release stream will be End of Life from that point on.

@felixfontein
Copy link
Collaborator Author

6.6.9 has been released. This is the last 6.x.y release. The 6.x.y release train is therefore End of Life. Thanks to everyone who contributed to it and worked on it!

@felixfontein
Copy link
Collaborator Author

7.5.8 and 8.6.1 have been released. From now on, 7.5.x release will only come with security fixes and major bugfixes, and no more regular bugfixes. The 9.0.0 release will follow later today.

@felixfontein
Copy link
Collaborator Author

9.0.0 has been released 🎉 The next 9.x.y release will be either 9.0.1 around May 27th, for inclusion in Ansible 10.0.0rc1, or 9.1.0 around June 17th, for inclusion in Ansible 10.1.0.

@felixfontein
Copy link
Collaborator Author

9.0.1 is out with a few bugfixes for inclusion in Ansible 10.0.0rc1. If there is another Ansible 10 release candidate, we might have a 9.0.2 release in a week. Otherwise, the next 9.x.y release will likely be 9.1.0 around June 17th for Ansible 10.1.0.

@felixfontein
Copy link
Collaborator Author

9.1.0 and 8.6.2 have been released with bugfixes and new features (for 9.1.0). The next expected releases will be around July 15th, potentially also 1-2 days earlier.

@felixfontein
Copy link
Collaborator Author

8.6.3 has been released with bugfixes. The next expected 8.x.y release (8.6.4) will be around August 12th.

@Andersson007
Copy link
Contributor

9.2.0 has been released with bugfixes and new features. The next expected release (9.3.0) will be around September 15th.

@felixfontein
Copy link
Collaborator Author

8.6.4 has been released with bugfixes. The next expected 8.x.y release (8.6.5) will be around September 9th.

@felixfontein
Copy link
Collaborator Author

9.3.0 has been released with new features and bugfixes. The next expected 9.x.y release is 9.4.0 around September 9th.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants