1Release Cadence and Process 2=========================== 3 4The project aims to do a release once every 9 months. 5The planned dates are listed in the :ref:`releases/index:Future release plans` 6 7The releases are to be performed and tagged on a dedicated release branch. 8The release process is initiated by an announcement in 9`TF-M mailing list <https://lists.trustedfirmware.org/mailman3/lists/tf-m.lists.trustedfirmware.org/>`_ 10and followed by the creation of a release branch. 11Normal development on the main branch is not blocked and can be continued. 12The testing will be performed on release candidates and depending on 13issues found, additional candidates may be created to fix and retest the issues. 14 15:doc:`The Platform owners </contributing/maintainers>` are expected to 16verify their platforms and confirm the correct operations or provide fixes 17in a timely manner to include in the release. The release notes will list 18all verified platforms. The platforms in Trusted Firmware OpenCI are 19automatically tested and any issues found shall be fixed. 20 21After the final tag, the changes from the release branch will be back ported 22to the main branch. 23 24.. uml:: 25 26 @startuml 27 hide time-axis 28 29 concise "main branch" as main 30 concise "release branch v1.1.x" as rel1 31 concise "release branch v1.2.x" as rel2 32 33 @main 34 -3 is development 35 @0 <-> @8 : release cadence: ~9 months 36 37 @rel1 38 0 is rc1 39 main -> rel1 : start 40 +1 is rc2 41 +1 is v1.1.0 42 +1 is {-} 43 rel1 -> main : back port 44 +1 is v1.1.1 #pink 45 +1 is {-} 46 rel1 -> main : cherry-pick 47 +3 is END #white 48 +1 is {hidden} 49 50 @rel2 51 8 is rc1 52 main -> rel2 : start 53 +1 is v1.2.0 54 +1 is {-} 55 56 rel2 -> main : back port 57 58 @0 <-> @3 : release process 59 @4 <-> @5 : hotfix 60 61 caption Release process 62 63 @enduml 64 65Although this document specifies the release cadence, this does not preclude 66an adhoc release for specific project requirements. 67 68.. note:: 69 When a new release starts the previous release branch obsoletes and is 70 a subject for removal as shown for `v1.1.x` on the diagram above. 71 At any moment only the latest release branch is maintained. 72 The release tags will point to a commit in detached head state. 73 74Release Version Scheme 75---------------------- 76 77Trusted Firmware-M uses a semantic versioning scheme. A version number is 78compiled as a dot separated set of numbers: 79 80**TF-Mv<MAJOR>.<MINOR>.<HOTFIX>** 81 82- <MAJOR>: Major release version for significant feature and API changes. 83- <MINOR>: Minor release version for incremental features and API changes. 84- <HOTFIX>: Used only for backporting **critical bug fix/security patches**. 85 86Long Term Support (LTS) 87----------------------- 88 89From v2.1.0, TF-M project will provide LTS branches. Every alternate release 90will be an LTS release maintained for 3 years. 91The LTS release will be synchronized with 92`Mbed TLS <https://www.trustedfirmware.org/projects/mbed-tls>`_ 93project to be aligned with LTS releases cadence. Mbed TLS is used as the 94default cryptography library by the TF-M Crypto service. 95 96The main purpose of TF-M LTS is to offer a maintained and PSA certified TF-M 97codebase for the whole period of LTS. Without LTS, every TF-M based product 98has to recall or update PSA certification with changes (especially security 99fixes) to the codebase. Some changes like fixes for critical bugs or security 100vulnerabilities are essential to keep a product secure with valid 101PSA certificates. The recertification is a time and resource-consuming process, 102putting extra burden on the platform owners. Moreover, this procedure is inefficient 103and unscalable to be done on a huge number of PSA Certified TF-M platforms. 104 105TF-M intends to centralise PSA certification of the common code and carry it on 106for an LTS lifetime, ensuring that code is free from known bugs and security 107vulnerabilities. For this, each LTS branch will be initially PSA certified for 108a selected reference platform and recertified again on every TF-M release. 109Please see the process<link> below for the details. All platforms, based on LTS 110version can hold PSA certification obtained once without a need for 111recertification on updates if no vulnerability is found in a platform specific code. 112 113LTS content 114^^^^^^^^^^^ 115 116On every TF-M release the following items are backported from the **release** 117branch to active LTS branches: 118 119- Critical bugs 120- Security vulnerability fixes 121- A new platform port with code changes restricted to the relevant platform folder only. 122 123A full release cycle is performed on each updated LTS branch. If no items above were 124delivered to the main branch since the last release, then LTS branches remain 125unchanged with valid PSA certificate for that version. 126 127Frequency and duration 128^^^^^^^^^^^^^^^^^^^^^^ 129 130- A new LTS branch is created on every other TF-M release i.e. every 18 months. 131- Each LTS branch is maintained for 3 years. 132 133.. uml:: 134 135 @startuml 136 hide time-axis 137 138 concise "main branch" as main 139 concise "release branch v2.1.x (LTS)" as lts21 140 concise "release branch v2.2.x" as rel22 141 concise "release branch v2.3.x (LTS)" as lts23 142 concise "release branch v2.4.x" as rel24 143 concise "release branch v2.5.x (LTS)" as lts25 144 145 @main 146 -1 is development 147 @0 <-> @6 : release cadence: ~9 months 148 149 @lts21 150 0 is v2.1.0 151 main -> lts21 : start 152 +1 is "PSA cert" #aquamarine 153 +2 is "v2.1.0-LTS" 154 +2 is {-} 155 +19 is END #white 156 157 @rel22 158 6 is v2.2.0 159 main -> rel22 : start 160 +1 is {-} 161 +1 is v2.2.1 #pink 162 +1 is {-} 163 rel22 -> main : back port 164 rel22 -> lts21 : back port 165 +3 is END #white 166 +1 is {hidden} 167 168 @lts23 169 12 is v2.3.0 170 main -> lts23 : start 171 +1 is "PSA cert" #aquamarine 172 +2 is "v2.3.0-LTS" 173 +2 is {-} 174 175 @8 <-> @9 : hotfix 176 177 @rel24 178 18 is v2.4.0 179 main -> rel24 : start 180 +1 is {-} 181 +2 is v2.4.1 #pink 182 +1 is {-} 183 rel24 -> main : back port 184 rel24 -> lts21 : back port 185 rel24 -> lts23 : back port 186 +2 is END #white 187 188 @0 <-> @12 : LTS release every 18 months 189 190 @lts25 191 24 is v2.5.0 192 main -> lts25 : start 193 194 @0 <-> @24 : LTS lifetime: 3 years 195 196 caption Long Time Support (LTS) process 197 198 @enduml 199 200LTS usage scenario 201^^^^^^^^^^^^^^^^^^ 202 203- Once released, the code (ex:*TF-MvX.Y.Z*) is submitted for PSA certification 204 using the reference platform :ref:`platform/arm/musca_b1/readme:Musca-B1 Platform Specifics`. 205 206- After obtaining PSA certification the release branch is tagged 207 *TF-MvX.Y.Z-LTS* creating a base for PSA certification of downstream projects. 208 209- Ad hoc security fixes on the current **release** branch resulting in a new TF-M 210 release will be backported to LTS branches under maintenance with consequent 211 minor releases on them. Each LTS minor release may be a subject for PSA 212 recertification with evaluation of the code changes (delta certification). 213 214- Platform independent TF-M fixes are evaluated once & available to PSA Certified 215 platforms on the new LTS release for rebase without the need for individual recertification. 216 217- Bug fixes (other than security fixes) are backported from the main branch to active LTS branches 218 and made part of the next regular release. The LTS release will be subject to PSA Certification. 219 220Q&A 221--- 222 2231. **What if the release (e.g. TF-MvX.Y.Z) fails PSA certification?** 224 225 A failure on PSA certification means a critical bug or vulnerability 226 and requires code modification in the form of a hot fix followed by 227 a new minor release. 228 2292. **What is time gap between release and LTS tag?** 230 231 It depends on PSA Lab Certification Body but is expected to be about 1 month. 232 2333. **What if a security vulnerability is found in platform-specific code?** 234 235 A vulnerable platform shall provide a fix for it and perform PSA 236 certification independently. 237 238-------------- 239 240*Copyright (c) 2020-2024, Arm Limited. All rights reserved.* 241