From c2f1b8db7bd964e6abdb4cfc91aa895c2870bbb8 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Mon, 21 Feb 2022 12:55:23 -0500 Subject: [PATCH] doc: releases: replace merge window terminology Do not use the merge window terminology which can be confusing and use "development phase" and "stabilisation phase" instead. Signed-off-by: Anas Nashif --- doc/project/release_process.rst | 64 +++++++++++++++++---------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/doc/project/release_process.rst b/doc/project/release_process.rst index 293f52146e..902a7b47ce 100644 --- a/doc/project/release_process.rst +++ b/doc/project/release_process.rst @@ -14,29 +14,28 @@ the features that have actually been implemented, allowing the project to maintain the quality of the overall release without delays because of one or two features that are not ready yet. -The Zephyr release model is loosely based on the Linux kernel model: +The Zephyr release model was loosely based on the Linux kernel model: - Release tagging procedure: - linear mode on main branch, - release branches for maintenance after release tagging. -- Each release period will consist of a merge window period followed by one or - more release candidates on which only stabilization changes, bug fixes, and - documentation can be merged in. +- Each release period will consist of a development phase followed by a + stabilization phase. Release candidates will be tagged during the + stabilization phase. During the stabilization phase, only stabilization + changes such as bug fixes and documentation will be merged unless granted a + special exemption by the Technical Steering Committee. - - Merge window mode: all changes are accepted (subject to approval from the - respective maintainers.) - - When the merge window is closed, the release owner lays a vN-rc1 tag and the - tree enters the release candidate phase - - CI sees the tag, builds and runs tests; QA analyses the report from the - build and test run and gives an ACK/NAK to the build - - The release owner, with QA and any other needed input, determines if the + - Development phase: all changes are accepted (subject to approval from the + respective maintainers). + - Stabilisation phase: the release manager creates a vN-rc1 tag and the tree + enters the stabilization phase + - CI sees the tag, builds and runs tests; Test teams analyse the report from the + build and test run and give an ACK/NAK to the build + - The release owner, with test teams and any other needed input, determines if the release candidate is a go for release - If it is a go for a release, the release owner lays a tag release vN at the same point -- Development on new features continues in topic branches. Once features are - ready, they are submitted to mainline during the merge window period and after - the release is tagged. .. figure:: release_cycle.png :align: center @@ -46,38 +45,41 @@ The Zephyr release model is loosely based on the Linux kernel model: Release Cycle -Merge Window -************* +Development Phase +***************** A relatively straightforward discipline is followed with regard to the merging of patches for each release. At the beginning of each development cycle, the -"merge window" is said to be open. At that time, code which is deemed to be -sufficiently stable (and which is accepted by the development community) is +main branch is said to be open for development. At that time, code which is deemed to be +sufficiently stable (and which is accepted by the maintainers and the wide community) is merged into the mainline tree. The bulk of changes for a new development cycle (and all of the major changes) will be merged during this time. -The merge window lasts for approximately two months. At the end of this time, -the release owner will declare that the window is closed and release the first +The development phase lasts for approximately two months. At the end of this time, +the release owner will declare that the development phase is over and releases the first of the release candidates. For the codebase release which is destined to be -0.4.0, for example, the release which happens at the end of the merge window -will be called 0.4.0-rc1. The -rc1 release is the signal that the time to merge +3.1.0, for example, the release which happens at the end of the development phase +will be called 3.1.0-rc1. The -rc1 release is the signal that the time to merge new features has passed, and that the time to stabilize the next release of the code base has begun. +Stabilization Phase +******************* + Over the next weeks, only patches which fix problems should be submitted to the mainline. On occasion, a more significant change will be allowed, but such occasions are rare and require a TSC approval (Change Control Board). As a -general rule, if you miss the merge window for a given feature, the best thing -to do is to wait for the next development cycle. (An occasional exception is -made for drivers for previously unsupported hardware; if they do not touch any -other in-tree code, they cannot cause regressions and should be safe to add at -any time). +general rule, if you miss submitting your code during the development phase for +a given feature, the best thing to do is to wait for the next development cycle. +(An occasional exception is made for drivers for previously unsupported +hardware; if they do not touch any other in-tree code, they cannot cause +regressions and should be safe to add at any time). As fixes make their way into the mainline, the patch rate will slow over time. The mainline release owner releases new -rc drops once or twice a week; a normal series will get up to somewhere between -rc4 and -rc6 before the code base is -considered to be sufficiently stable and the quality metrics have been achieved -at which point the final 0.4.x release is made. +considered to be sufficiently stable and the release criteria have been achieved +at which point the final 3.1.0 release is made. At that point, the whole process starts over again. @@ -182,7 +184,7 @@ Extended Stabilisation Period Zephyr LTS development cycle differs from regular releases and has an extended stabilization period. Feature freeze of regular releases happens 3-4 weeks -before the scheduled release date. The stabilisation period for LTS is extended +before the scheduled release date. The stabilization period for LTS is extended by 3 weeks with the feature freeze occurring 6-7 weeks before the anticipated release date. The time between code freeze and release date is extended in this case. @@ -192,7 +194,7 @@ Stable APIs Zephyr LTS provides a stable and long-lived foundation for developing products. To guarantee stability of the APIs and the implementation of such APIs it is required that any release software that makes the core of the OS -went through the Zephyr API lifecycle and stabilised over at least 2 releases. +went through the Zephyr API lifecycle and stabilized over at least 2 releases. This guarantees that we release many of the highlighted and core features with mature and well-established implementations with stable APIs that are supported during the lifetime of the release LTS.