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 #81

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

Releasing, Versioning and Deprecation #81

felixfontein opened this issue Jun 25, 2020 · 22 comments

Comments

@felixfontein
Copy link
Collaborator

felixfontein commented Jun 25, 2020

Last updated by @Andersson007 2022-11-11

Introduction

This issue describes how and when community.network 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.

Releasing guidelines

We use the Ansible collection releasing guidelines to conduct releases in this collections.

Next releases

6.0.0 (when needed)
5.X.Y (when needed, see the latest ones and changelog fragments to determine the next release)
4.0.Y (when needed, see the latest ones and changelog fragments)

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 every two months (or when there are minor changes enough for release)
  • major versions every 6 months (or when needed).

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

  • (maybe 2020-08-xx: 1.1.0 - around ansible-base 2.10 final release; if we release 1.1.0 then, the next minor versions will get adjusted)
  • 2020-09-xx: 1.1.0
  • 2020-11-xx: 1.2.0
  • 2021-01-xx: 2.0.0 major release
  • end of April 2021: 3.0.0 major release
  • fall 2021: 4.0.0 major release
  • spring 2022: 5.0.0 major release (UPDATE: actually happened in November 2022)
  • ...

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 for x.Y.z.
  • These releases will happen every two months (if there are changes) or when necessary.

Versioning

  • galaxy.yml in the main 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 (like a new argument or return value, etc) 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 (backporting to the current two major releases).
    • After that, only security fixes are allowed (backporting to the current three major releases).
    • New features to the current major version must not break backwards compatibility!
  • Backporting process:
    • 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!)

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.
    • Cangelog entries contain links to related issues. If there's no issue, link to the PR.
    • 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.
@felixfontein felixfontein pinned this issue Jun 25, 2020
@ansible-collections ansible-collections locked and limited conversation to collaborators Jun 25, 2020
@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), assuming that there is something new.

@felixfontein
Copy link
Collaborator Author

Version 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. The next release (1.2.1 or 1.3.0, depending on content) will be at the end of November.

@ansibullbot ansibullbot added affects_1 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 Nov 16, 2020
@felixfontein
Copy link
Collaborator Author

bot_skip

@felixfontein felixfontein removed affects_1 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 Nov 17, 2020
@felixfontein
Copy link
Collaborator Author

I plan to release 1.3.0 in three days (Wednesday, November 25th).

@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

1.3.1 will be released soon, probably the coming weekend, so that the removal announcements will make it into the next Ansible 2.10.x release.

@felixfontein
Copy link
Collaborator Author

1.3.1 has been released. 1.3.2 might be released when needed, there's nothing planned currently. The next release should be 2.0.0 in the coming week.

@felixfontein
Copy link
Collaborator Author

2.0.0 will be released on Wednesday, January 27th. The release process will start around 12:00 UTC.

@felixfontein
Copy link
Collaborator Author

2.0.0 has been released! 🎉 The next stable-2 release will be 2.1.0 or 2.0.1, whatever comes first, when needed. 3.0.0 is planned for mid 2021 (when needed).

@dericcrago
Copy link
Contributor

1.3.2 has been released. 1.3.3 might be released when needed, there's nothing planned currently.

@dericcrago
Copy link
Contributor

2.0.1 has been released. 2.0.2 is not currently planned.

@felixfontein
Copy link
Collaborator Author

At today's community meeting, we discussed the major release schedule for community.general and community.network. Since Ansible 4.0.0 has feature freeze on 2021-04-26, we plan to release community.network 3.0.0 shortly before that so it can get included in Ansible 4.0.0. This is earlier than the currently panned "mid of 2021". We plan to adjust the major release cycle in general so that major release are made shortly before a major Ansible release, i.e. community.network 4.0.0 will be released so it will be included in Ansible 5.0.0, etc. Since Ansible is supposed to have major releases in approximate 6 months intervals (same as the community.network major releases planned so far), this only shortens the current major release cycle, while keeping the distance between future major releases.

@dericcrago
Copy link
Contributor

dericcrago commented Mar 17, 2021

1.3.3 has been released. 1.3.4 is not currently planned.

@dericcrago
Copy link
Contributor

2.1.0 has been released. The next stable-2 release, if needed, will be 2.2.0 or 2.1.1, whatever comes first. See #81 (comment) for more details on future major releases.

@dericcrago
Copy link
Contributor

3.0.0 has been released from the stable-3 branch.
2.2.0 has been released from the stable-2 branch.
1.3.4 has been released from the stable-1 branch.

Upcoming Minor and Patch releases will be released as needed. See #81 (comment) for more details on future major releases.

@Ompragash
Copy link
Member

🚨
3.2.0 has been released from the stable-3 branch.
2.2.2 has been released from the stable-2 branch.
1.3.7 has been released from the stable-1 branch.

See #81 (comment) for more details on future releases.

@Andersson007
Copy link
Contributor

community.network collection 5.0.0 has been released! See the changelog for details.

@Andersson007
Copy link
Contributor

The community.network collection versions 3.3.1 (Final EOL release, changelog) and 4.0.2 (changelog) have been released.

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

No branches or pull requests

5 participants