From FedoraProject

Revision as of 00:25, 25 September 2014 by Adamwill (talk | contribs) (add a brief overview of the development process with lots of links)

The Fedora Project releases a new version of Fedora approximately every 6 months and provides updated packages (maintenance) to these releases for approximately 13 months. This allows users to "skip a release" while still being able to always have a system that is still receiving updates.

Development Schedule

We say approximately every 6 months because like many things, they don't always go exactly as planned.

The schedule for the release currently under development, Fedora 28, is on its release schedule page. Alpha, Beta, and General Availability (final) releases happen at 10:00am Eastern US Time, which is either 1500UTC or 1400UTC depending on whether or not daylight savings is in effect.

Development Process

Fedora uses a system involving two 'development' releases. Rawhide is a constantly rolling development repository. No releases are built directly from Rawhide. 14 weeks before the planned date of a Fedora release, a tree for that release is "Branched" from the Rawhide tree. At that point the Rawhide tree is moving towards the next release but one, and the pending release is stabilized in the Branched tree.

After the Alpha Change deadline, the Updates_policy is active on the Branched release until the GA (Final) release. Packages must go through the updates-testing repository for the Branched release before entering its stable repository, according to rules defined in the updates policy.

For the two weeks prior to a milestone (Alpha, Beta, Final) release (the Change deadline date) an additional deeper freeze is in effect which prevents packages moving from updates-testing to stable except in accordance with the blocker and freeze exception bug policies.

Schedule Methodology

Fedora release schedules are proposed by the Fedora Program Manager and ratified by Fedora Engineering Steering Committee (FESCo), with input from other groups. FESCo is responsible for overseeing the technical direction of the Fedora distribution. A core schedule is created using the key tasks listed below. Detailed team schedules are built around these dates.

Task/Milestone Start Day Length
Planning and Development Branch point of previous release plus one day Variable
Change Proposal Deadline Tue: Branch point minus 3 months n/a
Branch point Tue: Alpha Change Deadline minus 2 weeks n/a
Alpha test composes Any time after Branch point Until Alpha release candidates
Alpha Change Deadline Tue: Alpha Release minus 2 weeks QA:SOP_freeze_exception_bug_process and QA:SOP_blocker_bug_process in effect until Alpha Release
Update policy activation Tue: Same day as Alpha Change Deadline Updates_Policy in effect until GA Release
String Freeze Tue: Same day as Alpha Change Deadline Software String Freeze Policy in effect until GA Release
Changes substantially complete and testable Tue: Same day as Alpha Change Deadline Changes_Freeze_Policy partly in effect until GA Release
Alpha release candidates Any time after Alpha Change Deadline Until Alpha Release
Alpha Go_No_Go_Meeting Thu @ 13:00 E{D,S}T: planned Alpha Release minus five days (repeats if No-Go) n/a
Alpha Release Tue: Beta Release minus 5 weeks, Branch Freeze plus 2 weeks Live until Beta Release
Beta test composes Tue: Beta Change Deadline minus 2 weeks, Alpha Release plus 1 week Until Beta release candidates
Beta Change Deadline Tue: Beta Release minus 2 weeks, Alpha Release plus 3 weeks QA:SOP_freeze_exception_bug_process and QA:SOP_blocker_bug_process in effect until Beta Release
Beta release candidates Any time after Beta Change Deadline Until Beta Release
Changes 100% code complete Tue: Same day as Beta Change Deadline Changes_Freeze_Policy fully in effect until GA release
Beta Go_No_Go_Meeting Thu @ 13:00 E{D,S}T: planned Beta Release minus five days (repeats if No-Go) n/a
Beta Release Tue: Beta Change Deadline plus 2 weeks, GA Release minus 5 weeks Live until GA release
Final test composes Tue: Final Change Deadline minus 2 weeks, Beta Release plus 1 week Until Final release candidates
Final Change Deadline Tue: Final Release minus 2 weeks, Beta Release plus 3 weeks QA:SOP_freeze_exception_bug_process and QA:SOP_blocker_bug_process in effect until GA Release
Final release candidates Any time after Final Change Deadline Until GA Release
Final Go_No_Go_Meeting Thu @ 13:00 E{D,S}T: planned GA Release minus five days (repeats if No-Go) n/a
GA Release Tue: Primary date from which rest of schedule derives n/a
Maintenance Tue: Same day as GA release ~13 Months
End of Life GA of next-but-one release plus one month n/a

Steps to Construct a New Schedule

This is admittedly an unusual methodology, but it is fairly easy to generate using the the TaskJuggler schedules the Fedora Program Manager maintains.

  1. Pick GA release date (the Tuesday before May 1st or October 31st)
  2. Work backwards using consistent spacing for freezes, composes, and releases for Alpha, Beta, and Final, as described above, to the Branch point
  3. Set the change proposal deadline working backwards from the Branch point
  4. The time before the change proposal deadline and after the Branch point of the previous release is the time dedicated to development
    • Development time varies from from release to release based on when the previous release branched
    • The stabilization and testing time (from Branch point until GA release) is held constant from release to release

Development Schedule Rationale

Fedora generally develops new releases over a six month period to provide a regular and predictable release schedule. The bi-annual targeted release dates are May Day (May 1st) and Halloween (October 31) making them easy to remember and avoiding significant holiday breaks. Changes to this standard must be approved by the community-elected Fedora Engineering Steering Committee (FESCo).

A six month release schedule also follows the precedence of Red Hat Linux (precursor to Fedora). Former Red Hat software engineer Havoc Pennington offers a historical perspective here. GNOME started following a time based release based on the ideas and success of Red Hat Linux and other distributions following Fedora having adopted a similar release cycle. Several other major components, including the Linux kernel, Openoffice.org, Xorg, have started following a time based release schedule. While the exact release schedules vary between these components and other upstream projects, the interactions between these components and Fedora makes a six month time based release schedule a good balance.

Schedule Contingency Planning

If the Alpha, Beta, or Final Go_No_Go_Meetings result in a "No Go" determination, that milestone and subsequent milestones will be pushed back by one week.

One week is added to the schedule to maintain the practice of releasing on Tuesdays. Tuesdays are the designated release day because they are good days for news coverage and the established day we synchronize our content with the mirrors that carry our releases. Go/No Go meetings receive input from representatives of FESCo, Release Engineering, and Quality Assurance.

Maintenance Schedule

We say maintained for approximately 13 months because the supported period for releases is dependent on the date the release under development goes final. As a result, Release X is supported until one month after the release of Release X+2.

This translates into:

  • Fedora 26 will be maintained until 1 month after the release of Fedora 28.
  • Fedora 27 will be maintained until 1 month after the release of Fedora 29.

Maintenance Schedule Rationale

Fedora is focused on free and open source software innovations and moves quickly. If you want a distribution that moves slower but has a longer lifecycle, Red Hat Enterprise Linux, which is derivative of Fedora or free rebuilds of that such as CentOS might be more suitable for you. Refer to the RHEL page for more details.

Historically, the Fedora Project has found supporting two releases plus Rawhide and the pre-release Branched code to be a manageable work load.

End of Life (EOL)

When a release reaches the point where it is no longer supported nor updates are created for it, then it is considered End of Life (EOL). Branches for new packages in the SCM are not allowed for distribution X after the Fedora X+2 release and new builds are no longer allowed.

The tasks performed at EOL are documented in the End of life SOP.

Additional Release Schedule Information