= Fedora Release Life Cycle

include::{partialsdir}/unreviewed-message.adoc[]

////
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 _approximately every 6 months_ because like many things, they don't always go exactly as planned. The schedule is not strictly time-based, but a hybrid of time and quality. The milestone releases are QA:Release_validation_test_plan[tested] for compliance with the https://fedoraproject.org/wiki/Fedora_Release_Criteria[Fedora Release Criteria], and releases will be delayed if this is not the case.

The schedule for the release currently under development, , is on its https://fedoraproject.org/wiki/Releases/{{FedoraVersion[|next}}/Schedule| release schedule] page. Beta, and General Availability (final) releases happen at 14:00 UTC.

[[development-planning]]
=== Development Planning

Fedora development planning is handled by the https://fedoraproject.org/wiki/Changes/Policy[Release Planning Process]. So-called _Changes_ are proposed, initially reviewed, and monitored through the development process by the https://fedoraproject.org/wiki/Fedora_Engineering_Steering_Committee[engineering steering committee].

[[development-process]]
=== Development Process

Fedora uses a system involving two 'development' trees. https://fedoraproject.org/wiki/Releases/Rawhide[Rawhide] is a constantly rolling development tree. No releases are built directly from Rawhide. Approximately 10 weeks before the planned date of a Fedora release, a tree for that release is "https://fedoraproject.org/wiki/Releases/Branched[Branched]" from the Rawhide tree. At that point the Rawhide tree is moving towards the release _after_ the new Branched release, and the pending release is stabilized in the Branched tree.

After the https://fedoraproject.org/wiki/Updates_Policy#Bodhi_enabling[Bodhi activation point], the Bodhi system is permanently active on the Branched release (all the way until it goes EOL), and requirements for updates to be marked as _stable_ are set out in the https://fedoraproject.org/wiki/Updates_Policy[Updates Policy]. Packages must go through the https://fedoraproject.org/wiki/Repositories#updates-testing[_updates-testing_] repository for the release before entering its https://fedoraproject.org/wiki/Repositories#stable[_stable_] repository, according to rules defined in the updates policy: these rules tighten gradually from Beta through to post-GA (Final), but the basic process does not change.

For some time prior to a milestone (Beta, Final) release a https://fedoraproject.org/wiki/Milestone_freezes[freeze] is in effect which prevents packages moving from _updates-testing_ to _stable_ except in accordance with the QA:SOP_blocker_bug_process[blocker] and QA:SOP_freeze_exception_bug_process[freeze exception] bug policies. This freeze is lifted once the milestone is finished, and so packages begin to move from _updates-testing_ to _stable_ as normal again, until the next milestone's freeze date.

[[schedule-methodology]]
=== Schedule Methodology

Fedora release schedules are proposed by the https://fedoraproject.org/wiki/Fedora_Program_Management[Fedora Program Manager] and ratified by the https://fedoraproject.org/wiki/FESCo[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.

_Note: When referring to *Beta/Final Target*, we refer to an planned date. When referring to *Beta/Final release* only, we refer to a date the release has actually happened._

[cols=",,",options="header",]
|=======================================================================
|Task/Milestone |Start Day (Tuesdays or Thursdays) |Length
|Planning and Development |_Branch point_ of _previous release_ plus *one day* |Variable

|https://fedoraproject.org/wiki/Changes/Policy#For_Developers[Changes Checkpoint: Proposal deadline for Changes requiring _Mass rebuild_] |Tue: _Mass rebuild_ minus *3 weeks* |n/a

|https://fedoraproject.org/wiki/Changes/Policy#For_Developers[Changes Checkpoint: Proposal deadline for System Wide Changes] |Tue: _Mass rebuild_ minus *1 week* |n/a

|*Mass rebuild* |_Branch point_ minus *5 weeks* |Until _Branch point_

|https://fedoraproject.org/wiki/Changes/Policy#For_Developers[Changes Checkpoint: Proposal deadline for Self Contained Changes] |Tue: _Branch point_ minus *3 weeks* |n/a

|*https://fedoraproject.org/wiki/Releases/Branched[Branch point]* |Tue: _Preferred Beta Release Target_ minus *5 weeks* |n/a

|https://fedoraproject.org/wiki/Changes/Policy#For_Developers[Changes Checkpoint: Completion deadline (testable)] |Tue: *Same day* as _Branch point_ |N/A

|String Freeze |Tue: _Branch point_ plus *1 week* |https://fedoraproject.org/wiki/Software_String_Freeze_Policy[Software String Freeze Policy] in effect until _Final Release (GA)_

|https://fedoraproject.org/wiki/Updates_Policy#Bodhi_activation[Bodhi activation point] |Tue: _Preferred Beta Target_ minus *3 weeks*, *Same day* as _Beta Freeze_ |Bodhi enabled and Updates_Policy requirements in effect until _EOL_

