| .. Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| .. include:: ../common.defs |
| |
| .. _roadmap: |
| |
| ATS Release Roadmap |
| =================== |
| |
| .. toctree:: |
| :maxdepth: 1 |
| |
| Apache Traffic Server is currently on a two year major release cycle. At any |
| given time, we guarantee to have two major versions supported. Please refer to |
| our `download page <https://trafficserver.apache.org/downloads>`_ to see the |
| current supported versions. |
| |
| |
| Versions, compatibility and schedules |
| ------------------------------------- |
| |
| 1. We aim to make 1 major release every two years, but the RM and |
| community can of course make more as necessary. |
| 2. We cut LTS major and minor releases straight off the master branch. |
| We will make release branches in a timely manner before making any |
| release candidates. |
| 3. Master is always open for compatible changes. |
| 4. Master is always stable, i.e. commits should be properly tested and |
| reviewed before committed to master. |
| 5. Incompatible changes must be made on the current ``-dev`` branch. |
| 6. All releases are stable releases, following strict Semantic Versioning. |
| 7. Minor and patch releases are made at the discretion of the community and |
| the RM. |
| 8. Minor releases can include new (small / safe) features, but must be |
| compatible within the LTS major version. |
| 9. The LTS cycle, approximately 4 years, does not reset when we make a minor |
| release. |
| 10. The goal is that within a major LTS version, only one minor version is |
| continuously supported. For example, if we have made a v9.1.2, and the |
| RM makes a v9.2.0 release, do not expect any more releases of v9.1.x. |
| The exception here would be serious issues, or security problems. |
| |
| Branch Management |
| ----------------- |
| |
| As of `v10.0.0`` and forward, we will cut all major and minor branches off |
| the main branch (master). The ``-Dev`` branch will be used for incompatible |
| changes, and will be merged into master when the next major release is |
| in progress. |
| |
| .. figure:: images/branch_mgmt.png |
| :align: left |
| |
| The implication of this new process is that we will no longer cherry pick |
| PRs from master to a release branch. Rather, each major and minor release |
| is taken whole sale from the master branch. For managing your PRs, this means: |
| |
| 1. You do not need to nominate your PR for a backport to a minor release, unless |
| the release branch has been cut. A goal here is that the release branches |
| are stable in preparation of the minor release, while master is still open. |
| 2. An exception for this are the older LTS releases and minor critical fixes. |
| For such changes, always nominate your PR for backport to those Projects. |
| 3. The default ``Milestone`` changes for every major and minor release. For |
| example, if the current LTS release is `10.0.1`, the milestone for all new |
| PRs will be `10.1.0` going forward. |
| 4. We will create tags on the master branch regularly, for coordinating testing |
| efforts. These are not releases! |
| 5. We will regularly (weekly) merge master to the current ``-Dev`` branch, |
| to keep them in sync. |
| |
| It is absolutely critical that everyone sets the ``Milestone`` and ``Project`` |
| fields appropriate in this process. This is how we will manage the releases! |
| |
| Current Release Schedule and support |
| ------------------------------------ |
| |
| Master is currently targeted for our first `v10.0.x` release. When this branch |
| is created, the new process kicks in and ``Milestones`` must follow the |
| next minor release number (e.g. `10.1.0`). |
| |
| .. figure:: images/roadmap.png |
| :align: left |
| |
| **Note:** These are examples, only the first minor release number of each |
| major LTS branch is guaranteed to be made. The dates for point releases |
| are also for illustration. |
| |
| Burning release numbers, or how our release process works |
| --------------------------------------------------------- |
| When we upload a tarball (compressed archive) to VOTE for a new release and encounter issues where the code is broken and requires changes, we avoid reusing the same version number. |
| This precaution is taken to ensure the integrity of the process, maintaining that the released code matches what's in the repository and that no unauthorized code gets included. |
| For instance, if we initially have a release candidate named trafficserver-4.1.4-rc1.tar.bz2 and it gets approved in the vote, we will create a new version without the "rc1" in the name, like trafficserver-4.1.4.tar.bz2. |
| However, this change also affects the checksums (sha1 and md5) and the GPG signature. |
| This situation could potentially be exploited to introduce unnoticed code changes. |
| |
| Therefore when creating a new release the first thing we do is create a |
| signed tag and push it. That way everyone can compare that signed tag with |
| the signed tar-ball that we create from the tag and upload it (usually to |
| people.apache.org). |
| |
| Now, when we notice an issue that needs a code-change, we make that on |
| master, cherry-pick it to the release-branch (optional), and create the new |
| tag. |
| |
| Release Managers |
| ---------------- |
| |
| ======= ======= ========= =========== ========= |
| Version Primary Secondary 1st Release Supported |
| ======= ======= ========= =========== ========= |
| 8.x Evan Leif 8/2018 3/2023 |
| 9.x Evan Bryan 1/2020 3/2025 |
| 10.x Leif Bryan 3/2023 3/2027 |
| ======= ======= ========= =========== ========= |
| |
| |
| Each release manager is responsible for the primary, minor release, as well |
| as any patch releases within that minor release. Note that patch releases are |
| primarily for truly critical bugs, and security issues. Don't expect minor |
| fixes or feature additions in a patch release, those happens on each |
| quarterly release. |