blob: c3a5503255e2cc6154d5a9a5f1ea7029a58338aa [file] [log] [blame]
Julian Halle76ade82020-11-25 03:07:21 +01001Versioning policy
2==================
3
4This document captures information about the version identifier used by the
5project. It tells the meaning of each part, where the version information is
6captured and how it is managed.
7
Gyorgy Szinga6c95df2022-11-25 11:15:51 +01008Format of version IDs
9---------------------
Julian Halle76ade82020-11-25 03:07:21 +010010
11The version identifier identifies the feature set supported by a specific
12release, and captures compatibility information to other releases.
13
14This project uses "Semantic Versioning", for details please refer to |SEMVER|.
15
Gyorgy Szinga6c95df2022-11-25 11:15:51 +010016The version number is constructed from three numbers, and an optional
17pre-release identifier. The `MAJOR` number is changed when incompatible API
18changes are introduced, the `MINOR` version when new functionality is added in a
19backward compatible manner, and the `PATCH` version when backwards compatible
20bug fixes are added. The pre-release identifier is appended after the numbers
21separated with a ``-`` and can be the string ``alpha`` or ``beta``.
Julian Halle76ade82020-11-25 03:07:21 +010022
Gyorgy Szinga6c95df2022-11-25 11:15:51 +010023Each release will get a unique version id assigned. When a release is made, the
Julian Halle76ade82020-11-25 03:07:21 +010024version number will get incremented in accordance with the compatibility rules
25mentioned above.
26
Gyorgy Szinga6c95df2022-11-25 11:15:51 +010027Version ID hierarchy
28--------------------
29
30The project hosts multiple components which can be used separately and thus need
31compatibility information expressed independently. Such components get a
Gabor Toth841b0b62023-05-22 10:28:29 +020032dedicated version ID. Examples are :ref:`libs-libsp` :ref:`libs-libts` and
Gabor Tothee2e7cb2024-10-07 17:02:56 +020033:ref:`libs-libpsats`.
Gyorgy Szinga6c95df2022-11-25 11:15:51 +010034
35Components are never released standalone but only part of a TS release. In that
36sense a set of independent component version IDs are assigned to a TS release ID.
Julian Halle76ade82020-11-25 03:07:21 +010037
38Storage and format
39------------------
40
41The version number of each release will be stored at two locations:
42 #. In a tag of the version control system in the form of "vX.Y.Z" where X Y
43 and Z are the major, minor and patch version numbers.
44 #. In a file called version.txt. This file uses ASCII encoding and will
45 contain the version number as "X.Y.Z" where X Y and Z are the major,
46 minor and patch version numbers.
47
48.. note:: The version id is independent from version identifiers of the
49 versioning system used to store the |TS| (i.e. git).
50
51--------------
52
53.. _`Semantic Versioning`: https://semver.org/spec/v2.0.0.html
54
Gyorgy Szinga6c95df2022-11-25 11:15:51 +010055*Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.*
Julian Halle76ade82020-11-25 03:07:21 +010056
57SPDX-License-Identifier: BSD-3-Clause