Codeline Management

The Cassini project is developed and released based on Yocto’s release branch process. This strategy allows us to make Major, Minor and Point/Patch Releases based on upstream stable branches, reducing the risk of having build and runtime issues.

Yocto Release Process Overview


The diagram above gives an overview of the Yocto branch and release process:

  • Development happens primarily in the main (or master) branch.

  • The project has a major release roughly every 6 months where a stable release branch is created.

  • Each major release has a codename which is also used to name the stable release branch (e.g. kirkstone, scarthgap).

  • Once a stable branch is created and released, it only receives bug fixes with minor (point) releases on an unscheduled basis.

  • The goal is for users and 3rd parties layers to use these codenamed branches as a means to be compatible with each other.

For a complete description of the Yocto release process, support schedule and other details, see the Yocto Release Process documentation.

Cassini Branch and Release Process


Cassini’s branch and release process is based on the Yocto release process. The following sub-sections describe in more details the branch strategy for Cassini’s development and release process.

Cassini main branch

  • Represented by the green line on the diagram above.

  • The repository’s main branch is meant to be compatible with master or main branches from Poky and 3rd party layers.

  • meta-cassini is not actively developed on this main branch to avoid the instability inherited from Yocto development on the master branch.

  • To reduce the effort required to move Cassini to a new version of Yocto, this main branch is periodically updated with patches from the Cassini development branches .

Cassini development branches

  • Represented by the red line on the diagram above.

  • Cassini uses development branches based/compatible with Yocto stable branches.

  • A development branch in Cassini is setup for each new Yocto release using the name convention <codename>-dev where <codename> comes from target Yocto release.

  • The development branches in Cassini are where fixes, improvements and new features are developed.

  • On a regular basis, code from the development branch is ported over to the main branch to reduce the effort required to move Cassini to a new version of Yocto.

Cassini release branches

  • Represented by the blue line on the diagram above.

  • A new release branch in Cassini is setup for each new Yocto release using the Yocto codename the branch targets.

  • Hot fixes in the release branch are back ported to the development branch.

  • Release branches are currently maintained not much longer than a Yocto release period (~7 months).

Cassini release tags

  • Cassini is tagged using the version format v<Major>.<Minor>.<Patch>.

  • Tags are always applied to commits from the release branch.

  • The first release in a release branch is a Major release.

  • Following releases in a release branch advance the Minor version number.

  • Patch releases are mainly used for hot fixes which are then back ported to the development branch.

  • Both Major and Minor releases may receive fixes, improvements and new features while Patch releases only receive fixes. Poky and 3rd party layers release/stable branches might be updated and pinned.