Fedora Release Engineering Overview

Introduction

The development of Fedora is a very open process, involving over a thousand package maintainers (along with testers, translators, documentation writers and so forth). These maintainers are responsible for the bulk of Fedora distribution development. An elected committee of people provides some level of direction over the engineering aspects of the project.

The rapid pace of Fedora development leaves little time for polishing the development system into a quality release. To solve this dilemma, the Fedora project makes use of regular freezes and milestone (Beta, Final) releases of the distribution, as well as "branching" of our trees to maintain different strains of development.

Stable branches of the Fedora tree and associated Repositories are maintained for each Fedora release. The Rawhide rolling development tree is the initial entry point for all Fedora development, and the trunk from which all branches diverge. Releases are Branched from Rawhide some time before they are sent out as stable releases, and the milestone releases (Beta and Final) are all built from this Branched tree.

Nightly snapshot images of various kinds are built from Rawhide and Branched (when it exists) and made available for download from within the trees on the mirrors or from the Koji build system.

The Fedora Release Life Cycle page is a good entry point for more details on these processes. Some other useful references regarding the Fedora release process include:

Final Release Checklist

Various tasks need to be accomplished prior to a final Fedora release. Release Engineering is responsible for many of them, as outlined here.

Release Announcement

The Fedora Documentation Project prepares release announcements for the final releases. A bug needs to be filed for this two weeks before the final release date.

Mirror List Files

A new set of mirror list files need to be created for the new release. Email Fedora Mirror Admins to have these files created. These should be created at the Final Freeze point but may redirect to Rawhide until final bits have been staged.

Release Composing

Fedora “releases” are built using a set of tools available from the package repository. These tools aim to provide a consistent way to build Fedora releases, including the creation of network install images, offline install images ('DVDs'), live images, disk images, install repositories and other bits. A single run of the tools produces a set of repositories, images etc. referred to as a “compose”. In current Fedora, many of the compose tasks run in the Koji build system, so it is not straightforward to replicate the full compose process unless you have your own Koji instance and builders, but you can fairly successfully replicate individual image builds using the tools described below.

Pungi

Pungi is the tool used to compose Fedora releases. It uses a comps file to gather packages for the compose from a Koji tag specified in the configuration[https://pagure.io/pungi-fedora]. Pungi uses the Koji build system to run image build tasks within mock environments on the various arches.

Lorax

Lorax is the tool used to build network install and offline install images. These are produced by the Pungi buildinstall and createiso phases respectively. It is also used to produce ostree installer images, with the ostree_installer phase.

Kiwi

Kiwi is a powerful image building tool. Currently it is used to build live images, cloud and container disk images, and disk images intended for direct hardware deployment (primarily on ARM hardware). Here are the Fedora image description files for Kiwi.

image-builder CLI

image-builder CLI is another image building tool that is part of Red Hat’s larger Image Builder project. It is currently used to build one ARM disk image. In future it will likely replace lorax for building network and offline installer images.

Distribution

Once a compose has been completed, the composed tree of release media, installation trees, and frozen Repositories needs to be synchronized with the Fedora mirror system. has some more details on the mirror system. Many of the images are also offered via BitTorrent as an alternative method of downloading.

Download Mirrors

Depends on the Fedora Mirror System and infrastructure to populate them privately.

BitTorrent

BitTorrent is currently served by http://torrent.fedoraproject.org. Images are added to the system via this Standard Operating Procedure.

Acknowledgements

This document was influenced by release engineering documents from FreeBSD.