Fedora Release Life Cycle

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(Additional Release Schedule Information: expose overview link)
m
(25 intermediate revisions by 9 users not shown)
Line 1: Line 1:
The Fedora Project releases a new version of Fedora about every 6 months and provides updated packages (maintenance) to these releases for about 13 months.  This allows users to "skip a release" while still being able to always have a system that is still receiving updates.  
+
{{autolang|base=yes}}
 +
 
 +
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 ==
 
== Development Schedule ==
  
We say developed and released ''about every 6 months'' because like many things--they don't always go exactly as planned.
+
We say developed and released ''approximately every 6 months'' because like many things, they don't always go exactly as planned.
  
The schedule for the release currently under development, {{FedoraVersion|full|next}}, is on its [[Releases/{{FedoraVersion||next}}/Schedule| release schedule]] page. Test and General Availability (final) releases happen at 10:00am Eastern US Time, which is either 1500UTC or 1400UTC depending on if daylight savings effect.
+
The schedule for the release currently under development, {{FedoraVersion|full|next}}, is on its [[Releases/{{FedoraVersion||next}}/Schedule| 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.
  
 
=== Schedule Methodology ===
 
=== Schedule Methodology ===
Line 14: Line 16:
 
!Task/Milestone !!  Start Day !! Length
 
!Task/Milestone !!  Start Day !! Length
 
|-
 
|-
| Planning and Development    || Day After GA of Previous Release || Depends on GA date<br>and working backwards<br>from all the tasks below
+
| Planning and Development    || Day After GA of Previous Release || Depends on GA date and working backwards from all the tasks below
 
|-
 
|-
 
| Feature Acceptance Deadline || Tuesday--Two weeks before Feature Freeze || n/a
 
| Feature Acceptance Deadline || Tuesday--Two weeks before Feature Freeze || n/a
 
|-
 
|-
| [[ReleaseEngineering/FeatureFreezePolicy|Feature Freeze]] || Tuesday--1 week before Alpha Freeze || Until GA
+
| [[ReleaseEngineering/FeatureFreezePolicy|Feature Freeze]] || Tuesday--1 week before Alpha Change Deadline || Until GA
 
|-
 
|-
| [[Alpha_Freeze_Policy|Alpha Freeze]]/[[Branch Freeze Policy|Branch Freeze Event]] || Tuesday--One week after Feature Freeze  || 2 weeks
+
| Branch Freeze Event || Tuesday--One week before Alpha Change Deadline || [[Branch Freeze Policy]] in effect until GA.
 
|-
 
|-
| [[ReleaseEngineering/StringFreezePolicy|String Freeze]] || Same time as Alpha Freeze || Until GA
+
| [[Change_deadlines | Alpha Change Deadline]] || Tuesday--Two weeks before the [[Alpha Release]]  ||  
 
|-
 
|-
| Alpha Go/No-Go Meeting || Wednesday @ 20:00 E{D,S}T before Tuesday release day || n/a
+
| String Freeze || Same time as Alpha Change Deadline || [[Software String Freeze Policy]] in effect until GA.
 
|-
 
|-
| Alpha Public Public Testing || Tuesday--End of Alpha Freeze || 3 Weeks
+
| Alpha Compose  || Thursday--Two days after the Alpha Change Deadline  || 1 day
 
|-
 
|-
| [[ReleaseEngineering/FinalFreezePolicy| Beta Freeze]] || After Alpha Public Testing || Until GA
+
| Alpha Go/No-Go Meeting || Wednesday @ 17:00 E{D,S}T--six days after Alpha Compose || n/a
 
|-
 
|-
| Beta Go/No-Go Meeting || Wednesday @ 20:00 E{D,S}T before Tuesday release day || n/a
+
| Alpha Release || Tuesday--Two weeks after Branch Freeze and 12 days after Alpha Compose || Public testing of Alpha lasts 3 weeks
 
|-
 
|-
| Beta Public Public Testing || Tuesday--End of Beta Freeze || 3 Weeks
+
| [[Change_deadlines | Beta Change Deadline]] || Tuesday--Two weeks before the [[Beta Release]]  ||  
 
|-
 
|-
| Compose GA RC || Two Days after end of Beta Public Testing || 1 Day
+
| Feature Complete  || Tuesday--Same as the Beta Change Deadeline || n/a
 
|-
 
|-
| Test GA RC || After Compose GA RC || 1 week
+
| Beta Compose  || Thursday--Two days after the Beta Change Deadline  || 1 day
 
|-
 
|-
| Final Go/No-Go Meeting || Monday @ 20:00 E{D,S}T before Tuesday release day || n/a
+
| Beta Go/No-Go Meeting || Wednesday @ 17:00 E{D,S}T--six days after Beta Compose || n/a
 
|-
 
|-
| GA Release || Six days after Test GA RC ends || n/a
+
| Beta Release || Tuesday--Two weeks after the Beta Change Deadline and 12 days after Beta Compose || Public testing of Beta lasts 2 weeks + 6 days (ends on a Monday)
 
|-
 
|-
| Maintenance || GA release day || ~13 Months
+
| [[Change_deadlines | Final Change Deadline]] || Monday--End of Beta Release Testing || In effect until GA
 +
|-
 +
| Compose Final RC || Thursday--three days after Final Change Deadline || 1 day
 +
|-
 +
| Test Final RC || Thursday to Tuesday  || 6 days
 +
|-
 +
| Final Go/No-Go Meeting || Tuesday @ 17:00 E{D,S}T after Test Final RC || n/a
 +
|-
 +
| GA Release || Tuesday--Seven days after Test Final RC ends || n/a
 +
|-
 +
| Maintenance || Tuesday--GA release day || ~13 Months
 
|-
 
|-
 
| End of Life || One month after GA of current release + 2 releases || n/a
 
| End of Life || One month after GA of current release + 2 releases || 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 John Poelstra creates.
 +
 +
# Pick GA date (the Tuesday before May 1st or October 31st)
 +
# Work backwards using consistent spacing for freezes, composes, and releases for Alpha, Beta, and Final, as described above
 +
# Set the feature submission and completion dates working backwards from the Branch Freeze date
 +
# The time between the feature submission deadline and the GA of the previous release is the time dedicated to ''development''
 +
#* Development time varies from from release to release based on how when the previous release finished
 +
#* The freeze and testing time (from Branch Freeze until GA) is held constant from release to release
  
 
=== Development Schedule Rationale ===
 
=== Development Schedule Rationale ===
Line 52: Line 74:
 
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 [[FESCo | Fedora Engineering Steering Committee (FESCo)]].
 
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 [[FESCo | 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 [http://article.gmane.org/gmane.linux.redhat.fedora.advisory-board/1475/ here].  GNOME started following a time based release based on the ideas and success of Red Hat Linux and others distribution following Fedora having adopted a similar release cycle too. Several other major components including the Linux kernel, Openoffice.org, Xorg have started following a time based release schedule too. 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.
+
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 [http://article.gmane.org/gmane.linux.redhat.fedora.advisory-board/1475/ 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 ===
 
=== Schedule Contingency Planning ===
If it becomes readily evident, based on the input from representatives of FESCo, Release Engineering, and Quality Assurance that ''any'' of the following milestones will not be met, one week will be added to all remaining scheduled milestones and dependent tasks--including the final release date:
 
* Public Alpha Release
 
* Public Beta Release
 
* Public Final Release
 
  
One week is the 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.
+
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 ==
 
== Maintenance Schedule ==
We say maintained for ''about 13 months'' because the supported period for released 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''.
+
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:
 
This translates into:
Line 69: Line 89:
 
* {{FedoraVersion|long|previous}} will be maintained until 1 month after the release of {{FedoraVersion|long|next}}.
 
* {{FedoraVersion|long|previous}} will be maintained until 1 month after the release of {{FedoraVersion|long|next}}.
 
* {{FedoraVersion|long|current}} will be maintained until 1 month after the release of {{FedoraVersion|long|next2}}.
 
* {{FedoraVersion|long|current}} will be maintained until 1 month after the release of {{FedoraVersion|long|next2}}.
 
=== Maintenance Schedule Methodology ===
 
This methodology is documented in the [[End of life SOP]].
 
  
 
=== Maintenance Schedule Rationale ===
 
=== Maintenance Schedule Rationale ===
Line 77: Line 94:
 
Fedora is [[Objectives | focused]] on free and open source software [[Red Hat contributions | 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.
 
Fedora is [[Objectives | focused]] on free and open source software [[Red Hat contributions | 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 a release under development to be a manageable work load.
+
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 =
 
= Additional Release Schedule Information =

Revision as of 19:48, 9 July 2014

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.

Contents

Development Schedule

We say developed and released 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 22, 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.

Schedule Methodology

Fedora release schedules are proposed by the Release Engineering team and ratified by Fedora Engineering Steering Committee (FESCo). 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 Day After GA of Previous Release Depends on GA date and working backwards from all the tasks below
Feature Acceptance Deadline Tuesday--Two weeks before Feature Freeze n/a
Feature Freeze Tuesday--1 week before Alpha Change Deadline Until GA
Branch Freeze Event Tuesday--One week before Alpha Change Deadline Branch Freeze Policy in effect until GA.
Alpha Change Deadline Tuesday--Two weeks before the Alpha Release
String Freeze Same time as Alpha Change Deadline Software String Freeze Policy in effect until GA.
Alpha Compose Thursday--Two days after the Alpha Change Deadline 1 day
Alpha Go/No-Go Meeting Wednesday @ 17:00 E{D,S}T--six days after Alpha Compose n/a
Alpha Release Tuesday--Two weeks after Branch Freeze and 12 days after Alpha Compose Public testing of Alpha lasts 3 weeks
Beta Change Deadline Tuesday--Two weeks before the Beta Release
Feature Complete Tuesday--Same as the Beta Change Deadeline n/a
Beta Compose Thursday--Two days after the Beta Change Deadline 1 day
Beta Go/No-Go Meeting Wednesday @ 17:00 E{D,S}T--six days after Beta Compose n/a
Beta Release Tuesday--Two weeks after the Beta Change Deadline and 12 days after Beta Compose Public testing of Beta lasts 2 weeks + 6 days (ends on a Monday)
Final Change Deadline Monday--End of Beta Release Testing In effect until GA
Compose Final RC Thursday--three days after Final Change Deadline 1 day
Test Final RC Thursday to Tuesday 6 days
Final Go/No-Go Meeting Tuesday @ 17:00 E{D,S}T after Test Final RC n/a
GA Release Tuesday--Seven days after Test Final RC ends n/a
Maintenance Tuesday--GA release day ~13 Months
End of Life One month after GA of current release + 2 releases 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 John Poelstra creates.

  1. Pick GA 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
  3. Set the feature submission and completion dates working backwards from the Branch Freeze date
  4. The time between the feature submission deadline and the GA of the previous release is the time dedicated to development
    • Development time varies from from release to release based on how when the previous release finished
    • The freeze and testing time (from Branch Freeze until GA) 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 20 will be maintained until 1 month after the release of Fedora 22.
  • Fedora 21 will be maintained until 1 month after the release of Fedora 23.

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