Skip to content

Commit 0395895

Browse files
committed
docs: adding information about the versioning strategy
1 parent 36dd27c commit 0395895

2 files changed

Lines changed: 70 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,7 @@ in terms of request handling and error management.
184184

185185
## Versioning
186186

187-
This SDK follows [Semantic Versioning](https://semver.org/). You can refer to
188-
the releases for details on the changes between versions.
187+
A key aspect of our strategy is that the SDK's major version is synchronized with the ZITADEL core project's major version to ensure compatibility. For a detailed explanation of this policy and our release schedule, please see our [Versioning Guide](VERSIONING.md).
189188

190189
## Contributing
191190

VERSIONING.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Versioning Policy
2+
3+
This document provides a detailed explanation of the versioning and release strategy for the ZITADEL SDKs. Its goal is to provide a clear and predictable versioning scheme.
4+
5+
## Versioning at a Glance
6+
7+
| Version Change | ZITADEL Compatibility | Type of Change | Example |
8+
| :--- | :--- | :--- | :--- |
9+
| **MAJOR** (e.g., 3.x -> 4.x) | Aligned with ZITADEL Core. Requires server upgrade. | Contains breaking changes. | `v3.5.1` -> `v4.0.0` |
10+
| **MINOR** (e.g., 3.1 -> 3.2) | Compatible with the same ZITADEL major version. | New, non-breaking features added. | `v3.1.4` -> `v3.2.0` |
11+
| **PATCH** (e.g., 3.1.0 -> 3.1.1)| Compatible with the same ZITADEL major version. | Backwards-compatible bug fixes. | `v3.1.0` -> `v3.1.1` |
12+
13+
---
14+
15+
## 1. Version Alignment with ZITADEL Core
16+
17+
Our SDKs follow a version alignment policy to ensure seamless compatibility with the ZITADEL core application. The `MAJOR` version number of the SDK directly corresponds to the `MAJOR` version of the ZITADEL instance it is designed to work with.
18+
19+
For example:
20+
- Any SDK release in the `3.x.x` series is built for and tested against ZITADEL `v3`.
21+
- When ZITADEL `v4` is released, a corresponding `4.0.0` version of the SDK will be released.
22+
23+
This strategy prevents compatibility issues arising from breaking changes in the ZITADEL API.
24+
25+
## 2. Release Cadence
26+
27+
The core ZITADEL project operates on a scheduled release cycle, with new major versions released quarterly. Our SDKs follow the same cadence for major releases.
28+
29+
- **Major Releases:** A new major version of the SDK is released in lock-step with each new major version of ZITADEL. This typically occurs at the end of each quarter.
30+
- **Minor and Patch Releases:** Minor (`3.1.0`) and patch (`3.1.1`) releases for the SDKs may occur at any time between major releases. These will include new non-breaking features and bug fixes for the SDK itself and will always maintain compatibility with the corresponding major version of ZITADEL.
31+
32+
## 3. Support and Deprecation Policy
33+
34+
To allow users time for upgrades, we provide support for the two most recent major versions of the SDK. This is often referred to as the "N-1" policy.
35+
36+
- **Supported Versions:** The current major release (`N`) and the immediately preceding major release (`N-1`) are officially supported.
37+
- **Unsupported Versions:** Any version prior to `N-1` is considered deprecated and unsupported.
38+
39+
For example, when SDK `v4.x.x` is released:
40+
- `v4.x.x` becomes the current, fully supported version.
41+
- `v3.x.x` becomes the previous (`N-1`) version and will continue to receive critical backported fixes.
42+
- `v2.x.x` and older versions become unsupported.
43+
44+
We strongly encourage users to stay on a supported version to ensure they have the latest security and stability fixes.
45+
46+
## 4. Pre-Releases
47+
48+
To facilitate testing before a final release, we may publish pre-release versions of the SDK, especially in advance of a new major version. These will be marked with standard SemVer suffixes like `-alpha`, `-beta`, or `-rc` (Release Candidate).
49+
50+
- **Example:** `4.0.0-rc.1` would be the first release candidate for version `4.0.0`.
51+
52+
Pre-release versions are not intended for production use but are made available for early integration testing and feedback.
53+
54+
## 5. Backporting Policy
55+
56+
While new features are only added to the current major release line, we may backport critical fixes to a previous, still-supported major version.
57+
58+
- **What gets backported:** Critical security vulnerabilities and significant stability bugs.
59+
- **What does not get backported:** New features, minor bug fixes, or performance improvements that are not critical.
60+
61+
This ensures that users who cannot immediately upgrade from a supported `N-1` version can still receive the most important fixes.
62+
63+
## 6. Changelog
64+
65+
All changes, including features, bug fixes, and breaking changes for every release, are documented in the `CHANGELOG.md` file at the root of the repository. We encourage you to review the changelog before upgrading.
66+
67+
## 7. Upgrading
68+
69+
When your organization plans to upgrade its ZITADEL instance across a major version (e.g., from v3 to v4), you must also update your application's dependencies to use the corresponding major version of this SDK. Attempting to use a `v3` SDK with a `v4` ZITADEL instance is unsupported and will likely result in errors.

0 commit comments

Comments
 (0)