| .. | .. |
|---|
| 18 | 18 | release history looks like this: |
|---|
| 19 | 19 | |
|---|
| 20 | 20 | ====== ================= |
|---|
| 21 | | - 4.11 April 30, 2017 |
|---|
| 22 | | - 4.12 July 2, 2017 |
|---|
| 23 | | - 4.13 September 3, 2017 |
|---|
| 24 | | - 4.14 November 12, 2017 |
|---|
| 25 | | - 4.15 January 28, 2018 |
|---|
| 26 | | - 4.16 April 1, 2018 |
|---|
| 21 | + 5.0 March 3, 2019 |
|---|
| 22 | + 5.1 May 5, 2019 |
|---|
| 23 | + 5.2 July 7, 2019 |
|---|
| 24 | + 5.3 September 15, 2019 |
|---|
| 25 | + 5.4 November 24, 2019 |
|---|
| 26 | + 5.5 January 6, 2020 |
|---|
| 27 | 27 | ====== ================= |
|---|
| 28 | 28 | |
|---|
| 29 | | -Every 4.x release is a major kernel release with new features, internal |
|---|
| 30 | | -API changes, and more. A typical 4.x release contain about 13,000 |
|---|
| 31 | | -changesets with changes to several hundred thousand lines of code. 4.x is |
|---|
| 32 | | -thus the leading edge of Linux kernel development; the kernel uses a |
|---|
| 29 | +Every 5.x release is a major kernel release with new features, internal |
|---|
| 30 | +API changes, and more. A typical release can contain about 13,000 |
|---|
| 31 | +changesets with changes to several hundred thousand lines of code. 5.x is |
|---|
| 32 | +the leading edge of Linux kernel development; the kernel uses a |
|---|
| 33 | 33 | rolling development model which is continually integrating major changes. |
|---|
| 34 | 34 | |
|---|
| 35 | 35 | A relatively straightforward discipline is followed with regard to the |
|---|
| .. | .. |
|---|
| 48 | 48 | |
|---|
| 49 | 49 | The merge window lasts for approximately two weeks. At the end of this |
|---|
| 50 | 50 | time, Linus Torvalds will declare that the window is closed and release the |
|---|
| 51 | | -first of the "rc" kernels. For the kernel which is destined to be 2.6.40, |
|---|
| 51 | +first of the "rc" kernels. For the kernel which is destined to be 5.6, |
|---|
| 52 | 52 | for example, the release which happens at the end of the merge window will |
|---|
| 53 | | -be called 2.6.40-rc1. The -rc1 release is the signal that the time to |
|---|
| 53 | +be called 5.6-rc1. The -rc1 release is the signal that the time to |
|---|
| 54 | 54 | merge new features has passed, and that the time to stabilize the next |
|---|
| 55 | 55 | kernel has begun. |
|---|
| 56 | 56 | |
|---|
| .. | .. |
|---|
| 67 | 67 | As fixes make their way into the mainline, the patch rate will slow over |
|---|
| 68 | 68 | time. Linus releases new -rc kernels about once a week; a normal series |
|---|
| 69 | 69 | will get up to somewhere between -rc6 and -rc9 before the kernel is |
|---|
| 70 | | -considered to be sufficiently stable and the final 2.6.x release is made. |
|---|
| 70 | +considered to be sufficiently stable and the final release is made. |
|---|
| 71 | 71 | At that point the whole process starts over again. |
|---|
| 72 | 72 | |
|---|
| 73 | | -As an example, here is how the 4.16 development cycle went (all dates in |
|---|
| 74 | | -2018): |
|---|
| 73 | +As an example, here is how the 5.4 development cycle went (all dates in |
|---|
| 74 | +2019): |
|---|
| 75 | 75 | |
|---|
| 76 | 76 | ============== =============================== |
|---|
| 77 | | - January 28 4.15 stable release |
|---|
| 78 | | - February 11 4.16-rc1, merge window closes |
|---|
| 79 | | - February 18 4.16-rc2 |
|---|
| 80 | | - February 25 4.16-rc3 |
|---|
| 81 | | - March 4 4.16-rc4 |
|---|
| 82 | | - March 11 4.16-rc5 |
|---|
| 83 | | - March 18 4.16-rc6 |
|---|
| 84 | | - March 25 4.16-rc7 |
|---|
| 85 | | - April 1 4.17 stable release |
|---|
| 77 | + September 15 5.3 stable release |
|---|
| 78 | + September 30 5.4-rc1, merge window closes |
|---|
| 79 | + October 6 5.4-rc2 |
|---|
| 80 | + October 13 5.4-rc3 |
|---|
| 81 | + October 20 5.4-rc4 |
|---|
| 82 | + October 27 5.4-rc5 |
|---|
| 83 | + November 3 5.4-rc6 |
|---|
| 84 | + November 10 5.4-rc7 |
|---|
| 85 | + November 17 5.4-rc8 |
|---|
| 86 | + November 24 5.4 stable release |
|---|
| 86 | 87 | ============== =============================== |
|---|
| 87 | 88 | |
|---|
| 88 | 89 | How do the developers decide when to close the development cycle and create |
|---|
| .. | .. |
|---|
| 98 | 99 | achieve; there are just too many variables in a project of this size. |
|---|
| 99 | 100 | There comes a point where delaying the final release just makes the problem |
|---|
| 100 | 101 | worse; the pile of changes waiting for the next merge window will grow |
|---|
| 101 | | -larger, creating even more regressions the next time around. So most 4.x |
|---|
| 102 | +larger, creating even more regressions the next time around. So most 5.x |
|---|
| 102 | 103 | kernels go out with a handful of known regressions though, hopefully, none |
|---|
| 103 | 104 | of them are serious. |
|---|
| 104 | 105 | |
|---|
| 105 | 106 | Once a stable release is made, its ongoing maintenance is passed off to the |
|---|
| 106 | | -"stable team," currently consisting of Greg Kroah-Hartman. The stable team |
|---|
| 107 | | -will release occasional updates to the stable release using the 4.x.y |
|---|
| 108 | | -numbering scheme. To be considered for an update release, a patch must (1) |
|---|
| 109 | | -fix a significant bug, and (2) already be merged into the mainline for the |
|---|
| 110 | | -next development kernel. Kernels will typically receive stable updates for |
|---|
| 111 | | -a little more than one development cycle past their initial release. So, |
|---|
| 112 | | -for example, the 4.13 kernel's history looked like: |
|---|
| 107 | +"stable team," currently Greg Kroah-Hartman. The stable team will release |
|---|
| 108 | +occasional updates to the stable release using the 5.x.y numbering scheme. |
|---|
| 109 | +To be considered for an update release, a patch must (1) fix a significant |
|---|
| 110 | +bug, and (2) already be merged into the mainline for the next development |
|---|
| 111 | +kernel. Kernels will typically receive stable updates for a little more |
|---|
| 112 | +than one development cycle past their initial release. So, for example, the |
|---|
| 113 | +5.2 kernel's history looked like this (all dates in 2019): |
|---|
| 113 | 114 | |
|---|
| 114 | 115 | ============== =============================== |
|---|
| 115 | | - September 3 4.13 stable release |
|---|
| 116 | | - September 13 4.13.1 |
|---|
| 117 | | - September 20 4.13.2 |
|---|
| 118 | | - September 27 4.13.3 |
|---|
| 119 | | - October 5 4.13.4 |
|---|
| 120 | | - October 12 4.13.5 |
|---|
| 116 | + July 7 5.2 stable release |
|---|
| 117 | + July 14 5.2.1 |
|---|
| 118 | + July 21 5.2.2 |
|---|
| 119 | + July 26 5.2.3 |
|---|
| 120 | + July 28 5.2.4 |
|---|
| 121 | + July 31 5.2.5 |
|---|
| 121 | 122 | ... ... |
|---|
| 122 | | - November 24 4.13.16 |
|---|
| 123 | + October 11 5.2.21 |
|---|
| 123 | 124 | ============== =============================== |
|---|
| 124 | 125 | |
|---|
| 125 | | -4.13.16 was the final stable update of the 4.13 release. |
|---|
| 126 | +5.2.21 was the final stable update of the 5.2 release. |
|---|
| 126 | 127 | |
|---|
| 127 | 128 | Some kernels are designated "long term" kernels; they will receive support |
|---|
| 128 | 129 | for a longer period. As of this writing, the current long term kernels |
|---|
| 129 | 130 | and their maintainers are: |
|---|
| 130 | 131 | |
|---|
| 131 | | - ====== ====================== ============================== |
|---|
| 132 | | - 3.16 Ben Hutchings (very long-term stable kernel) |
|---|
| 133 | | - 4.1 Sasha Levin |
|---|
| 134 | | - 4.4 Greg Kroah-Hartman (very long-term stable kernel) |
|---|
| 135 | | - 4.9 Greg Kroah-Hartman |
|---|
| 136 | | - 4.14 Greg Kroah-Hartman |
|---|
| 137 | | - ====== ====================== ============================== |
|---|
| 132 | + ====== ================================ ======================= |
|---|
| 133 | + 3.16 Ben Hutchings (very long-term kernel) |
|---|
| 134 | + 4.4 Greg Kroah-Hartman & Sasha Levin (very long-term kernel) |
|---|
| 135 | + 4.9 Greg Kroah-Hartman & Sasha Levin |
|---|
| 136 | + 4.14 Greg Kroah-Hartman & Sasha Levin |
|---|
| 137 | + 4.19 Greg Kroah-Hartman & Sasha Levin |
|---|
| 138 | + 5.4 Greg Kroah-Hartman & Sasha Levin |
|---|
| 139 | + ====== ================================ ======================= |
|---|
| 138 | 140 | |
|---|
| 139 | 141 | The selection of a kernel for long-term support is purely a matter of a |
|---|
| 140 | 142 | maintainer having the need and the time to maintain that release. There |
|---|
| .. | .. |
|---|
| 215 | 217 | ------------------------------- |
|---|
| 216 | 218 | |
|---|
| 217 | 219 | There is exactly one person who can merge patches into the mainline kernel |
|---|
| 218 | | -repository: Linus Torvalds. But, of the over 9,500 patches which went |
|---|
| 219 | | -into the 2.6.38 kernel, only 112 (around 1.3%) were directly chosen by Linus |
|---|
| 220 | | -himself. The kernel project has long since grown to a size where no single |
|---|
| 221 | | -developer could possibly inspect and select every patch unassisted. The |
|---|
| 222 | | -way the kernel developers have addressed this growth is through the use of |
|---|
| 223 | | -a lieutenant system built around a chain of trust. |
|---|
| 220 | +repository: Linus Torvalds. But, for example, of the over 9,500 patches |
|---|
| 221 | +which went into the 2.6.38 kernel, only 112 (around 1.3%) were directly |
|---|
| 222 | +chosen by Linus himself. The kernel project has long since grown to a size |
|---|
| 223 | +where no single developer could possibly inspect and select every patch |
|---|
| 224 | +unassisted. The way the kernel developers have addressed this growth is |
|---|
| 225 | +through the use of a lieutenant system built around a chain of trust. |
|---|
| 224 | 226 | |
|---|
| 225 | 227 | The kernel code base is logically broken down into a set of subsystems: |
|---|
| 226 | 228 | networking, specific architecture support, memory management, video |
|---|
| .. | .. |
|---|
| 293 | 295 | The current -mm patch is available in the "mmotm" (-mm of the moment) |
|---|
| 294 | 296 | directory at: |
|---|
| 295 | 297 | |
|---|
| 296 | | - http://www.ozlabs.org/~akpm/mmotm/ |
|---|
| 298 | + https://www.ozlabs.org/~akpm/mmotm/ |
|---|
| 297 | 299 | |
|---|
| 298 | 300 | Use of the MMOTM tree is likely to be a frustrating experience, though; |
|---|
| 299 | 301 | there is a definite chance that it will not even compile. |
|---|
| .. | .. |
|---|
| 304 | 306 | Linux-next trees are announced on the linux-kernel and linux-next mailing |
|---|
| 305 | 307 | lists when they are assembled; they can be downloaded from: |
|---|
| 306 | 308 | |
|---|
| 307 | | - http://www.kernel.org/pub/linux/kernel/next/ |
|---|
| 309 | + https://www.kernel.org/pub/linux/kernel/next/ |
|---|
| 308 | 310 | |
|---|
| 309 | 311 | Linux-next has become an integral part of the kernel development process; |
|---|
| 310 | 312 | all patches merged during a given merge window should really have found |
|---|
| .. | .. |
|---|
| 363 | 365 | Git is now packaged by almost all Linux distributions. There is a home |
|---|
| 364 | 366 | page at: |
|---|
| 365 | 367 | |
|---|
| 366 | | - http://git-scm.com/ |
|---|
| 368 | + https://git-scm.com/ |
|---|
| 367 | 369 | |
|---|
| 368 | 370 | That page has pointers to documentation and tutorials. |
|---|
| 369 | 371 | |
|---|
| 370 | 372 | Among the kernel developers who do not use git, the most popular choice is |
|---|
| 371 | 373 | almost certainly Mercurial: |
|---|
| 372 | 374 | |
|---|
| 373 | | - http://www.selenic.com/mercurial/ |
|---|
| 375 | + https://www.selenic.com/mercurial/ |
|---|
| 374 | 376 | |
|---|
| 375 | 377 | Mercurial shares many features with git, but it provides an interface which |
|---|
| 376 | 378 | many find easier to use. |
|---|
| 377 | 379 | |
|---|
| 378 | 380 | The other tool worth knowing about is Quilt: |
|---|
| 379 | 381 | |
|---|
| 380 | | - http://savannah.nongnu.org/projects/quilt/ |
|---|
| 382 | + https://savannah.nongnu.org/projects/quilt/ |
|---|
| 381 | 383 | |
|---|
| 382 | 384 | Quilt is a patch management system, rather than a source code management |
|---|
| 383 | 385 | system. It does not track history over time; it is, instead, oriented |
|---|
| .. | .. |
|---|
| 403 | 405 | http://vger.kernel.org/vger-lists.html |
|---|
| 404 | 406 | |
|---|
| 405 | 407 | There are lists hosted elsewhere, though; a number of them are at |
|---|
| 406 | | -lists.redhat.com. |
|---|
| 408 | +redhat.com/mailman/listinfo. |
|---|
| 407 | 409 | |
|---|
| 408 | 410 | The core mailing list for kernel development is, of course, linux-kernel. |
|---|
| 409 | 411 | This list is an intimidating place to be; volume can reach 500 messages per |
|---|
| .. | .. |
|---|
| 492 | 494 | with others on getting things fixed up (this can require |
|---|
| 493 | 495 | persistence!) but that's fine - it's a part of kernel development. |
|---|
| 494 | 496 | |
|---|
| 495 | | -(http://lwn.net/Articles/283982/). |
|---|
| 497 | +(https://lwn.net/Articles/283982/). |
|---|
| 496 | 498 | |
|---|
| 497 | 499 | In the absence of obvious problems to fix, developers are advised to look |
|---|
| 498 | 500 | at the current lists of regressions and open bugs in general. There is |
|---|