Skip to content

Conversation

@darosior
Copy link
Member

This updates the release lifecycle page to more closely reflect our actual releases. This started as an effort to drop the superfluous EOM status, but ended up as a rewrite of the Versioning, Maintenance and Schedule sections since all were depending on each other.

We only make a distinction between maintained and EOL versions. The EOM status adds unnecessary complexity and is misleading, so remove it.

This also cleans up the Versioning section, which was using three major heading (Versioning, Major releases and Maintenance releases) for a small amount of content all on the same topic of how the software we release is versioned. This also cleans up a redundant statement about backporting consensus changes and removes an unnecessary statement about the distinction between minor and major features for backports (which we don't even follow nowadays as far as i know).

Then we rewrite the maintenance version, which was making a distinction between "maintenance end" and "end of life" that we do not follow in practice, and overall makes it clearer and more concise. In this section i also remove some confused language about how we handle security fixes, which is not consistent with our practice, in favour of a general sentence that EOL versions do not receive security fixes and a link to our Security Advisories page which gives more details on this topic.

Wherever i touched i also updated the examples to use newer versions. In some cases i also switched from pointing to the exact major release (X.0) to the major version (X.Y) which is more accurate and also what we already do on the security advisories page.

@darosior
Copy link
Member Author

Here is how it looks like after this change
image

@darosior
Copy link
Member Author

Some archeology:

  • The EOM status was introduced in Initial Software EOL policy #37 (0959320)
  • The original EOL policy was discussed in this IRC meeting, though as far as i can tell there was no mention of the EOM status. My understanding was that participants essentially discussed what is in effect our currently observed EOL policy but only for the past two major versions (what's as EOM on the website)

Copy link
Member

@fanquake fanquake left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK. I think this better aligns with what the project is currently doing.

We only make a difference between maintained versions and end of life versions. To reflect this
practice, update the lifecycle page to drop the confusing EOM status.

While at it, update the versioning and maintenance sections to more closely reflect the current
practices of the project.
Copy link
Contributor

@murchandamus murchandamus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I was one of the people that was confused by the previous description, but from what I can tell, it had been the modus operandi to put out minor releases for the the prior two branches around a new major release, e.g., we put out minor releases for 29.x and 28.x around the release of 30.0, and from what I understand that’ll be the last time there will be a release from the 28.x branch. If 28.x won’t get any further releases, wouldn’t it then be correct to classify 28.x as “unmaintained” at that point?
Wouldn’t it therefore make more sense to refer to the last two major branches as maintained instead of the last three?
In that sense, the “Maintenance End” column seems more relevant to me than the “End of Life” column.

Copy link
Contributor

@murchandamus murchandamus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 70e2425,

with a few optional suggestions.

Comment on lines +31 to +34
We always maintain the past three major versions released. Once a major version falls outside that window, it becomes
"End of Life". The threshold for backporting a change to a past major version increases as it ages. For example, if the
last major release is 30.0, then 29.x and 28.x are also considered maintained. Once 31.0 is released, then 28.x becomes
"End of Life".
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think about:

  • “Latest versions” instead of “past releases”
  • Moving the example right after the rule it’s the example for
Suggested change
We always maintain the past three major versions released. Once a major version falls outside that window, it becomes
"End of Life". The threshold for backporting a change to a past major version increases as it ages. For example, if the
last major release is 30.0, then 29.x and 28.x are also considered maintained. Once 31.0 is released, then 28.x becomes
"End of Life".
We always maintain the latest three major versions. When a new major version is released, the oldest one falls out of the maintenance window and becomes
"End of Life". For example, if the
last major release is 30.0, then 29.x and 28.x are also considered maintained. Once 31.0 is released, 28.x becomes
"End of Life".
The threshold for backporting a change to an older major version increases as it ages.

However, to take advantage of bug fixes, you would have to upgrade to a later major version.
Major versions that are "End of Life" do not, as a general rule, receive security fixes. For more about our policy on
security fixes, see our [security advisories](/en/security-advisories/) page. We recommend running the latest
maintenance release (point release) of the most recent major version you are able to upgrade to.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously, this is referred to as “minor release”. I would recommend using the same term to refer to the same concept:

Suggested change
maintenance release (point release) of the most recent major version you are able to upgrade to.
maintenance release (minor release) of the most recent major version you are able to upgrade to.

For example, major version 22.0 was released on 2021-09-13 and we provided maintenance fixes (point releases) until 2022-12-14.
Critical security issues would still be continued to be fixed until the EOL date of 2023-04-01.
However, to take advantage of bug fixes, you would have to upgrade to a later major version.
Major versions that are "End of Life" do not, as a general rule, receive security fixes. For more about our policy on
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don’t think it’s necessary to point out that we might make an exception and do more work than we generally intend to:

Suggested change
Major versions that are "End of Life" do not, as a general rule, receive security fixes. For more about our policy on
Major versions that are "End of Life" do not receive security fixes. For more about our policy on

@ajtowns
Copy link
Contributor

ajtowns commented Dec 11, 2025

we put out minor releases for 29.x and 28.x around the release of 30.0, and from what I understand that’ll be the last time there will be a release from the 28.x branch.

Given 30.x is the current release, I think the maintenance policy is something like:

  • 30.x gets moderate backport efforts, including eg:
    • some new features, some bug fixes
    • fixes for disclosed security issues
    • covert fixes for undisclosed medium and above security issues where feasible
  • 29.x get lower backport efforts, with only some of the 30.x backports making it to 29.x
  • 28.x gets low backport efforts, with only some of the 29.x backports making it to 28.x
  • new point releases are made based on the maintainers' judgement

I'm not sure about releases older than that? The release-process.md doc says EOL branches get a -final tag and get deleted, but 24.x-27.x still exist. Deliberately keeping the 24.x-27.x branches (ie the most recent four EOL branches) alive for exceptional backports (a critical severity issue that is being actively exploited?) seems plausible to me, fwiw.

For a security bug that was fixed during the 30.x development cycle, and included in the 30.0 release, the disclosure timeline is:

  • low severity: two weeks after 30.0's release, at which point backporting the fix to 29.x, 28.x becomes easy because the fix doesn't need to be covert
  • medium/high severity: two weeks after 32.0 is released (by which point 29.x and 28.x are end of life)
  • critical severity: ad-hoc

As I understand it, even if medium/high severity bugs that get a covert backport into 29.x or 28.x, that doesn't affect the disclosure timeline.

Perhaps we should provide a more concrete disclosure timeline/schedule somewhere, eg:

  • Security issues fixed in 25.0:
    • Medium/high severity: Disclosed 2024-10-09 (six months after 24.x EOL)
  • Security issues fixes in 26.0:
    • Medium/high severity: Disclosed 2024-11-05 (one month after 25.x EOL)
  • Security issues fixed in 29.0:
    • Low severity: Disclosed 2025-04-28
    • Medium/high severity: Expected disclosure 2026Q2 after release of 31.0 and EOL of 28.x
  • Security issues fixed in 30.0:
    • Low severity: Disclosed 2025-10-24
    • Medium/high severity: Expected disclosure 2026Q4 after release of 32.0 and EOL of 29.x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants