Release Cadence and Process =========================== Project Release Cadence ----------------------- The project aims to do a release once every 6 months around April and November time and are listed in the :ref:`releases/index:Future release plans`. The releases are to be performed and tagged on a dedicated release branch. The release process is initiated by an announcement in `TF-M mailing list `_ and followed by the creation of a release branch. Normal development on the main branch is not blocked and can be continued. The testing will be performed on release candidates and depending on issues found, additional candidates may be created to fix and retest the issues. :doc:`The Platform owners ` are expected to verify their platforms and confirm the correct operations or provide fixes in a timely manner to include in the release. The release notes will list all verified platforms. The platforms in Trusted Firmware OpenCI is automatically tested and any issues found shall be fixed. After the final tag, the changes from the release branch will be back ported to main branch. .. uml:: @startuml concise "main branch" as main concise "release branch v1.1.x" as rel1 concise "release branch v1.2.x" as rel2 @main -3 is development @0 <-> @8 : release cadence: ~6 months @rel1 0 is rc1 main -> rel1 : start +1 is rc2 +1 is v1.1.0 +1 is {-} rel1 -> main : back port +1 is v1.1.1 #pink +1 is {-} rel1 -> main : cherry-pick +3 is {hidden} @rel2 8 is rc1 main -> rel2 : start +1 is v1.2.0 +1 is {-} rel2 -> main : back port @0 <-> @3 : release process @4 <-> @5 : hotfix @enduml Although this document specifies the release cadence, this does not preclude an adhoc release for specific project requirements. .. note:: When a new release starts the previous release branch obsoletes and is a subject for removal as shown for `v1.1.x` on the diagram above. At any moment only the latest release branch is maintained. The release tags will point to a commit in detached head state. Release Version Scheme ---------------------- Trusted Firmware-M uses a semantic versioning scheme. A version number is compiled as a dot separated set of numbers: **TF-Mv..** - : Major release version for significant feature and API changes. - : Minor release version for incremental features and API changes. - : Used only for backporting **critical bug fix/security patches**. -------------- *Copyright (c) 2020-2023, Arm Limited. All rights reserved.*