Updates Policy

From FedoraProject

(Redirected from Package update guidelines)
Jump to: navigation, search

Contents

Introduction

Fedora has differing policies for each of its branches. This document describes for maintainers what sort of updates should be created in packages for each of the various branches of existing Fedora. In the event of questions or clarifications, please file a FESCo trac ticket or discuss on the devel list. In general, releases should go from less conservative (rawhide) to more so (the oldest supported stable release). This document attempts to decribe when and what kinds of updates maintainers should push to fedora users of it's various branches. The Stable release updates vision from the Fedora Board includes more high level discussion and philosophy, while this document is more a practical guide. Refer to Package update HOWTO for the technical steps on pushing the updates

Rawhide / devel / master

Rawhide is the always-rolling development tree. Package updates built for rawhide are composed every day and pushed out to all rawhide consumers. There are no "updates" or "updates-testing" repositories for rawhide. The Bodhi updates system is not used. New builds against this tree also are added to the build root (ie, other packages build from them) quite often.

repos available: base

For updates to rawhide packages, Maintainers SHOULD:

Branched release

A branched release exists for part of the development cycle. It is branched off rawhide and eventually becomes the next stable release. Branched releases do use the fedora updates system (bodhi). There are several "phases" that a branched release goes through that affect what updates can and should be done. In general maintainers should keep in mind that this tree is being used to stabilize for the next release, so changes should be careful and considered and heading toward stability. Builds in branched releases are NOT automatically added to the build root. You will need to request a buildroot override for needed packages.

Pre Beta

This is the time between the branch from rawhide and the Beta release of the new branched OS. During this time we are attempting to stabilize the major versions of software that will be shipped with the final release of the OS. Major updates can be tolerated, but breaking things for early testers should be avoided if possible. Additionally, as we get close to Alpha or Beta releases any change that breaks composes of Live media, install media or testing should be avoided. Packages for Features should be landing and getting major testing.

repos available: base updates-testing

During this time Maintainers MUST (enforced by bodhi):

and Maintainers SHOULD (not enforced):

Beta to Pre Release

This is the time between the Beta release and the final release as stable of the branched OS. The branched OS should now be stabilized and prepared for release. Major changes should be avoided during this period.

repos available: base updates-testing

During this time maintainers MUST:

Pre release

During this time the release is being composed and all non blocker changes should be avoided. In pre release period are non-blocker packages queued for so called zero day updates. These packages will be available in updates repository after whole distribution is released.

repos available: base updates updates-testing

Stable Releases

Philosophy

Releases of the Fedora distribution are like releases of the individual packages that compose it. A major version number reflects a more-or-less stable set of features and functionality. As a result, we should avoid major updates of packages within a stable release. Updates should aim to fix bugs, and not introduce features, particularly when those features would materially affect the user or developer experience. The update rate for any given release should drop off over time, approaching zero near release end-of-life; since updates are primarily bugfixes, fewer and fewer should be needed over time.

This necessarily means that stable releases will not closely track the very latest upstream code for all packages. We have rawhide for that.

Rebases should be carefully considered with respect to their dependencies. A rebase that required (or provided) a new Python ABI, for example, would almost certainly not be allowed. ABI changes in general are very strongly discouraged, they force larger update sets on users and they make life difficult for third-party packagers. Additionally, updates that convert resources or configuration one way (ie, from older->newer) should be approached with extreme caution as there would be much less chance of backing out an update that did these things.

Whenever possible packagers should work with upstream to come up with stable branch releases or common patches for older releases, particularly when rebasing would require large dependency chain updates.

repos available: base updates updates-testing

Updates to 'critical path' packages

Updates that constitute a part of the 'critical path' package set (defined below) including security updates must follow the rules as defined for critical path packages for pending releases, meaning:

For the purposes of this policy, the 'critical path' package set is defined as the following:

Changes to this definition would be done by FESCo or their delegate.

All other updates

All other updates must either:

Package maintainers MUST:

Package maintainers SHOULD:

Exceptions

Some classes of software will not fit in these guidelines. If your package does not fit in one of the classes below, but you think it should be allowed to update more rapidly, propose a new exception class to FESCO and/or request an exception for your specific update case. Note that you should open this dialog _BEFORE_ you build or push updates. The following things would be considered in a exception request.

Things that would make it more likely to grant a request:

Things that would make it less likely to grant a request:

Security fixes

If upstream does not provide security fixes for a particular release, and if backporting the fix would be impractical, then a package may be rebased onto a version that upstream supports. The definition of practicality is left to the judgement of FESCO and the packager.

Interoperability

If a package primarily serves to interoperate with hardware or network protocols, and the interface changes, then a package may be rebased if necessary. This includes network games, IM protocols, hardware music players, cell phones, etc. These packages may also be updated to add support for new devices or formats in compatible ways.

Examples of this type of package: Package-x-generic-16.pnglibopenraw, Package-x-generic-16.pnglibimobiledevice, Package-x-generic-16.pngcalibre, Package-x-generic-16.pngpilot-link

Database packages

Packages like virus scanners and spam filters typically have two components: a rules engine and a database. The database is expected to update frequently (sometimes not through the normal OS update mechanisms), but the rules engine is usually fairly static. However, if the maintained database changes to require a new version of the rules engine, then the package may be a candidate for rebasing.

Examples of this type of package: Package-x-generic-16.pngspamassassin, Package-x-generic-16.pngclamav

Examples

Problems or issues with Updates

In an effort to learn from any mistakes made, in the event of a update causing a widespread or serious problem for Fedora users, please file a FESCo trac ticket. FESCo will discuss and try and work to prevent the issue from happening again. A past record of such issues can be found at Updates Lessons.

FESCo will work with QA and others to prevent or mitigate the issue.

AutoQA

Note that once AutoQA is ready, it will be enabled whenever possible. This guide will be modified to add AutoQA in when it's ready.

AutoQA Acceptance tests for all updates

Note.png
This section is not yet enabled in production

All updates, including security updates, must pass acceptance criteria before being pushed.

The list of tests will be:

Additional tests will be set by FESCo with input from QA.