@@ -14,16 +14,15 @@ The kernel developers use a loosely time-based release process, with a new
1414major kernel release happening every two or three months. The recent
1515release history looks like this:
1616
17- 2.6.26 July 13, 2008
18- 2.6.25 April 16, 2008
19- 2.6.24 January 24, 2008
20- 2.6.23 October 9, 2007
21- 2.6.22 July 8, 2007
22- 2.6.21 April 25, 2007
23- 2.6.20 February 4, 2007
17+ 2.6.38 March 14, 2011
18+ 2.6.37 January 4, 2011
19+ 2.6.36 October 20, 2010
20+ 2.6.35 August 1, 2010
21+ 2.6.34 May 15, 2010
22+ 2.6.33 February 24, 2010
2423
2524Every 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
2726changesets with changes to several hundred thousand lines of code. 2.6 is
2827thus the leading edge of Linux kernel development; the kernel uses a
2928rolling 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,
4241and staged ahead of time. How that process works will be described in
4342detail later on).
4443
45- The merge window lasts for two weeks. At the end of this time, Linus
46- Torvalds will declare that the window is closed and release the first of
47- the "rc" kernels. For the kernel which is destined to be 2.6.26, for
48- example, the release which happens at the end of the merge window will be
49- called 2.6.26 -rc1. The -rc1 release is the signal that the time to merge
50- new features has passed, and that the time to stabilize the next kernel has
51- begun.
44+ The merge window lasts for approximately two weeks. At the end of this
45+ time, Linus Torvalds will declare that the window is closed and release the
46+ first of the "rc" kernels. For the kernel which is destined to be 2.6.40,
47+ for example, the release which happens at the end of the merge window will
48+ be called 2.6.40 -rc1. The -rc1 release is the signal that the time to
49+ merge new features has passed, and that the time to stabilize the next
50+ kernel has begun.
5251
5352Over the next six to ten weeks, only patches which fix problems should be
5453submitted to the mainline. On occasion a more significant change will be
@@ -66,28 +65,27 @@ will get up to somewhere between -rc6 and -rc9 before the kernel is
6665considered to be sufficiently stable and the final 2.6.x release is made.
6766At that point the whole process starts over again.
6867
69- As an example, here is how the 2.6.25 development cycle went (all dates in
70- 2008):
71-
72- January 24 2.6.24 stable release
73- February 10 2.6.25-rc1, merge window closes
74- February 15 2.6.25-rc2
75- February 24 2.6.25-rc3
76- March 4 2.6.25-rc4
77- March 9 2.6.25-rc5
78- March 16 2.6.25-rc6
79- March 25 2.6.25-rc7
80- April 1 2.6.25-rc8
81- April 11 2.6.25-rc9
82- April 16 2.6.25 stable release
68+ As an example, here is how the 2.6.38 development cycle went (all dates in
69+ 2011):
70+
71+ January 4 2.6.37 stable release
72+ January 18 2.6.38-rc1, merge window closes
73+ January 21 2.6.38-rc2
74+ February 1 2.6.38-rc3
75+ February 7 2.6.38-rc4
76+ February 15 2.6.38-rc5
77+ February 21 2.6.38-rc6
78+ March 1 2.6.38-rc7
79+ March 7 2.6.38-rc8
80+ March 14 2.6.38 stable release
8381
8482How do the developers decide when to close the development cycle and create
8583the stable release? The most significant metric used is the list of
8684regressions from previous releases. No bugs are welcome, but those which
8785break systems which worked in the past are considered to be especially
8886serious. For this reason, patches which cause regressions are looked upon
8987unfavorably and are quite likely to be reverted during the stabilization
90- period.
88+ period.
9189
9290The developers' goal is to fix all known regressions before the stable
9391release 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
9997of them are serious.
10098
10199Once 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.
103- The stable team will release occasional updates to the stable release using
104- the 2.6.x.y numbering scheme. To be considered for an update release, a
105- patch must (1) fix a significant bug, and (2) already be merged into the
106- mainline for the next development kernel. Continuing our 2.6.25 example,
107- the history (as of this writing) is:
108-
109- May 1 2.6.25.1
110- May 6 2.6.25.2
111- May 9 2.6.25.3
112- May 15 2.6.25.4
113- June 7 2.6.25.5
114- June 9 2.6.25.6
115- June 16 2.6.25.7
116- June 21 2.6.25.8
117- June 24 2.6.25.9
118-
119- Stable updates for a given kernel are made for approximately six months;
120- after that, the maintenance of stable releases is solely the responsibility
121- of the distributors which have shipped that particular kernel.
100+ "stable team," currently consisting of Greg Kroah-Hartman. The stable team
101+ will release occasional updates to the stable release using the 2.6.x.y
102+ numbering scheme. To be considered for an update release, a patch must (1)
103+ fix a significant bug, and (2) already be merged into the mainline for the
104+ next development kernel. Kernels will typically receive stable updates for
105+ a little more than one development cycle past their initial release. So,
106+ for example, the 2.6.36 kernel's history looked like:
107+
108+ October 10 2.6.36 stable release
109+ November 22 2.6.36.1
110+ December 9 2.6.36.2
111+ January 7 2.6.36.3
112+ February 17 2.6.36.4
113+
114+ 2.6.36.4 was the final stable update for the 2.6.36 release.
115+
116+ Some kernels are designated "long term" kernels; they will receive support
117+ for a longer period. As of this writing, the current long term kernels
118+ and their maintainers are:
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.
122128
123129
1241302.2: THE LIFECYCLE OF A PATCH
@@ -130,7 +136,7 @@ each patch implements a change which is desirable to have in the mainline.
130136This process can happen quickly for minor fixes, or, in the case of large
131137and controversial changes, go on for years. Much developer frustration
132138comes from a lack of understanding of this process or from attempts to
133- circumvent it.
139+ circumvent it.
134140
135141In the hopes of reducing that frustration, this document will describe how
136142a patch gets into the kernel. What follows below is an introduction which
@@ -193,8 +199,8 @@ involved.
1931992.3: HOW PATCHES GET INTO THE KERNEL
194200
195201There 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
197- into the 2.6.25 kernel, only 250 (around 2 %) were directly chosen by Linus
202+ repository: Linus Torvalds. But, of the over 9,500 patches which went
203+ into the 2.6.38 kernel, only 112 (around 1.3 %) were directly chosen by Linus
198204himself. The kernel project has long since grown to a size where no single
199205developer could possibly inspect and select every patch unassisted. The
200206way the kernel developers have addressed this growth is through the use of
@@ -229,7 +235,7 @@ first in trees dedicated to network device drivers, wireless networking,
229235etc. This chain of repositories can be arbitrarily long, though it rarely
230236exceeds two or three links. Since each maintainer in the chain trusts
231237those managing lower-level trees, this process is known as the "chain of
232- trust."
238+ trust."
233239
234240Clearly, in a system like this, getting patches into the kernel depends on
235241finding the right maintainer. Sending patches directly to Linus is not
@@ -254,7 +260,7 @@ The answer comes in the form of -next trees, where subsystem trees are
254260collected for testing and review. The older of these trees, maintained by
255261Andrew Morton, is called "-mm" (for memory management, which is how it got
256262started). The -mm tree integrates patches from a long list of subsystem
257- trees; it also has some patches aimed at helping with debugging.
263+ trees; it also has some patches aimed at helping with debugging.
258264
259265Beyond that, -mm contains a significant collection of patches which have
260266been selected by Andrew directly. These patches may have been posted on a
@@ -264,8 +270,8 @@ subsystem tree of last resort; if there is no other obvious path for a
264270patch into the mainline, it is likely to end up in -mm. Miscellaneous
265271patches which accumulate in -mm will eventually either be forwarded on to
266272an appropriate subsystem tree or be sent directly to Linus. In a typical
267- development cycle, approximately 10% of the patches going into the mainline
268- get there via -mm.
273+ development cycle, approximately 5- 10% of the patches going into the
274+ mainline get there via -mm.
269275
270276The current -mm patch is available in the "mmotm" (-mm of the moment)
271277directory at:
@@ -275,7 +281,7 @@ directory at:
275281Use of the MMOTM tree is likely to be a frustrating experience, though;
276282there is a definite chance that it will not even compile.
277283
278- The other -next tree, started more recently, is linux-next, maintained by
284+ The primary tree for next-cycle patch merging is linux-next, maintained by
279285Stephen Rothwell. The linux-next tree is, by design, a snapshot of what
280286the mainline is expected to look like after the next merge window closes.
281287Linux-next trees are announced on the linux-kernel and linux-next mailing
@@ -287,41 +293,38 @@ Some information about linux-next has been gathered at:
287293
288294 http://linux.f-seidel.de/linux-next/pmwiki/
289295
290- How the linux-next tree will fit into the development process is still
291- changing. As of this writing, the first full development cycle involving
292- linux-next (2.6.26) is coming to an end; thus far, it has proved to be a
293- valuable resource for finding and fixing integration problems before the
294- beginning of the merge window. See http://lwn.net/Articles/287155/ for
295- more information on how linux-next has worked to set up the 2.6.27 merge
296- window.
297-
298- Some developers have begun to suggest that linux-next should be used as the
299- target for future development as well. The linux-next tree does tend to be
300- far ahead of the mainline and is more representative of the tree into which
301- any new work will be merged. The downside to this idea is that the
302- volatility of linux-next tends to make it a difficult development target.
303- See http://lwn.net/Articles/289013/ for more information on this topic, and
304- stay tuned; much is still in flux where linux-next is involved.
296+ Linux-next has become an integral part of the kernel development process;
297+ all patches merged during a given merge window should really have found
298+ their way into linux-next some time before the merge window opens.
299+
305300
3063012.4.1: STAGING TREES
307302
308- The kernel source tree now contains the drivers/staging/ directory, where
303+ The kernel source tree contains the drivers/staging/ directory, where
309304many sub-directories for drivers or filesystems that are on their way to
310305being added to the kernel tree live. They remain in drivers/staging while
311306they still need more work; once complete, they can be moved into the
312307kernel proper. This is a way to keep track of drivers that aren't
313308up to Linux kernel coding or quality standards, but people may want to use
314309them and track development.
315310
316- Greg Kroah-Hartman currently (as of 2.6.36) maintains the staging tree.
317- Drivers that still need work are sent to him, with each driver having
318- its own subdirectory in drivers/staging/. Along with the driver source
319- files, a TODO file should be present in the directory as well. The TODO
320- file lists the pending work that the driver needs for acceptance into
321- the kernel proper, as well as a list of people that should be Cc'd for any
322- patches to the driver. Staging drivers that don't currently build should
323- have their config entries depend upon CONFIG_BROKEN. Once they can
324- be successfully built without outside patches, CONFIG_BROKEN can be removed.
311+ Greg Kroah-Hartman currently maintains the staging tree. Drivers that
312+ still need work are sent to him, with each driver having its own
313+ subdirectory in drivers/staging/. Along with the driver source files, a
314+ TODO file should be present in the directory as well. The TODO file lists
315+ the pending work that the driver needs for acceptance into the kernel
316+ proper, as well as a list of people that should be Cc'd for any patches to
317+ the driver. Current rules require that drivers contributed to staging
318+ must, at a minimum, compile properly.
319+
320+ Staging can be a relatively easy way to get new drivers into the mainline
321+ where, with luck, they will come to the attention of other developers and
322+ improve quickly. Entry into staging is not the end of the story, though;
323+ code in staging which is not seeing regular progress will eventually be
324+ removed. Distributors also tend to be relatively reluctant to enable
325+ staging drivers. So staging is, at best, a stop on the way toward becoming
326+ a proper mainline driver.
327+
325328
3263292.5: TOOLS
327330
@@ -347,11 +350,7 @@ page at:
347350
348351 http://git-scm.com/
349352
350- That page has pointers to documentation and tutorials. One should be
351- aware, in particular, of the Kernel Hacker's Guide to git, which has
352- information specific to kernel development:
353-
354- http://linux.yyz.us/git-howto.html
353+ That page has pointers to documentation and tutorials.
355354
356355Among the kernel developers who do not use git, the most popular choice is
357356almost certainly Mercurial:
@@ -408,7 +407,7 @@ There are a few hints which can help with linux-kernel survival:
408407 important to filter on both the topic of interest (though note that
409408 long-running conversations can drift away from the original subject
410409 without changing the email subject line) and the people who are
411- participating.
410+ participating.
412411
413412- Do not feed the trolls. If somebody is trying to stir up an angry
414413 response, ignore them.
0 commit comments