|https://fedoraproject.org/wiki/Milestone_freezes[Beta Freeze] |Tue: _Preferred Beta Target_ minus *3 weeks* |QA:SOP_freeze_exception_bug_process and QA:SOP_blocker_bug_process in effect until _Beta Release_

|https://fedoraproject.org/wiki/Changes/Policy#For_Developers[Changes Checkpoint: 100% code complete deadline ] |Tue: *Same day* as _Beta Freeze_ |N/A

|QA:SOP_compose_request[Beta release candidates] |Any time after _Beta Freeze_ |Until _Beta Release_

|Beta Go_No_Go_Meeting |*Thu* @ 13:00 E\{D,S}T: planned _Preferred Beta Target_ *minus five days* (repeats if No-Go) |n/a

|*Preferred Beta Target* |Tue: _Preferred Final Target_ minus *5 weeks* |Live until _GA release_

|Beta Target #1 |Tue: _Preferred Beta Target_ plus *1 week*, _Preferred Final Target_ minus *4 weeks* |n/a

|https://fedoraproject.org/wiki/Milestone_freezes[Final Freeze] |Tue: _Preferred Final Target_ minus *2 weeks* |QA:SOP_freeze_exception_bug_process and QA:SOP_blocker_bug_process in effect until _Final Release (GA)_

|QA:SOP_compose_request[Final release candidates] |Any time after _Final Freeze_ |Until _Final Release (GA)_

|Final Go_No_Go_Meeting |*Thu* @ 13:00 E\{D,S}T: planned _Final Release (GA)_ *minus five days* (repeats if No-Go) |n/a

|*Preferred Final Target* |Tue: *Primary date* from which rest of schedule derives + This date is either the Tuesday before May 1st or October 31st. |n/a

|Final Target #1 |Tue: _Preferred Final Target_ plus *1 week* |n/a

|Maintenance |Tue: *Same day* as _Final Release (GA)_ |~**13 Months**

|End of Life |_Final Release (GA) of next-but-one release_ plus *one month* |n/a
|=======================================================================

[[development-schedule-rationale]]
=== 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 for avoiding significant holiday breaks. Changes to this standard must be approved by the community-elected https://fedoraproject.org/wiki/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 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.

Although due to how planning process and release validation works, Fedora is not a strictly time based distribution, but uses combination of both time and feature based release paradigms. This way we can react to bigger changes aka new installed, way how we release bits (Fedora.Next) etc.

[[schedule-contingency-planning]]
=== Schedule Contingency Planning

If _Mass rebuild_ is not completed on time, all the subsequent milestones starting with _Branch point_ are pushed back for one week until the _Mass rebuild_ is completed.

If the Beta Go/No-Go Meeting results in a "No Go" determination, rescheduling of the milestone and subsequent milestones follows these rules:

* Slip of the Beta from the Preferred Target to Target #1 does not affect Final Release (GA) date. The Final Release (GA) date remains on _Preferred Final Target_.
* Slip of the Beta to Target #1 adds a new _Beta Target #2_ and Final Release (GA) slips to _Final Target #1_ (and we don't yet add a _Final Target #2_).
* Slip of the Beta past Target #N (where N >= 2) adds a new _Beta Target #(N+1)_ and also adds a new _Final Target #N_

If the Final Go_No_Go_Meeting results 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 correspond to the established day we synchronize our content with the mirrors that carry our releases. Be aware of holidays and of possible PR conflicts (contact Fedora PR) with the new proposed final date.

Go/No Go meetings receive input from representatives of https://fedoraproject.org/wiki/Fedora_Engineering_Steering_Committee[FESCo],
https://fedoraproject.org/wiki/ReleaseEngineering[Release Engineering], and https://fedoraproject.org/wiki/QA[Quality Assurance].

[[maintenance-schedule]]
== 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]]
=== Maintenance Schedule Rationale

Fedora is https://fedoraproject.org/wiki/Objectives[focused] on free and open source software https://fedoraproject.org/wiki/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 that supporting two releases plus Rawhide and the pre-release Branched code to be a manageable work load.

[[end-of-life-eol]]
== End of Life (EOL)

When a release reaches the point where it is no longer supported when no 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 https://fedoraproject.org/wiki/End_of_life_SOP[End of life SOP].

[[additional-release-schedule-information]]
== Additional Release Schedule Information

* Overview of Releases, including currently supported releases
* https://fedoraproject.org/wiki/End_of_life[Unsupported Releases]
* https://fedoraproject.org/wiki/Releases/HistoricalSchedules[Historical Release Information]

See a typo, something missing or out of date, or anything else which can be improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.
////

This page is maintained on link:https://fedoraproject.org/wiki/Fedora_Release_Life_Cycle[Fedora Project Wiki]
