-
Notifications
You must be signed in to change notification settings - Fork 125
docs: add version information for tools in the charming ecosystem #2231
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -91,4 +91,5 @@ storedstate-guidance | |
| :hidden: | ||
|
|
||
| state-transition-testing | ||
| versions | ||
| ``` | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,65 @@ | ||||||
| (tool-versions)= | ||||||
| # Tool versions | ||||||
|
|
||||||
| In deciding which version of tools to use within the charming ecosystem, the base is the key constraint. Once the base is selected, use the latest supported version of each tool whenever possible. | ||||||
|
|
||||||
| Charms should only support deployment on the LTS versions of Juju that are not yet end-of-life. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this should go somewhere else (best practices?) or probably fine to remove it, as LTS and end-of-life already imply this meaning
Suggested change
|
||||||
|
|
||||||
| ## Find tool versions by base | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The titles don't need to be how-to style. E.g., "Tool versions by bases" or even "Bases" if that doesn't feel too terse to you |
||||||
|
|
||||||
| Choosing the base or bases that your charm will support in turn selects the versions of Juju, Ops, and Charmcraft that you should use, and the default version of Python available. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need to introduce the table, I'd say
Suggested change
|
||||||
|
|
||||||
| | Base | Python | Juju | Ops | Charmcraft | | ||||||
| |------|----------------|---------------|--------------|-------------------| | ||||||
| | 18.04 (Bionic Beaver) | [3.6](https://documentation.ubuntu.com/ubuntu-for-developers/reference/availability/python/) | [2.9](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_2.9.x/) | 1.x | [2.x](https://documentation.ubuntu.com/charmcraft/latest/explanation/bases/) | | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We figured it's more logical to link version numbers to release notes, then provide source/reference links outside the table |
||||||
| | 20.04 (Focal Fossa) | [3.8](https://documentation.ubuntu.com/ubuntu-for-developers/reference/availability/python/) | [2.9](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_2.9.x/), [3.6](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_3.6.x/), [4.0](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_4.0.x/juju_4.0.0/) | [2.x](https://github.com/canonical/operator/blob/2.23-maintenance/SECURITY.md) | [2.x](https://documentation.ubuntu.com/charmcraft/latest/explanation/bases/) | | ||||||
| | 22.04 (Jammy Jellyfish) | [3.10](https://documentation.ubuntu.com/ubuntu-for-developers/reference/availability/python/) | [2.9](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_2.9.x/), [3.6](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_3.6.x/), [4.0](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_4.0.x/juju_4.0.0/) | [2.x](https://github.com/canonical/operator/blob/2.23-maintenance/SECURITY.md), [3.x](https://github.com/canonical/operator/blob/main/SECURITY.md) | [3.x](https://documentation.ubuntu.com/charmcraft/3.5.3/reference/platforms/#base), [4.x](https://documentation.ubuntu.com/charmcraft/stable/reference/platforms/#base) | | ||||||
| | 24.04 (Noble Numbat) | [3.12](https://documentation.ubuntu.com/ubuntu-for-developers/reference/availability/python/) | [2.9](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_2.9.x/), [3.6](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_3.6.x/), [4.0](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_4.0.x/juju_4.0.0/) | [2.x](https://github.com/canonical/operator/blob/2.23-maintenance/SECURITY.md), [3.x](https://github.com/canonical/operator/blob/main/SECURITY.md) | [3.x](https://documentation.ubuntu.com/charmcraft/3.5.3/reference/platforms/#base), [4.x](https://documentation.ubuntu.com/charmcraft/stable/reference/platforms/#base) | | ||||||
|
|
||||||
| ## Find your Pebble version from the Juju version | ||||||
|
|
||||||
| Each version of Juju uses a specific version of Pebble. To determine which Pebble features are available to you, look up the Pebble version from the Juju version. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How about strengthening the first sentence. Something like:
Suggested change
|
||||||
|
|
||||||
| | Juju Version | Pebble Version | | ||||||
| |--------------|----------------| | ||||||
| | 2.9 | [1.1.1](https://github.com/canonical/pebble/releases/tag/v1.1.1) | | ||||||
| | 3.1 | [1.4.2](https://github.com/canonical/pebble/releases/tag/v1.4.2) | | ||||||
| | 3.2 | [1.4.0](https://github.com/canonical/pebble/releases/tag/v1.4.0) | | ||||||
| | 3.3 | [1.4.2](https://github.com/canonical/pebble/releases/tag/v1.4.2) | | ||||||
| | 3.4 | [1.7.4](https://github.com/canonical/pebble/releases/tag/v1.7.4) | | ||||||
| | 3.5 | [1.10.2](https://github.com/canonical/pebble/releases/tag/v1.10.2) | | ||||||
| | 3.6 | [1.19.2](https://github.com/canonical/pebble/releases/tag/v1.19.2) | | ||||||
| | 4.0 | [1.26.0](https://github.com/canonical/pebble/releases/tag/v1.26.0) | | ||||||
|
|
||||||
| ## Find the support dates for Juju and Ops | ||||||
|
|
||||||
| Juju releases new minor versions approximately every 3 months, which are supported with bug fixes for four months from their release date and security fixes for another two months. Long Term Support (LTS) releases receive security fixes for 15 years. | ||||||
|
|
||||||
| Ops releases new minor versions approximately once per month. Major versions are supported with security fixes for one year from the latest release. To receive bug and security fixes within a major version, charms must update to the latest minor release within that major version. | ||||||
|
|
||||||
| ### Juju | ||||||
|
|
||||||
| | Version | Status | Release Date | End of Bug Fixes | End of Life | | ||||||
| |---------|--------|--------------|-------------------|-------------| | ||||||
| | [Juju 2.9 (LTS)](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_2.9.x/) | 🟢 Active | 2021-04-28 | | 2035-04-28 | | ||||||
| | [Juju 3.0](https://documentation.ubuntu.com/juju/latest/releasenotes/unsupported/juju_3.x.x/) | 🔴 EOL | 2022-10-22 | 2023-02-22 | 2023-04-23 | | ||||||
| | [Juju 3.1](https://documentation.ubuntu.com/juju/latest/releasenotes/unsupported/juju_3.x.x/) | 🔴 EOL | 2023-02-06 | 2023-06-06 | 2023-08-06 | | ||||||
| | [Juju 3.2](https://documentation.ubuntu.com/juju/latest/releasenotes/unsupported/juju_3.x.x/) | 🔴 EOL | 2023-05-26 | 2023-09-26 | 2023-11-06 | | ||||||
| | [Juju 3.3](https://documentation.ubuntu.com/juju/latest/releasenotes/unsupported/juju_3.x.x/) | 🔴 EOL | 2023-11-10 | 2024-03-10 | 2024-05-10 | | ||||||
| | [Juju 3.4](https://documentation.ubuntu.com/juju/latest/releasenotes/unsupported/juju_3.x.x/) | 🔴 EOL | 2024-02-15 | 2024-06-15 | 2024-08-15 | | ||||||
| | [Juju 3.5](https://documentation.ubuntu.com/juju/latest/releasenotes/unsupported/juju_3.x.x/) | 🔴 EOL | 2024-05-07 | 2024-09-07 | 2024-11-07 | | ||||||
| | [Juju 3.6 (LTS)](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_3.6.x/) | 🟢 Active | 2024-12-11 | | 2039-04-11 | | ||||||
| | [Juju 4.0](https://documentation.ubuntu.com/juju/latest/releasenotes/juju_4.0.x/juju_4.0.0/) | 🟢 Active | 2025-11-14 | 2026-03-14 | 2026-05-14 | | ||||||
|
|
||||||
| ### Ops | ||||||
|
|
||||||
| | Version | Status | Release Date | End of Life | | ||||||
| |---------|--------|--------------|-------------| | ||||||
| | [Ops 1.x](https://github.com/canonical/operator/blob/main/SECURITY.md) | 🔴 EOL | 2020-10-31 | 2024-04-26 | | ||||||
| | [Ops 2.x](https://github.com/canonical/operator/blob/2.23-maintenance/SECURITY.md) | 🟡 Active | 2023-01-25 | 2026-07-30 | | ||||||
| | [Ops 3.x](https://github.com/canonical/operator/blob/main/SECURITY.md) | 🟢 Active | 2025-07-02 | 2027-01-01 | | ||||||
|
||||||
| | [Ops 3.x](https://github.com/canonical/operator/blob/main/SECURITY.md) | 🟢 Active | 2025-07-02 | 2027-01-01 | | |
| | [Ops 3.x](https://github.com/canonical/operator/blob/main/SECURITY.md) | 🟢 Active | 2025-07-02 | 2026-07-02 | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The bit that Copilot can't see here is when the last release was. Maybe I should add that to the table, since you do have to have it in order to do the calculation.
However, maybe we shouldn't show an EOL for 3.x? If we never do another 3.x release then in theory it is the date that's in the table. But it will be annoying to update that with each release (the release script could handle it I suppose), and realistically it's going to keep moving, which is a bit weird for a EOL.
As per the discussion in Gothenburg, I think we need to reconsider Ops versioning this cycle. I think we tentatively agreed that we would pick an LTS version of 3.x towards the end of the cycle, and when we do that we'll have a clearer story here.
If you can only use Ops 2.x with 20.04, maybe our "just move to 3.x" isn't good enough and we have to actually make 2.23 an LTS that lasts until April 2035?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Our latest thinking is to list the latest Ops release for each major version, eg 3.5, along with the corresponding release and EOL dates
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest changing 🔴 to ❌ for better colour-blind accessibility. We also thought that Active is worth keeping, but change the name and symbol. The name could be something like "Upgrade soon". Maybe 🔔 for the icon? Not sure!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor: I'd probably make this more active. Something like: