-
Notifications
You must be signed in to change notification settings - Fork 931
Versioning and Support Policy
All new features, enhancements, and fixes will be made on the v8 CLI.
The v7 CLI will be updated with security and bug fixes until end of September 2024.
We will provide a supported cf CLI release compatible with every version of CF deployment greater than or equal to v7.0.0
. In January of each year, versions of cf-deployment older than 12-months fall out of support.
CLI Major Version | Start of Support Window | End of Support Window | Min CF Deployment | Min CAPI Release | Max CF Deployment | Max CAPI Release |
---|---|---|---|---|---|---|
V7 | June 25, 2020 | Sep 30, 2024 | v24.6.0 | 1.143.0 | Latest | Latest |
V8 | Sept 21, 2021 | - | v24.6.0 | 1.143.0 | Latest | Latest |
The cf CLI uses semantic versioning to give its users an idea of what to expect when upgrading, how much effort one can expect to need to put in investigating whether an upgrade could break scripts, accustomed workflows, written notes and instructions.
It offers confidence that commands and features do not disappear between releases unexpectedly.
The cf CLI's version format follows SemVer 2.0.
The SemVer specification defines a number of rules based around a defined "public API" of a package, with the purpose of dealing with dependency upgrades.
In the case of the cf CLI, these rules should be interpreted in relation to the commands and their syntax and behaviour.
There is no interface supported for public use in the code base.
The following sections discuss the impact of this policy in more detail.
-
When upgrading to a new patch release (e.g. from 7.0.1 to 7.0.2)...
one can expect the new release to primarily consist of bug fixes. It may also include improvements to help, flavor text, trace output and translations, but no new commands or options. Also, the information returned when running a command on different patch releases against the same API endpoint should not change, e.g. no columns in a table added or removed.
-
When upgrading to a new minor release (e.g. from 7.0.2 to 7.1.0)...
one can expect new features, including new commands and options, in addition to bug fixes and other changes expected in patch releases.
-
When upgrading to a new major release (e.g. from 7.7.10 to 8.0.0)...
one can expect major feature changes, including removal of deprecated commands, new workflows and other changes that likely would break existing scripts and plugins.
Note that this policy does not offer protection against unintended changes in behavior in releases that could cause regressions even in upgrades to patch releases. However, such regressions will be treated with priority and considered for resolution in the first upcoming release, or even cause an additional patch release to be scheduled ahead of the originally planned subsequent release.
Also, the cf CLI depends on certain features provided by its implementation language Golang and its tooling, such as support for multiple platforms and operating systems. Due to occasional security vulnerability patches for Golang, the cf CLI is generally built with the latest (patch release) version of Golang. If Golang stops supporting certain platforms or operating systems, e.g. Windows Vista or 32 bit because it reached its vendor's general "End of Life", the cf CLI will also stop supporting that platform. This will not be considered a change that requires a major version bump, even if the cf CLI completely stops working: most users will not be affected by this anyway, and any users still on such platforms should be migrating anyway - a major version bump would cause alarm and confusion among users of supported platforms who would worry they would be affected as well.
The table below goes into more details about changes that you might expect, not every release will contain every single change listed below (Please refer to release notes for changes included in each release.); the intent is to codify changes for each release version so that users know what to expect, and so that contributors to the cf CLI adhere to this versioning policy.
Type | Patch Release | Minor Release | Major Release | Notes |
---|---|---|---|---|
Arguments Options | No removal or new required arg | No removal or new required arg | ||
Bugs | Bug fixes | Bug fixes | Bug fixes | |
Config | Backwards compatible updates | Backwards compatible updates | As long as functionality is backwards compatible (older versions (within in our support window) of the config works as expected), we reserve the right to remove/edit properties in the config in patch and minor releases. The config is not a public interface. | |
Commands | No removal of commands | No removal of commands | ||
Command Output | Changes to command output | Changes to command output | Changes to command output | In v7 CLI some output is no longer controlled by the cf CLI (we return the CC API response). Therefore, output is subject to change in any release. |
CVE | CVE fixes | CVE fixes | CVE fixes | |
Golang updates | Change Golang version if there is a Golang-related issue | Update to a minor or major version of Golang | Update to a minor or major version of Golang | Major versions of Golang may contain changes to operating system support. See the Support for Operating Systems below, and our Upgrading Section for more information regarding alignment with Golang's supported platforms and operating systems. |
Deprecation | Adds deprecation warnings | Adds deprecation warnings | Removal of deprecated commands and features | |
Exit Codes | Changes only if a bug is found | Changes only if a bug is found | In v7, idempotent commands will exit 0 . Once v7 GAs, changes in exit codes will be rare and changed only if a bug is found. If this occurs, we will of course document it in release notes. |
|
Features | New features - additive only (e.g new commands or backwards compatible flag options) | New features (e.g new commands or flag options) | ||
Flag Options | No removal of flag options | No removal of flag options | ||
Flavor Text | Flavor text updates | Flavor text updates | Flavor text updates | |
Help Text | Help text updates | Help text updates | Help text updates | |
Key/Value | No changes to key/value display | Additive-only changes to key/value display | Removal of key/value items | |
Operating System Support | Tied to Golang's Support for OS | Tied to Golang's Support for OS | If Golang stops supporting certain platforms or operating systems, e.g. Windows Vista or 32 bit because it reached its vendor's general "End of Life", the cf CLI will also stop supporting that platform. We will notify the Community before we upgrade a major version of Golang which contains OS support changes. | |
Table Display | No changes to table display | Additive-only changes to table display | Removal of table items | In minor releases, we will endeavor not to change column order. New columns will be added to the last column. |
Trace Output | Trace output changes | Trace output changes | Trace output changes | |
Translations | Translation updates | Translation updates | Translation updates | |
Versioning | Backwards Compatibility in concert with our Versioning Policy | Backwards Compatibility in concert with our Versioning Policy |