|
| 1 | +# Versioning Policy |
| 2 | + |
| 3 | +Sentry CLI follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html). This policy defines Sentry CLI's public API and provides examples of how we would apply this policy. |
| 4 | + |
| 5 | +## Public API |
| 6 | + |
| 7 | +For the purposes of Semantic Versioning, Sentry CLI's public API is defined as the following: |
| 8 | + - All subcommands and command line arguments. |
| 9 | + - All publicly exposed functions/methods of the JavaScript API (only available via the [NPM package](https://www.npmjs.com/package/@sentry/cli)). |
| 10 | + - This versioning policy document. |
| 11 | + |
| 12 | +Any of the above items, which are explicitly marked as "experimental," "beta," or similar, are not part of the public API, and are subject to change at any time. |
| 13 | + |
| 14 | +**Anything, which is not explicitly defined as part of the public API, is not part of the public API.** In particular, for semantic versioning purposes, the following items are not part of the public API: |
| 15 | + - Compile-time feature flags, dependencies, MSRV, etc., as we expect most users to use the prebuilt binaries we supply. |
| 16 | + - Any changes to output wording/formatting/etc. |
| 17 | + - The minimum self-hosted Sentry version that we support. |
| 18 | + - Any public items exported from the `sentry-cli` Rust crate, as we do not publish `sentry-cli` to crates.io, and thus do not expect anyone to use it as a library. |
| 19 | + |
| 20 | +> [!NOTE] |
| 21 | +> Although this document intentionally defines the public API narrowly, we aim to avoid unnecessary breakage of features users rely on. We will call out notable behavioral changes in the changelog regardless of version bump. |
| 22 | +
|
| 23 | +## Examples |
| 24 | + |
| 25 | +This section lists examples of changes which would require a major, minor, or patch version bump. All of the lists are non-exhaustive. |
| 26 | + |
| 27 | +### Major Version |
| 28 | + |
| 29 | +The following changes would require a major version bump, unless the affected item is specifically marked as "experimental," "beta," or similar: |
| 30 | + - Removal of a subcommand or an argument to a subcommand. |
| 31 | + - A reduction in the accepted values that can be passed to a command line argument, unless this reduction is necessary to fix a bug, for example, because the argument never handled certain values correctly. |
| 32 | + - Removal of a publicly exposed function/method of the JavaScript API, or any other backwards-incompatible change to these. |
| 33 | + - Any change to this versioning policy, which narrows the public API definition. |
| 34 | + |
| 35 | +### Minor Version |
| 36 | + |
| 37 | +The following changes would only require a minor version bump: |
| 38 | + - A new subcommand or command line argument is added, unless this new item is "experimental," "beta," or similar. |
| 39 | + - A new public item is added to the JavaScript API, unless this new item is "experimental," "beta," or similar. |
| 40 | + - An item which was previously marked "experimental," "beta," or similar has this designation removed, thus being added to the public API. |
| 41 | + - The minimum self-hosted Sentry version supported by Sentry CLI is increased. Such changes will always be clearly mentioned in the changelog. |
| 42 | + |
| 43 | +### Patch Version |
| 44 | + |
| 45 | +The following changes may occur in a patch version: |
| 46 | + - Bug fixes, which do not alter public API. |
| 47 | + - Changes to compile-time feature flags, dependencies, MSRV, etc., though we may often opt to do such changes in a minor. |
| 48 | + - Changes which break functionality which previously had worked with a version of self-hosted Sentry, which we do not officially support. |
0 commit comments