Table of Contents

Making a Platform Release

This page describes the release model for Xfce core components. It further specifies what a Xfce platform release is and what is required in order to do a platform release.

Core Components

A platform release typically includes all Xfce core components. Optionally, it might make sense to as well release various apps, panel-plugins and thunar-plugins after the platform release.

The following components are considered to be Xfce core components and as such have to be part of a platform release https://gitlab.xfce.org/xfce

Timeframe

While the time between the last platform releases was two years, no fixed periodicity to do platform releases is specified. Ruling: “It is finished when it is finished”. If you think it is about time, just communicate that with the other Xfce core developers, elect a release manager, and establish concrete dates and targets for the roadmap.

Roles

Whenever a new release is about to be done, the release manager and release manager assistant(s) are elected by the Xfce core developers.

Here is an overview on different roles and their responsibilities:

Release Manager

The main coordinator for platform releases. The release manager does not need to do all the work alone. Instead, as much work as possible should be passed to other Xfce developers. Here is a list of tasks:

Release Assistant

Component Maintainers

Roadmap

Each platform release should have a dedicated roadmap Wiki page, on which all the release specific details are gathered. The roadmap should at minimum have the following sections:

Here is the Xfce-4.20 Roadmap as an example

Versioning

Xfce core components have a master/main branch, on which only development releases are done and multiple stable branches for each platform version, on which only bugfix releases are done.

Development Releases

Development releases are done on the master/main branch. They always use odd minor numbers. E.g. thunar-4.19.4 or libxfce4util-4.17.2. For each development release of a component, the tiny number will be bumped.

Bugfix Releases

Bugfix releases are done on a stable branch. They always use even minor numbers. E.g. thunar-4.18.3 or libxfce4util-4.16.1. For each bugfix release of a component, the tiny number will be bumped.

Platform Release

Ahead of a stable platform release, pre-releases of all core components are done on the master/main branch of each component. A pre-release of a component is pretty much like a development release, the only difference is, that an additional tag, e.g. xfce-4.18pre1 will be added on the branch for that version. If no changes occurred between the latest development release of the component, it is fine to only create the preX tag.

After two or three pre-releases (to be decided by the release manager), the actual platform release is done.

The platform release itself will be done on the master/main branch. E.g. thunar-4.18.0. If a bugfix version is required for that component at some later time, it is required to create a new platform branch, e.g. xfce-4.18 for that component (as well on Transifex) and do the bugfix releases on that branch.

Release Phases

Typically, two pre-releases are done with four weeks between them, in order to allow packagers and early adopters to report possible regressions and blockers. Two weeks after the second pre-release, the actual platform release usually is done. These times proved to work fine, however the release manager can adjust them as desired.

Dependency Freeze (starting with the release schedule)

During the planning phase for the release schedule, each maintainer is required to investigate which dependencies to non-Xfce packages are required in which version for the components he/she maintains.

When the release schedule is announced, the core-team should register the minimum dependencies for the platform-release on the roadmap.

Theses minimum dependencies have to be kept for the whole platform release process and are only allowed to be changed in emergency situations, if the release manager and all core developers agree.

Feature Freeze (starting with pre1)

With the first pre-release, all core components enter feature freeze, which means from there on only translations and bugfixes are allowed to go into the master/main branch, in order to increase stability.

String Freeze (starting with pre1)

With the first pre-release, all core components enter string freeze, which means from there on no strings which affect translations may be changed. That allows translators to reach a 100% translation for the platform release.

Code Freeze (starting with pre2)

With the last pre-release, all core components enter code freeze phase, which means from there on no code changes are allowed, unless they are approved by at least two members of the core-team. Such code changes should only be done to fix blocking or release-critical bugs. Translations are still allowed to go in.

Feature and string freeze are initiated by the first pre-release. Code freeze is initiated by the second pre-release and will be kept until the final release has been done.

Release Cycle Example (original odp file is attached)
Release Cycle Example (original odp file is attached)