Release plan: Difference between revisions

Jump to navigation Jump to search
1,231 bytes removed ,  2 November 2020
no edit summary
mNo edit summary
No edit summary
Line 2: Line 2:
{{Release}}
{{Release}}


The '''release plan''' is the process by which a new version of [[FlightGear]] is released. The release plan is actually a continual work-in-progress, and is refined with every new release.
The '''release plan''' is the process by which a new version of [[FlightGear]] is released. The release plan is actually a continual work-in-progress, and is refined with every new release and how much available resource and interest is available.


[[File:ReleasePlan.jpg|thumb|250px|The original release plan.]]
[[File:ReleasePlan.jpg|thumb|250px|The original release plan.]]
FlightGear has had two release plans over [[FlightGear History|history]]. The original release plan was developed by Mathias Fröhlich, Martin Spott, Thorsten Brehm and Torsten Dreyer during [[LinuxTag]] 2011. The current plan was proposed by Torsten Dreyer after the 3.6 release was [[FlightGear Newsletter November 2015#FlightGear v3.6 canceled|cancelled]].
FlightGear has had multiple release plans over [[FlightGear History|history]].  
* Originally, releases were sporadic, irregular and took many months of manual preparation.
* Subsequently a release plan was developed by Mathias Fröhlich, Martin Spott, Thorsten Brehm and Torsten Dreyer during [[LinuxTag]] 2011.  
* A more regular plan was proposed by Torsten Dreyer after the 3.6 release was [[FlightGear Newsletter November 2015#FlightGear v3.6 canceled|cancelled]].
* Currently "Long Term Support" (LTS) releases are generated every ~24 months, with intermittent "preview" between them.


To suggest improvements and/or changes to the release plan, it is recommended to get in touch via the [[mailing list]]. Improvements can be based on the [[Release plan/Lessons learned|lessons learned]] from previous releases.
To suggest improvements and/or changes to the release plan, it is recommended to get in touch via the [[mailing list]]. Improvements can be based on the [[Release plan/Lessons learned|lessons learned]] from previous releases.  However, do not underestimate the amount of effort go create a new release!  Most of the burden falls on a few people.


== General release concept ==
== General release concept ==
A new version of FlightGear is released every three months, meaning four releases per year. On the 17th of the month, new release branches are created and the [[build server]] creates the binaries and uploading them to SourceForge. If any changes are made to the release branch, a new bugfix release is created. The version of the <code>next</code> branch is incremented. And development coninutes as normal, with new nightly builds be created after each change. The table below shows the release cycle. See also [http://sourceforge.net/p/flightgear/mailman/message/34701971/ this mailing list post].
At any given time there are two release "stream":
 
* A Long Term Support (LTS) release stream. This is a stable release to which bug fixes are applied, and will be active for up to two years. Most users and aircraft developers use this release. Currently 2020.3.
{| class="wikitable"
* A "preview" release, based on the development branch "next".  This is for those interested in the latest developments. 
! Month !! Number in cycle
|-
| January
| style="background-color: #e55757" | 4 ''(previous year)''
|-
| February
| style="background-color: #e4ae3a" | 1
|-
| March
| style="background-color: #e4ae3a" | 1
|-
| April
| style="background-color: #e4ae3a" | 1
|-
| May
| style="background-color: #6a6bd7" | 2
|-
| June
| style="background-color: #6a6bd7" | 2
|-
| July
| style="background-color: #6a6bd7" | 2
|-
| August
| style="background-color: #63e557" | 3
|-
| September
| style="background-color: #63e557" | 3
|-
| October
| style="background-color: #63e557" | 3
|-
| November
| style="background-color: #e55757" | 4
|-
| December
| style="background-color: #e55757" | 4
|}


== Version numbers ==
== Version numbers ==
FlightGear version numbers consist of three digits, separated by dots:
FlightGear version numbers consist of three digits, separated by dots:


=== Before 2016.1 ===
* '''Year''' (<u>2020</u>.1.0): The year the version was released.
* '''Major''' (<u>3</u>.4.0): Only increased after significant changes to the functionality of the software (e.g., 1.x.x → 2.0.0 (due to switch to [[OSG]]).
* '''Number''' (2020.<u>1</u>.0): Which release of the year the version is. This will be an odd number. (Even numbers are used for development branches)
* '''Minor''' (3.<u>4</u>.0): Has two applications:
* '''Revision''' (2020.1.<u>0</u>): Indicates one of two things:
** '''Stable releases''' always have ''even numbers'' (e.g. 2.8.0, 2.10.0, 2.12.0).
** In the '''latest [[Git]] version''' or '''[[FlightGear build server|nightly build]]''', this digit is even, indicating that it is unstable.
** The '''latest [[Git]] version''' or '''[[FlightGear build server|nightly build]]''' uses an ''odd number'', always one more than the latest stable release's minor revision numbere. For example, when the latest release was 3.4.0, the current development stream was 3.5.0.
** When a new '''release''' is created, this digit is incremented to an odd number.
* '''Revision''' (3.4.<u>0</u>): Increased by bugfix releases (e.g., 2.12.1).


=== 2016.1 and after ===
{{note|In general, release are referred to by their first two digits (e.g., 2020.3). However, when filing a bug report or debugging problems, it is a good idea to give the full release number.}}
* '''Year''' (<u>2016</u>.1.0): The year the version was released.
* '''Number''' (2016.<u>1</u>.0): Which release of the year the version is (note: starts at 1).
* '''Revision''' (2016.1.<u>0</u>): Indicates one of two things:
** In the '''latest [[Git]] version''' or '''[[FlightGear build server|nightly build]]''', this digit is 0, indicating that it is unstable.
** When a new '''release''' is created, this digit is set to 1. With bugfix that is made, this digit is increased by 1, and a new version created.
 
{{note|In general, release are referred to by their first two digits (e.g., 3.4). However, when filing a bug report or debugging problems, it is a good idea to give the full release number.}}


== Detailed time schedule and checklist ==
== Detailed time schedule and checklist ==
# Just after the next release, the next default airport is decided on by a poll on the forum. The next release will be named after it.
# Just after an LTS is generated, the next default airport is decided on by a poll on the forum. The next LTS release will be named after it.
# (On the 17th of the release month): The first Jenkins script is triggered to create <code>release/xxxx.x.0</code> branches with version xxxx.x.0.
# A series of "preview" releases generated for cutting edge users. For each release:
# Jenkins creates the binaries for xxxx.x.1.
## A release branch is cut from "next".  E.g. release/2021.1
# Patches going into the <code>release/xxxx.x.0</code> branch automatically trigger a new build with a increase of the revision version number (see [[#2016.1 and after|above]]) and we immediately have a bugfix release.
## The version files are incremented. On the next branch this increases to the next even number. E.g. 2021.2.0
# On the <code>next</code> branch, the version number is changed.
## Builds are generated.
# Nightly builds are created from <code>next</code> after every push in that branch.
# When a new LTS preview is declared (after ~24 months):
 
## A release branch is cut from "next".  E.g. release/2022.1
## The version files are incremented.  On the next branch this increases to the next even number.  E.g. 2022.2.0
## Builds are generated for the preview LTS.
## Additional branches are created for subsequent releases from the original release branch (e.g. release/2022.1 -> release/2022.3)
## Fixes are merged into the release branch as well as "next"
## Further builds and release are generated until an LTS is declared (e.g release/2022.3)
The process is repeated after three months.
The process is repeated after three months.


Line 88: Line 51:
<!--
<!--
== Bug fix committing policy ==
== Bug fix committing policy ==
Fixes for bugs during the shakedown test of the release branch may be applied to the branches next or release/2.8.0.
Fixes for bugs during the preview release are applied to both "next" and the release branch (e.g. release/2022.2)
A fix goes into release/2.8.0 if the development of next has moved forward and this fix does not apply there. It also goes into the release branch if there will be a better fix for next.  
A fix goes into next if it is also solves an issue for the next version. Cherry-pick this commit into the release/2.8.0 branch.


'''DO NOT''' merge next into release/2.8.0 or vice versa. Most likely, there will be commits that are not welcome in or even break the other branch.
'''DO NOT''' merge next into release/2.8.0 or vice versa. Most likely, there will be commits that are not welcome in or even break the other branch.

Navigation menu