|
1 | 1 | ## Devfile Release |
2 | 2 |
|
3 | | -Our current process is documented in |
4 | | -[Devfile Versioning and Release Process](docs/proposals/versioning-and-release.md). |
| 3 | +### Release Process |
| 4 | +The current process can be found here: |
| 5 | + |
| 6 | +[Devfile Versioning and Release Process](docs/proposals/versioning-and-release.md). |
| 7 | + |
| 8 | +### Levels of Support |
| 9 | + |
| 10 | +Devfile releases are considered **_stable_** even though the JSON schema is derived from an **_alpha_** version |
| 11 | +of the K8s API which is under development and managed by the `devworkspace` team. |
| 12 | + |
| 13 | + |
| 14 | +This means the scope of support will only apply to the subset of APIs that are part of the Devfile spec. |
| 15 | + |
| 16 | +The following table summarizes the versioning relationship of a Devfile release and it's corresponding components: |
| 17 | + |
| 18 | + |
| 19 | +| Components/Versions of a Devfile Release | Description| Release Stage | |
| 20 | +| :--- | :--- |:--- | |
| 21 | +| [K8s API](docs/proposals/versioning-and-release.md#kubernetes-api) | The `devworkspace` API that Devfiles is based upon. It is independently versioned from the Devfile release. <br> `e.g. K8s API, v1alpha2 is part of the Devfile 2.1.0 release` | alpha |
| 22 | +| [JSON Schema](docs/proposals/versioning-and-release.md#devfile-json-schema) | The Devfile JSON structure that is generated from the K8s API. The version is in sync with the Devfiles release. <br> `e.g. JSON schema v2.1.0 is part of the Devfile 2.1.0 release` |stable |
| 23 | +| API release version | This is the software release version of the K8s API. Similar to the JSON schema, this version is also in sync with the Devfile release. <br> `e.g. K8s API v1alpha2 version 2.1.0 is part of the Devfile 2.1.0 release`| stable | |
| 24 | + |
| 25 | +### Decoupling the API Release Version (Future Consideration) |
| 26 | + |
| 27 | +Currently, our JSON Schema and API releases are kept in sync with the Devfile version, but we could run in a situation |
| 28 | +where we would need to branch off a separate API release and maintain out of sync versions that can be delivered within |
| 29 | +a Devile release or outside of one. <br> |
| 30 | + |
| 31 | +This scenario can happen when we introduce breaking API changes that would impact our consumers while continuing to |
| 32 | +maintain backward compatibility with the schema. |
| 33 | + |
| 34 | +We discussed the following approach in a team meeting, and it's documented here in case we ever need to take action: |
| 35 | + |
| 36 | +1. The **main** branch will continue to be the branch for active development. If there is a breaking API change, then |
| 37 | +we would create a new API release branch and bump up the major version. |
| 38 | +2. There's the potential for dual maintenance if we are working towards a major release and find a breaking API change |
| 39 | +in the current release. We would then create a new API branch to work on the fix and then deliver the changes back to **main**. |
| 40 | +3. Since dev is done on the **main** branch, consumers will run into a known versioning bug: |
| 41 | +[Incorrect api version is generated from "go get github.com/devfile/api/v2@main"](https://github.com/devfile/api/issues/599). |
| 42 | +which will cause interim, unreleased versions to incorrectly appear as `v2xxx` rather than the latest `vNext` API version. |
| 43 | +We will need to document this limitation and make it clear that even though the versioning is incorrect, |
| 44 | +they are getting the latest code. |
| 45 | + |
| 46 | + |
0 commit comments