Fedora Release Engineering
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 (Alpha, 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 (Alpha, 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. Many of these can be located via the release engineering dashboard.
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:
- The Release planning process
- The release validation test plan
- The updates-testing process, via Bodhi and the Updates Policy
- The test compose and release candidate system
- The QA:SOP_blocker_bug_process and QA:SOP_freeze_exception_bug_process
- The Repositories
- The Bugzilla system
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.
As a U.S. based company, Red Hat needs to file for export approval when creating Fedora releases. Currently this involves giving Red Hat Legal a heads up at the final freeze date, and updating Legal once the final tree has been spun.
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.
The Fedora Update tool will need to be updated to handle update requests for the new release. Updates for the new release should start to be pushed a few days before the release date. This will allow for ensuring the update process will work, and to get eyes on the update bits before the rest of the world gets them. This will also allow those who were early adopters of Fedora to get updates after the final bits have been composed into a release.
Fedora “releases” can be built by anyone with a fast machine of proper arch and access to a package repository. All of the tools necessary to build a release are available from the package repository. These tools aim to provide a consistent way to build Fedora releases. A complete release can actually be built with only a couple commands, including the creation of network install images, offline install images ('DVDs'), live images, disk images, install repositories, and other bits. These commands are named pungi and livecd-creator.
Pungi is the tool used to compose Fedora releases. It requires being ran in a chroot of the package set that it is composing. This ensures that the correct userland tools are used to match up with the kernel that will be used to perform the installation. It uses a comps file + yum repos to gather packages for the compose. The Koji build system provides a way to run tasks within chroots on the various arches, as well as the ability to produce yum repos of packages from specific collections.
Livecd-creator is part of the livecd-tools package in Fedora and it is used to compose the live images as part of the Fedora release. It is also used to compose many of the custom Spins or variants of Fedora.
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. MirrorManager has some more details on the mirror system. Many of the images are also offered via BitTorrent as an alternative method of downloading.
Depends on the Fedora Mirror System and infrastructure to populate them privately.