Boxes follows the GNOME release schedule.
We usually branch out the development branch at the first freeze of the release schedule (API/ABI, Feature, Feature, UI). This allows us to continue landing changes in the development branch while stabilizing the release branch.
The release process is the one described in the GNOME Wiki. The Boxes particularities are described bellow:
1. Writing release notes
The NEWS file describes the changes in a public facing format. Internal implementation details should be avoided in favor of descriptive topics of final user's interest.
The content of this file appears in the email announcing the release that is automatically sent to
We have a Python script at build-aux/release-notes.py which outputs the commit messages since the last release, separating translation commits into a different section. The output of this script is not meant to be committed as it is. This script was written with the goal of speeding up the process of writing release-notes. A human should still craft the final text before including it in the release.
The Boxes NEWS file...
- Has a header section with the release number and date
- Lists the changes in a user-facing text format
- Lists the changes in translations by listing their language names
- Lists all contributors to the release in alphabetical order
The Appstream file, also known as appdata file, is used by software stores/catalogs such as GNOME Software and KDE Discovery to present a description of the application.
<releases> section describes the release changes.
Publishing the release
The workflow for publishing releases is:
- Create a topic branch for the merge-request
- Bump the version in the meson.build file
- Add the NEWS, appstream, and meson.build changes to git stage
- Make a signed release commit
- Push the topic branch to GitLab so it can run the CI to validate the build
- Merge it to the release branch
- Pull the changes and tag the release commit
- Push the release tag
- Produce a local tarball
- Upload the local tarball to ftp.gnome.org
See the sections below for some details of these steps.
The meson.build file is the main configuration file for the Meson build.
During the release process, the version parameter in the meson.build is bumped.
The release commit includes the changes in the NEWS, Appstream, and meson.build files.
In Boxes, the release commit is traditionally signed.
The commit message is a one-liner in the format
This is an example of a release commit: fd24d6e2.
Distributions and other types of downstreams can often use git tags instead of tarballs for obtaining a newly released version of Boxes. For this reason, GNOME apps tag their release commits.
In Boxes the git tag name is simply the release version.
This is an example of a release tag: 41.alpha