|
| 1 | +## Release Cadence and Support Policy ## |
| 2 | + |
| 3 | +This document describes the release cadence for runc as well as outlining the |
| 4 | +support policy for old release branches. Historically, despite runc being the |
| 5 | +most widely used Linux container runtime, our release schedule has been very |
| 6 | +ad-hoc and has resulted in very long periods of time between minor releases, |
| 7 | +causing issues for downstreams that wanted particular features. |
| 8 | + |
| 9 | +### Semantic Versioning ### |
| 10 | + |
| 11 | +runc uses [Semantic Versioning][semver] for releases. However, our |
| 12 | +compatibility policy only applies to the runc binary. We will make a |
| 13 | +best-effort attempt to reduce the impact to users that make direct use of the |
| 14 | +Go packages prefixed with `github.com/opencontainers/runc`, but we do not |
| 15 | +formally guarantee that API compatibility will be preserved. |
| 16 | + |
| 17 | +[semver]: https://semver.org/spec/v2.0.0.html |
| 18 | + |
| 19 | +### Release Cadence ### |
| 20 | + |
| 21 | +> **NOTE**: At time of writing, this proposal is still a draft as we have not |
| 22 | +> yet done several releases using this cadence. If you have feedback on this |
| 23 | +> proposal (such as how well this proposal addresses your needs as a downstream |
| 24 | +> packager of runc), please feel free to [open an issue][new-issue] so we can |
| 25 | +> discuss it further. However, the current plan is for this proposal to be |
| 26 | +> followed for the `1.3.0` and `1.4.0` releases in 2025. |
| 27 | +
|
| 28 | +[new-issue]: https://github.com/opencontainers/runc/issues/new/choose |
| 29 | + |
| 30 | +runc follows a 6-month minor version release schedule, with the aim of releases |
| 31 | +happening at the end of April and October each year. |
| 32 | + |
| 33 | +The first release candidate will be created 2 months before the planned release |
| 34 | +date (i.e. the end of February and August, respectively), at which point the |
| 35 | +release branch will be created and will enter a feature freeze. No new features |
| 36 | +will be merged into the release branch, and large features being developed |
| 37 | +immediately before the feature freeze may have their merge delayed so as to not |
| 38 | +be included in the next release. Most releases will have two or three release |
| 39 | +candidates, but this may change depending on the circumstances of the release |
| 40 | +at the time. |
| 41 | + |
| 42 | +If a last-minute critical issue is discovered, the release may be delayed. |
| 43 | +However, the following release will still go according to schedule (except in |
| 44 | +the exceptionally unlikely scenario where the delay is 4-6 months long, in |
| 45 | +which case the next release is moved forward to when the subsequent release |
| 46 | +would have been). |
| 47 | + |
| 48 | +Here is a hypothetical release timeline to see how this works in practice: |
| 49 | + |
| 50 | +| Date | Release | Notes | |
| 51 | +| ---------- | ------------ | ----- | |
| 52 | +| 200X-02-28 | `1.3.0-rc.1` | `release-1.3` branch created, feature freeze. | |
| 53 | +| 200X-03-12 | `1.3.0-rc.2` | | |
| 54 | +| 200X-03-25 | `1.3.0-rc.3` | | |
| 55 | +| 200X-04-30 | `1.3.0` | `1.3` release published. | |
| 56 | +| 200X-05-10 | `1.3.1` | | |
| 57 | +| 200X-06-21 | `1.3.2` | | |
| 58 | +| 200X-06-25 | `1.3.3` | | |
| 59 | +| 200X-07-02 | `1.3.4` | | |
| 60 | +| 200X-08-28 | `1.4.0-rc.1` | `release-1.4` branch created, feature freeze. | |
| 61 | +| 200X-09-15 | `1.3.5` | Patch releases in other release branches have no impact on the new release branch. | |
| 62 | +| 200X-09-21 | `1.4.0-rc.2` | | |
| 63 | +| 200X-10-31 | `1.4.0` | `1.4` release published. | |
| 64 | +| 200X-11-10 | `1.4.1` | | |
| 65 | +| 200X-12-25 | `1.4.2` | | |
| 66 | + |
| 67 | +(And so on for the next year.) |
| 68 | + |
| 69 | +### Support Policy ### |
| 70 | + |
| 71 | +> **NOTE**: The following policy provides much longer support guarantees than |
| 72 | +> we have historically provided for older runc releases. In order to avoid |
| 73 | +> adding new support guarantees for old runc versions we have long-since |
| 74 | +> stopped supporting, the following support policy only applies for runc |
| 75 | +> releases from `1.2.0` onwards. In other words, runc `1.1.0` and `1.0.0` are |
| 76 | +> not guaranteed support by this policy. |
| 77 | +
|
| 78 | +In order to ease the transition between minor runc releases, previous minor |
| 79 | +release branches of runc will be maintained for some time after the newest |
| 80 | +minor release is published. In the following text, `latest` refers to the |
| 81 | +latest minor (non-release-candidate) runc release published; `latest-1` is the |
| 82 | +previous minor release branch; and `latest-2` is the minor release branch |
| 83 | +before `latest-1`. For example, if `latest` is `1.4.0` then `latest-1` is |
| 84 | +`1.3.z` and `latest-2` is `1.2.z`. |
| 85 | + |
| 86 | + * Once `latest` is released, new features will no longer be merged into |
| 87 | + `latest` and only bug and security fixes will be backported, though we will |
| 88 | + be fairly liberal with what kinds of bugs will considered candidates for |
| 89 | + backporting. |
| 90 | + |
| 91 | + * `latest-1` will only receive security fixes and significant bug fixes (what |
| 92 | + bug fixes are "significant" are down to the maintainer's judgement, but |
| 93 | + maintainers should err on the side of reducing the number of backports at |
| 94 | + this stage). Users are encouraged to start testing and consider migrating to |
| 95 | + the `latest` release of runc, reporting any issues they may find. |
| 96 | + |
| 97 | + * `latest-2` will only receive high severity security fixes (i.e. CVEs that |
| 98 | + have been assessed as having a CVSS score of 7.0 or higher). At this point, |
| 99 | + users still using `latest-2` would be strongly encouraged to upgrade to |
| 100 | + either `latest` or `latest-1`. |
| 101 | + |
| 102 | + * Any older releases will no longer receive any updates, and users are |
| 103 | + encouraged to upgrade in the strongest possible terms, as they will not |
| 104 | + receive any security fixes regardless of severity or impact. |
| 105 | + |
| 106 | +This policy only applies to minor releases of runc with major version `1`. If |
| 107 | +there is a runc `2.0` release in the future, this document will be updated to |
| 108 | +reflect the necessary changes to the support policy for the `1.y` major release |
| 109 | +branch of runc. |
0 commit comments