Samba Release Planning: Difference between revisions

From SambaWiki
(Fold in branch policy into release planning page)
(47 intermediate revisions by 7 users not shown)
Line 1: Line 1:
= Samba Release Planning =
= Samba Release Planning and Supported Release Lifetime=

== Future Development Roadmap ==

As each item, and parts of each item on Samba's [[Roadmap|future development]] is completed, the features are landed in the [http://git.samba.org/?p=samba.git;a=shortlog master branch], for inclusion in the [[Samba_Release_Planning#Upcoming_Release|next stable release]] of Samba. Development in master is ongoing, in parallel to our stable releases, and new features always land on master first.


== General information ==
== General information ==


The regular Samba release cycle intends a new release series
The regular Samba release cycle intends a new release series
every nine month. Each release series then enters into [[Samba_Release_Planning#Maintenance_Mode|'''maintenance mode''']]
every six month. Each release series then enters into [[Samba_Release_Planning#Maintenance_Mode|'''maintenance mode''']]
when the next '''major''' release version (4.x.0) comes out as the new [[Samba_Release_Planning#Current_Stable_Release|'''current stable''']]
when the next '''major''' release version (4.x.0) comes out as the new [[Samba_Release_Planning#Current_Stable_Release|'''current stable''']]
release series. For your convenience, the next to last series will be turned into a [[Samba_Release_Planning#Security_Fixes_Only_Mode|'''security fixes only mode''']].
release series. For your convenience, the next to last series will be turned into a [[Samba_Release_Planning#Security_Fixes_Only_Mode|'''security fixes only mode''']]. Beyond this point, the series is [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']].


That means, a series is
That means, a series is
*nine months fully supported,
*six months fully supported,
*another nine months in the maintenance mode,
*another six months in the maintenance mode,
*nine months in the security fixes only mode.
*six months in the security fixes only mode.


In total, each series is maintained for a period of approximately 27 months.
In total, each series is maintained for a period of approximately 18 months.


'''Example:'''
'''Example:'''


If 4.1 is the current release series, then 4.0 would be in maintenance mode,
If 4.5 is the current release series, then 4.4 would be in maintenance mode and
3.6 would be in the security fixes only mode, and finally the support of 3.5 would be
4.3 would be in the security fixes only mode. The support of 4.2 would be
stopped with the release of 4.1.0.
stopped with the release of 4.5.0.


Each series can have any number of desired minor release.
Each series can have any number of desired minor releases.
These will be released usually every 6 weeks.
These are usually released every 6 weeks (current stable release series),
resp. every 9 weeks (maintenance mode).


Any discontinued (EOL) series will not receive any further updates.
{| border="1" cellpadding="5" cellspacing="0"

{| class="wikitable"
|-
|-
! style="background:#dfdfdf;" | series !! style="background:#dfdfdf;" | status !! style="background:#dfdfdf;" | started !!style="background:#dfdfdf;" | maintenance !! style="background:#dfdfdf;" | security !! style="background:#dfdfdf;" | discontinued
! style="background:#dfdfdf;" | series !! style="background:#dfdfdf;" | [https://git.samba.org/?p=samba.git;a=heads git branch] !! style="background:#dfdfdf;" | status !! style="background:#dfdfdf;" | started !!style="background:#dfdfdf;" | maintenance !! style="background:#dfdfdf;" | security !! style="background:#dfdfdf;" | discontinued (EOL)
|-
|-
| 4.2 ([[Release Planning for Samba 4.2|details]]) || style="background:#87CEFA;" | [[Samba_Release_Planning#Upcoming_Release|new upcoming release series]] || || || ||
| 4.7 ([[Release Planning for Samba 4.7|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/master master] || style="background:#87CEFA;" | [[Samba_Release_Planning#Upcoming_Release|new upcoming release series]] || || || ||
|-
|-
| 4.1 ([[Release Planning for Samba 4.1|details]]) || style="background:#77ff77;" | [[Samba_Release_Planning#Current_Stable_Release|'''current stable release series''']] || 2013-10-11 || || ||
| 4.6 ([[Release Planning for Samba 4.6|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-6-test v4-6-test] || style="background:#77ff77;" | [[Samba_Release_Planning#Current_Stable_Release|'''current stable release series''']] || 2017-03-07 || || ||
|-
|-
| 4.0 ([[Release Planning for Samba 4.0|details]]) || style="background:#ffff77;" | [[Samba_Release_Planning#Maintenance_Mode|'''maintenance mode''']] || 2012-12-11 || 2013-10-11 || ||
| 4.5 ([[Release Planning for Samba 4.5|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-5-test v4-5-test] || style="background:#ffff77;" | [[Samba_Release_Planning#Maintenance_Mode|'''maintenance mode''']] || 2016-09-07 || 2017-03-07 || ||
|-
|-
| 3.6 ([[Release Planning for Samba 3.6|details]]) || style="background:#ffff77;" | [[Samba_Release_Planning#Security_Fixes_Only_Mode|'''security fixes only''']] || 2011-08-09 || 2012-12-11 || 2013-10-11 ||
| 4.4 ([[Release Planning for Samba 4.4|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-4-test v4-4-test] || style="background:#ffff77;" | [[Samba_Release_Planning#Security_Fixes_Only_Mode|'''security fixes only''']] || 2016-03-22 || 2016-09-07 || 2017-03-07 ||
|-
|-
| 3.5 ([[Release Planning for Samba 3.5|details]]) || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued|'''discontinued''']] || 2010-03-01 || 2011-08-09 || ~2012-12-17 || 2013-10-11
| 4.3 ([[Release Planning for Samba 4.3|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-3-test v4-3-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']]|| 2015-09-08 || 2016-03-22 || 2016-09-07 || 2017-03-07
|-
|-
| 3.4 ([[Release Planning for Samba 3.4|details]]) || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued|'''discontinued''']] || 2009-07-03 || 2010-03-01 || ~2011-08-23 || 2012-12-11
| 4.2 ([[Release Planning for Samba 4.2|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-2-test v4-2-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] ||2015-03-04 || 2015-09-08 || 2016-03-22 || 2016-09-07
|-
|-
| 3.3 ([[Release Planning for Samba 3.3|details]]) || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued|'''discontinued''']] || 2009-01-27 || 2009-07-03 ||2010-03-01 || 2011-08-09
| 4.1 ([[Release Planning for Samba 4.1|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-1-test v4-1-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2013-10-11 || 2015-03-04 || 2015-09-08 || 2016-03-22
|-
|-
| 3.2 ([[Release Planning for Samba 3.2|details]]) || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued|'''discontinued''']] || 2008-07-02 || 2009-01-27 || 2009-08-11 || 2010-03-01
| 4.0 ([[Release Planning for Samba 4.0|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v4-0-test v4-0-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2012-12-11 || 2013-10-11 || 2015-03-04 || 2015-09-08
|-
|-
| 3.0 ([[Release Planning for Samba 3.0|details]]) || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued|'''discontinued''']] || 2003-09-24 || 2008-07-02 || 2009-01-27 || 2009-08-05
| 3.6 ([[Release Planning for Samba 3.6|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v3-6-test v3-6-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2011-08-09 || 2012-12-11 || 2013-11-29 || 2015-03-04
|-
| 3.5 ([[Release Planning for Samba 3.5|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v3-5-test v3-5-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2010-03-01 || 2011-08-09 || ~2012-12-17 || 2013-10-11
|-
| 3.4 ([[Release Planning for Samba 3.4|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v3-4-test v3-4-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2009-07-03 || 2010-03-01 || ~2011-08-23 || 2012-12-11
|-
| 3.3 ([[Release Planning for Samba 3.3|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v3-3-test v3-3-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2009-01-27 || 2009-07-03 ||2010-03-01 || 2011-08-09
|-
| 3.2 ([[Release Planning for Samba 3.2|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v3-2-test v3-2-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2008-07-02 || 2009-01-27 || 2009-08-11 || 2010-03-01
|-
| 3.0 ([[Release Planning for Samba 3.0|details]]) || [https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/v3-0-test v3-0-test] || style="background:#ff7777;" | [[Samba_Release_Planning#Discontinued_.28End_of_Life.29|'''discontinued (EOL)''']] || 2003-09-24 || 2008-07-02 || 2009-01-27 || 2009-08-05
|-
|-
|}
|}

== Release Branch Policies ==

Development of new features should only happen on master. Once our release manager (RM) decides a new release is ready for a first release candidate, the RM will branch off a new release branch to stabilize the release code while still allowing more experimental work to continue on master.

The release branch is created when the release candidate is cut, and is closed as soon as it is created, and should stabilize up to the release, receiving mainly bug fixes and minor changes.

Therefore, for all branches other than master, only bug fixes are allowed into the branch, according to the following procedure:

* Every bug that is to be patched in a closed branch needs to be associated with a bug report in bugzilla.
* The developer of the patch needs to convince at least one other developer that the bug is critical enough to be included in a closed branch.
* The RM applies the patch from bugzilla only if the patch has been signed off by two developers.


== Modes ==
== Modes ==
Line 73: Line 78:


This is the new upcoming release branch. It's not ready for production.
This is the new upcoming release branch. It's not ready for production.
The branch is created when the first Release candidate becomes available for testing, otherwise development happens in our master GIT branch.
Release candidates might be available for testing.

====[[Blocker bugs]] and time rather than feature based releases====
Releases are made to a time-fixed schedule, so not all bugs found during testing will cause the release to be held back. [[Blocker bugs]] are those few that meet the criteria for stopping a release candidate from becoming a release.


=== Current Stable Release ===
=== Current Stable Release ===
Line 91: Line 99:
Only security issues will be addressed in this release series.
Only security issues will be addressed in this release series.


=== Discontinued ===
=== Discontinued (End of Life) ===


There won't be any other versions of this release series.
There won't be any other versions of this release series.

== Release Branch Checkin Procedure ==

The '''release branch''' is created at the time of the first '''release candidate.'''

The release branches are '''closed''' to direct checkin as soon as they are created, so for all branches, only bug fixes are allowed into the branch, according to the following procedure:

* Every bug that is to be patched in a '''closed branch''' needs to be associated with a bug report in the [https://bugzilla.samba.org Samba Bugzilla].
** If the bug is a '''regression''' that qualifies as [[blocker bugs|blocker bug]] to hold back a major release, ensure it marked as a '''regression''' and has the correct '''milestone''' set.
* The patch for the bug should already be in [http://git.samba.org/?p=samba.git;a=shortlog master], if possible.
* Open the bug '''before''' making the commit into master, if it is expected that this patch will need to be backported.
* Add the following tag to each patch to be backported
BUG: <nowiki>https://bugzilla.samba.org/show_bug.cgi?id=XXXXX</nowiki>
* Once '''past autobuild''' and '''in master''' on git.samba.org, it should be cherry-picked from master to the branch using '''git cherry-pick -x''' and '''git format-patch -1'''.
** The cherry-pick -x adds the '''(cherry-picked from XXXXX)''' marker, which allows tracing of patch history though the different branches
* Add BUG tags to patches that do not already have them
** The bug should be '''ASSIGNED''', reopen it if the bug is already closed.
** It is acceptable to file a bug at this stage if one does not already exist.
* The developer of the patch needs to convince '''two team members''' that the bug is critical enough to be included in a '''closed branch'''.
** This is done by setting the '''review?''' flag on the uploaded patch.
** If you are a team member uploading the patch, one other team member needs to review the patch
** If you are not a team member, just ask two team members to review.
* Once reviewed, '''the reviewer''' should assign the patch to '''Karolin Seeger''', our '''Release Manager'''.
* The '''Release Manager''' then applies the patch from bugzilla only if the patch has been signed off by two members of the Samba Team.
** The '''Release Manager''' then closes the bug when the patches have landed in all appropriate branches.

Revision as of 09:48, 7 March 2017

Samba Release Planning and Supported Release Lifetime

Future Development Roadmap

As each item, and parts of each item on Samba's future development is completed, the features are landed in the master branch, for inclusion in the next stable release of Samba. Development in master is ongoing, in parallel to our stable releases, and new features always land on master first.

General information

The regular Samba release cycle intends a new release series every six month. Each release series then enters into maintenance mode when the next major release version (4.x.0) comes out as the new current stable release series. For your convenience, the next to last series will be turned into a security fixes only mode. Beyond this point, the series is discontinued (EOL).

That means, a series is

  • six months fully supported,
  • another six months in the maintenance mode,
  • six months in the security fixes only mode.

In total, each series is maintained for a period of approximately 18 months.

Example:

If 4.5 is the current release series, then 4.4 would be in maintenance mode and 4.3 would be in the security fixes only mode. The support of 4.2 would be stopped with the release of 4.5.0.

Each series can have any number of desired minor releases. These are usually released every 6 weeks (current stable release series), resp. every 9 weeks (maintenance mode).

Any discontinued (EOL) series will not receive any further updates.

series git branch status started maintenance security discontinued (EOL)
4.7 (details) master new upcoming release series
4.6 (details) v4-6-test current stable release series 2017-03-07
4.5 (details) v4-5-test maintenance mode 2016-09-07 2017-03-07
4.4 (details) v4-4-test security fixes only 2016-03-22 2016-09-07 2017-03-07
4.3 (details) v4-3-test discontinued (EOL) 2015-09-08 2016-03-22 2016-09-07 2017-03-07
4.2 (details) v4-2-test discontinued (EOL) 2015-03-04 2015-09-08 2016-03-22 2016-09-07
4.1 (details) v4-1-test discontinued (EOL) 2013-10-11 2015-03-04 2015-09-08 2016-03-22
4.0 (details) v4-0-test discontinued (EOL) 2012-12-11 2013-10-11 2015-03-04 2015-09-08
3.6 (details) v3-6-test discontinued (EOL) 2011-08-09 2012-12-11 2013-11-29 2015-03-04
3.5 (details) v3-5-test discontinued (EOL) 2010-03-01 2011-08-09 ~2012-12-17 2013-10-11
3.4 (details) v3-4-test discontinued (EOL) 2009-07-03 2010-03-01 ~2011-08-23 2012-12-11
3.3 (details) v3-3-test discontinued (EOL) 2009-01-27 2009-07-03 2010-03-01 2011-08-09
3.2 (details) v3-2-test discontinued (EOL) 2008-07-02 2009-01-27 2009-08-11 2010-03-01
3.0 (details) v3-0-test discontinued (EOL) 2003-09-24 2008-07-02 2009-01-27 2009-08-05

Modes

The mode describes the status of the release series. The following modes exist:

  • Upcoming Release
  • Current Stable Release
  • Maintenance Mode
  • Security Fixes Only Mode
  • Discontinued

Upcoming Release

This is the new upcoming release branch. It's not ready for production. The branch is created when the first Release candidate becomes available for testing, otherwise development happens in our master GIT branch.

Blocker bugs and time rather than feature based releases

Releases are made to a time-fixed schedule, so not all bugs found during testing will cause the release to be held back. Blocker bugs are those few that meet the criteria for stopping a release candidate from becoming a release.

Current Stable Release

This is the current release branch. Available bug fixes will be included in the regular bug fix releases. Bug fix releases will be shipped every six weeks usually (and on a as needed basis). New features or parameters will be added to major releases only and not within a release cycle (there might be rare exceptions).

Maintenance Mode

Maintenance mode means that there are regular bug fix releases to address major issues and security issues. Less patches are backported to this branch than to the current release series.

Security Fixes Only Mode

Only security issues will be addressed in this release series.

Discontinued (End of Life)

There won't be any other versions of this release series.

Release Branch Checkin Procedure

The release branch is created at the time of the first release candidate.

The release branches are closed to direct checkin as soon as they are created, so for all branches, only bug fixes are allowed into the branch, according to the following procedure:

  • Every bug that is to be patched in a closed branch needs to be associated with a bug report in the Samba Bugzilla.
    • If the bug is a regression that qualifies as blocker bug to hold back a major release, ensure it marked as a regression and has the correct milestone set.
  • The patch for the bug should already be in master, if possible.
  • Open the bug before making the commit into master, if it is expected that this patch will need to be backported.
  • Add the following tag to each patch to be backported
BUG: https://bugzilla.samba.org/show_bug.cgi?id=XXXXX
  • Once past autobuild and in master on git.samba.org, it should be cherry-picked from master to the branch using git cherry-pick -x and git format-patch -1.
    • The cherry-pick -x adds the (cherry-picked from XXXXX) marker, which allows tracing of patch history though the different branches
  • Add BUG tags to patches that do not already have them
    • The bug should be ASSIGNED, reopen it if the bug is already closed.
    • It is acceptable to file a bug at this stage if one does not already exist.
  • The developer of the patch needs to convince two team members that the bug is critical enough to be included in a closed branch.
    • This is done by setting the review? flag on the uploaded patch.
    • If you are a team member uploading the patch, one other team member needs to review the patch
    • If you are not a team member, just ask two team members to review.
  • Once reviewed, the reviewer should assign the patch to Karolin Seeger, our Release Manager.
  • The Release Manager then applies the patch from bugzilla only if the patch has been signed off by two members of the Samba Team.
    • The Release Manager then closes the bug when the patches have landed in all appropriate branches.