diff options
| author | Jonathan Corbet <corbet@lwn.net> | 2011-03-25 14:17:53 -0400 |
|---|---|---|
| committer | Jonathan Corbet <corbet@lwn.net> | 2011-03-25 16:30:31 -0400 |
| commit | 5c050fb96380a87a85aad9084b68fdcd2b84c193 (patch) | |
| tree | b1d0bf29716a4e8a0da6d4b9b96bfe9635b58271 /Documentation/development-process/2.Process | |
| parent | 9cad7962704d617ab1e4ae304baaaa22d727932b (diff) | |
docs: update the development process document
Here's a set of changes updating Documentation/development-process. I have
update kernel releases and relevant statistics, added information for a
couple of tools, zapped some trailing white space, and generally tried to
make it more closely match the current state of affairs.
[Typo fixes from Joe Perches and Nicolas Kaiser incorporated]
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Acked-by: Greg KH <greg@kroah.com>
Cc: Randy Dunlap <rdunlap@xenotime.net>
Diffstat (limited to 'Documentation/development-process/2.Process')
| -rw-r--r-- | Documentation/development-process/2.Process | 177 |
1 files changed, 88 insertions, 89 deletions
diff --git a/Documentation/development-process/2.Process b/Documentation/development-process/2.Process index 911a45186340..4823577c6509 100644 --- a/Documentation/development-process/2.Process +++ b/Documentation/development-process/2.Process | |||
| @@ -14,16 +14,15 @@ The kernel developers use a loosely time-based release process, with a new | |||
| 14 | major kernel release happening every two or three months. The recent | 14 | major kernel release happening every two or three months. The recent |
| 15 | release history looks like this: | 15 | release history looks like this: |
| 16 | 16 | ||
| 17 | 2.6.26 July 13, 2008 | 17 | 2.6.38 March 14, 2011 |
| 18 | 2.6.25 April 16, 2008 | 18 | 2.6.37 January 4, 2011 |
| 19 | 2.6.24 January 24, 2008 | 19 | 2.6.36 October 20, 2010 |
| 20 | 2.6.23 October 9, 2007 | 20 | 2.6.35 August 1, 2010 |
| 21 | 2.6.22 July 8, 2007 | 21 | 2.6.34 May 15, 2010 |
| 22 | 2.6.21 April 25, 2007 | 22 | 2.6.33 February 24, 2010 |
| 23 | 2.6.20 February 4, 2007 | ||
| 24 | 23 | ||
| 25 | Every 2.6.x release is a major kernel release with new features, internal | 24 | Every 2.6.x release is a major kernel release with new features, internal |
| 26 | API changes, and more. A typical 2.6 release can contain over 10,000 | 25 | API changes, and more. A typical 2.6 release can contain nearly 10,000 |
| 27 | changesets with changes to several hundred thousand lines of code. 2.6 is | 26 | changesets with changes to several hundred thousand lines of code. 2.6 is |
| 28 | thus the leading edge of Linux kernel development; the kernel uses a | 27 | thus the leading edge of Linux kernel development; the kernel uses a |
| 29 | rolling development model which is continually integrating major changes. | 28 | rolling development model which is continually integrating major changes. |
| @@ -42,13 +41,13 @@ merge window do not come out of thin air; they have been collected, tested, | |||
| 42 | and staged ahead of time. How that process works will be described in | 41 | and staged ahead of time. How that process works will be described in |
| 43 | detail later on). | 42 | detail later on). |
| 44 | 43 | ||
| 45 | The merge window lasts for two weeks. At the end of this time, Linus | 44 | The merge window lasts for approximately two weeks. At the end of this |
| 46 | Torvalds will declare that the window is closed and release the first of | 45 | time, Linus Torvalds will declare that the window is closed and release the |
| 47 | the "rc" kernels. For the kernel which is destined to be 2.6.26, for | 46 | first of the "rc" kernels. For the kernel which is destined to be 2.6.40, |
| 48 | example, the release which happens at the end of the merge window will be | 47 | for example, the release which happens at the end of the merge window will |
| 49 | called 2.6.26-rc1. The -rc1 release is the signal that the time to merge | 48 | be called 2.6.40-rc1. The -rc1 release is the signal that the time to |
| 50 | new features has passed, and that the time to stabilize the next kernel has | 49 | merge new features has passed, and that the time to stabilize the next |
| 51 | begun. | 50 | kernel has begun. |
| 52 | 51 | ||
| 53 | Over the next six to ten weeks, only patches which fix problems should be | 52 | Over the next six to ten weeks, only patches which fix problems should be |
| 54 | submitted to the mainline. On occasion a more significant change will be | 53 | submitted to the mainline. On occasion a more significant change will be |
| @@ -66,20 +65,19 @@ will get up to somewhere between -rc6 and -rc9 before the kernel is | |||
| 66 | considered to be sufficiently stable and the final 2.6.x release is made. | 65 | considered to be sufficiently stable and the final 2.6.x release is made. |
| 67 | At that point the whole process starts over again. | 66 | At that point the whole process starts over again. |
| 68 | 67 | ||
| 69 | As an example, here is how the 2.6.25 development cycle went (all dates in | 68 | As an example, here is how the 2.6.38 development cycle went (all dates in |
| 70 | 2008): | 69 | 2011): |
| 71 | 70 | ||
| 72 | January 24 2.6.24 stable release | 71 | January 4 2.6.37 stable release |
| 73 | February 10 2.6.25-rc1, merge window closes | 72 | January 18 2.6.38-rc1, merge window closes |
| 74 | February 15 2.6.25-rc2 | 73 | January 21 2.6.38-rc2 |
| 75 | February 24 2.6.25-rc3 | 74 | February 1 2.6.38-rc3 |
| 76 | March 4 2.6.25-rc4 | 75 | February 7 2.6.38-rc4 |
| 77 | March 9 2.6.25-rc5 | 76 | February 15 2.6.38-rc5 |
| 78 | March 16 2.6.25-rc6 | 77 | February 21 2.6.38-rc6 |
| 79 | March 25 2.6.25-rc7 | 78 | March 1 2.6.38-rc7 |
| 80 | April 1 2.6.25-rc8 | 79 | March 7 2.6.38-rc8 |
| 81 | April 11 2.6.25-rc9 | 80 | March 14 2.6.38 stable release |
| 82 | April 16 2.6.25 stable release | ||
| 83 | 81 | ||
| 84 | How do the developers decide when to close the development cycle and create | 82 | How do the developers decide when to close the development cycle and create |
| 85 | the stable release? The most significant metric used is the list of | 83 | the stable release? The most significant metric used is the list of |
| @@ -87,7 +85,7 @@ regressions from previous releases. No bugs are welcome, but those which | |||
| 87 | break systems which worked in the past are considered to be especially | 85 | break systems which worked in the past are considered to be especially |
| 88 | serious. For this reason, patches which cause regressions are looked upon | 86 | serious. For this reason, patches which cause regressions are looked upon |
| 89 | unfavorably and are quite likely to be reverted during the stabilization | 87 | unfavorably and are quite likely to be reverted during the stabilization |
| 90 | period. | 88 | period. |
| 91 | 89 | ||
| 92 | The developers' goal is to fix all known regressions before the stable | 90 | The developers' goal is to fix all known regressions before the stable |
| 93 | release is made. In the real world, this kind of perfection is hard to | 91 | release is made. In the real world, this kind of perfection is hard to |
| @@ -99,26 +97,34 @@ kernels go out with a handful of known regressions though, hopefully, none | |||
| 99 | of them are serious. | 97 | of them are serious. |
| 100 | 98 | ||
| 101 | Once a stable release is made, its ongoing maintenance is passed off to the | 99 | Once a stable release is made, its ongoing maintenance is passed off to the |
| 102 | "stable team," currently comprised of Greg Kroah-Hartman and Chris Wright. | 100 | "stable team," currently consisting of Greg Kroah-Hartman. The stable team |
| 103 | The stable team will release occasional updates to the stable release using | 101 | will release occasional updates to the stable release using the 2.6.x.y |
| 104 | the 2.6.x.y numbering scheme. To be considered for an update release, a | 102 | numbering scheme. To be considered for an update release, a patch must (1) |
| 105 | patch must (1) fix a significant bug, and (2) already be merged into the | 103 | fix a significant bug, and (2) already be merged into the mainline for the |
| 106 | mainline for the next development kernel. Continuing our 2.6.25 example, | 104 | next development kernel. Kernels will typically receive stable updates for |
| 107 | the history (as of this writing) is: | 105 | a little more than one development cycle past their initial release. So, |
| 108 | 106 | for example, the 2.6.36 kernel's history looked like: | |
| 109 | May 1 2.6.25.1 | 107 | |
| 110 | May 6 2.6.25.2 | 108 | October 10 2.6.36 stable release |
| 111 | May 9 2.6.25.3 | 109 | November 22 2.6.36.1 |
| 112 | May 15 2.6.25.4 | 110 | December 9 2.6.36.2 |
| 113 | June 7 2.6.25.5 | 111 | January 7 2.6.36.3 |
| 114 | June 9 2.6.25.6 | 112 | February 17 2.6.36.4 |
| 115 | June 16 2.6.25.7 | 113 | |
| 116 | June 21 2.6.25.8 | 114 | 2.6.36.4 was the final stable update for the 2.6.36 release. |
| 117 | June 24 2.6.25.9 | 115 | |
| 118 | 116 | Some kernels are designated "long term" kernels; they will receive support | |
| 119 | Stable updates for a given kernel are made for approximately six months; | 117 | for a longer period. As of this writing, the current long term kernels |
| 120 | after that, the maintenance of stable releases is solely the responsibility | 118 | and their maintainers are: |
| 121 | of the distributors which have shipped that particular kernel. | 119 | |
| 120 | 2.6.27 Willy Tarreau (Deep-frozen stable kernel) | ||
| 121 | 2.6.32 Greg Kroah-Hartman | ||
| 122 | 2.6.35 Andi Kleen (Embedded flag kernel) | ||
| 123 | |||
| 124 | The selection of a kernel for long-term support is purely a matter of a | ||
| 125 | maintainer having the need and the time to maintain that release. There | ||
| 126 | are no known plans for long-term support for any specific upcoming | ||
| 127 | release. | ||
| 122 | 128 | ||
| 123 | 129 | ||
| 124 | 2.2: THE LIFECYCLE OF A PATCH | 130 | 2.2: THE LIFECYCLE OF A PATCH |
| @@ -130,7 +136,7 @@ each patch implements a change which is desirable to have in the mainline. | |||
| 130 | This process can happen quickly for minor fixes, or, in the case of large | 136 | This process can happen quickly for minor fixes, or, in the case of large |
| 131 | and controversial changes, go on for years. Much developer frustration | 137 | and controversial changes, go on for years. Much developer frustration |
| 132 | comes from a lack of understanding of this process or from attempts to | 138 | comes from a lack of understanding of this process or from attempts to |
| 133 | circumvent it. | 139 | circumvent it. |
| 134 | 140 | ||
| 135 | In the hopes of reducing that frustration, this document will describe how | 141 | In the hopes of reducing that frustration, this document will describe how |
| 136 | a patch gets into the kernel. What follows below is an introduction which | 142 | a patch gets into the kernel. What follows below is an introduction which |
| @@ -193,8 +199,8 @@ involved. | |||
| 193 | 2.3: HOW PATCHES GET INTO THE KERNEL | 199 | 2.3: HOW PATCHES GET INTO THE KERNEL |
| 194 | 200 | ||
| 195 | There is exactly one person who can merge patches into the mainline kernel | 201 | There is exactly one person who can merge patches into the mainline kernel |
| 196 | repository: Linus Torvalds. But, of the over 12,000 patches which went | 202 | repository: Linus Torvalds. But, of the over 9,500 patches which went |
| 197 | into the 2.6.25 kernel, only 250 (around 2%) were directly chosen by Linus | 203 | into the 2.6.38 kernel, only 112 (around 1.3%) were directly chosen by Linus |
| 198 | himself. The kernel project has long since grown to a size where no single | 204 | himself. The kernel project has long since grown to a size where no single |
| 199 | developer could possibly inspect and select every patch unassisted. The | 205 | developer could possibly inspect and select every patch unassisted. The |
| 200 | way the kernel developers have addressed this growth is through the use of | ||
