Terminology
Release
(Product) Release is a collection of software with unique identity and life cycle.
- Notes
It is advised to separate updates from minor releases for better content tracking.
Release should be immutable - once a release is finished, it’s content or definition must never change.
When designing metadata or data schemas, Releases should carry all information even if there is certain duplicity. Product Versions and Products should not carry any data. These are only for grouping and organizing Releases.
- Examples
Fedora 21 (f-21)
Fedora 21 Updates (f-21-updates)
Red Hat Enterprise Linux 7.0 (rhel-7.0)
Red Hat Enterprise Linux 7.1 (rhel-7.1)
Satellite 5.6.0 for Red Hat Enterprise Linux 7 (satellite-5.6.0-rhel7)
Product Version
Product Version is a group of product Releases with the same name and major version.
- Examples
Fedora 21 (f-21)
Red Hat Enterprise Linux 7 (rhel-7)
Satellite 5.6 (satellite-5.6)
Product
Product is a group of Product Versions with the same name.
- Examples
Fedora (f)
Red Hat Enterprise Linux (rhel)
Satellite (satellite)
Base Product
Base Product usually indicates operating system a Release runs on. In reality it often matches with Product Version of that OS.
- Examples
Fedora 21
Red Hat Enteprise Linux 7
Compose
Compose is a Release snapshot with an unique ID derived from Release and compose date.
- Notes
Compose should consist of well defined building blocks, ideally described by metadata (.treeinfo, repodata, …)
- Examples
RHEL-7.0-YYYYMMDD.0
Satellite-5.6.0-RHEL-7-YYYYMMDD.0
Variant
Both Composes and Releases are divide into Variants. These contain different Release content subsets targeting different users (Server, Workstation).
- Examples
RHEL-7.0-YYYYMMDD.0 / Server
RHEL-7.0-YYYYMMDD.0 / Workstation
Tree
Tree is a Variant for specified architecture.
- Examples
RHEL-7.0-YYYYMMDD.0 / Server / x86_64
RHEL-7.0-YYYYMMDD.0 / Server / ppc64
RHEL-7.0-YYYYMMDD.0 / Workstation / x86_64
Versioning
Versioning should be as simple as possible. Recommended schema is dot separated numbers:
X – major version / product version
X.Y – minor version / update version / release version
X.Y.Z – bugfix version / hotfix version
Note
It is technically possible to use arbitrary string as a version, but this is highly discouraged as it does not allow sorting. If you need it, just start your version with any non-digit character.
Milestones
Milestones are just labels on a Release. They shouldn’t affect how a Release is versioned (e.g. no Release version change on Beta).
- Milestone Labels
<milestone_name>-<version>.<respin>
<milestone_name>-<version> stands for planned milestone
<respin> is internal-only numbering
- Milestone Names
DevelPhaseExit – DEV finished major features, QE performs acceptance testing for entering the Testing phase
InternalAlpha – Internal Alpha, usually tweaking compose for the first public release
Alpha – Public Alpha
InternalSnapshot – Snapshots between Alpha and Beta, usually only for QE purposes
Beta – Public Beta
Snapshot – Snapshots between Beta and RC
RC – Release Candidates
Update – post-GA updates
- Examples
(rhel-7.0) Alpha-1.0
(rhel-7.0) Beta-1.0
(rhel-7.0) Beta-1.1