2.Process.rst (d053cf0d771f6547cb0537759a9af63cf402908d) 2.Process.rst (e7b4311ebcac142be28c9fa1b9f63a9d35fc2a92)
1.. _development_process:
2
3How the development process works
4=================================
5
6Linux kernel development in the early 1990's was a pretty loose affair,
7with relatively small numbers of users and developers involved. With a
8user base in the millions and with some 2,000 developers involved over the

--- 281 unchanged lines hidden (view full) ---

290patches which accumulate in -mm will eventually either be forwarded on to
291an appropriate subsystem tree or be sent directly to Linus. In a typical
292development cycle, approximately 5-10% of the patches going into the
293mainline get there via -mm.
294
295The current -mm patch is available in the "mmotm" (-mm of the moment)
296directory at:
297
1.. _development_process:
2
3How the development process works
4=================================
5
6Linux kernel development in the early 1990's was a pretty loose affair,
7with relatively small numbers of users and developers involved. With a
8user base in the millions and with some 2,000 developers involved over the

--- 281 unchanged lines hidden (view full) ---

290patches which accumulate in -mm will eventually either be forwarded on to
291an appropriate subsystem tree or be sent directly to Linus. In a typical
292development cycle, approximately 5-10% of the patches going into the
293mainline get there via -mm.
294
295The current -mm patch is available in the "mmotm" (-mm of the moment)
296directory at:
297
298 http://www.ozlabs.org/~akpm/mmotm/
298 https://www.ozlabs.org/~akpm/mmotm/
299
300Use of the MMOTM tree is likely to be a frustrating experience, though;
301there is a definite chance that it will not even compile.
302
303The primary tree for next-cycle patch merging is linux-next, maintained by
304Stephen Rothwell. The linux-next tree is, by design, a snapshot of what
305the mainline is expected to look like after the next merge window closes.
306Linux-next trees are announced on the linux-kernel and linux-next mailing
307lists when they are assembled; they can be downloaded from:
308
299
300Use of the MMOTM tree is likely to be a frustrating experience, though;
301there is a definite chance that it will not even compile.
302
303The primary tree for next-cycle patch merging is linux-next, maintained by
304Stephen Rothwell. The linux-next tree is, by design, a snapshot of what
305the mainline is expected to look like after the next merge window closes.
306Linux-next trees are announced on the linux-kernel and linux-next mailing
307lists when they are assembled; they can be downloaded from:
308
309 http://www.kernel.org/pub/linux/kernel/next/
309 https://www.kernel.org/pub/linux/kernel/next/
310
311Linux-next has become an integral part of the kernel development process;
312all patches merged during a given merge window should really have found
313their way into linux-next some time before the merge window opens.
314
315
316Staging trees
317-------------

--- 42 unchanged lines hidden (view full) ---

360for being difficult to learn and use, though it has gotten better over
361time. Some sort of familiarity with git is almost a requirement for kernel
362developers; even if they do not use it for their own work, they'll need git
363to keep up with what other developers (and the mainline) are doing.
364
365Git is now packaged by almost all Linux distributions. There is a home
366page at:
367
310
311Linux-next has become an integral part of the kernel development process;
312all patches merged during a given merge window should really have found
313their way into linux-next some time before the merge window opens.
314
315
316Staging trees
317-------------

--- 42 unchanged lines hidden (view full) ---

360for being difficult to learn and use, though it has gotten better over
361time. Some sort of familiarity with git is almost a requirement for kernel
362developers; even if they do not use it for their own work, they'll need git
363to keep up with what other developers (and the mainline) are doing.
364
365Git is now packaged by almost all Linux distributions. There is a home
366page at:
367
368 http://git-scm.com/
368 https://git-scm.com/
369
370That page has pointers to documentation and tutorials.
371
372Among the kernel developers who do not use git, the most popular choice is
373almost certainly Mercurial:
374
369
370That page has pointers to documentation and tutorials.
371
372Among the kernel developers who do not use git, the most popular choice is
373almost certainly Mercurial:
374
375 http://www.selenic.com/mercurial/
375 https://www.selenic.com/mercurial/
376
377Mercurial shares many features with git, but it provides an interface which
378many find easier to use.
379
380The other tool worth knowing about is Quilt:
381
376
377Mercurial shares many features with git, but it provides an interface which
378many find easier to use.
379
380The other tool worth knowing about is Quilt:
381
382 http://savannah.nongnu.org/projects/quilt/
382 https://savannah.nongnu.org/projects/quilt/
383
384Quilt is a patch management system, rather than a source code management
385system. It does not track history over time; it is, instead, oriented
386toward tracking a specific set of changes against an evolving code base.
387Some major subsystem maintainers use quilt to manage patches intended to go
388upstream. For the management of certain kinds of trees (-mm, for example),
389quilt is the best tool for the job.
390

--- 98 unchanged lines hidden (view full) ---

489::
490
491 The #1 project for all kernel beginners should surely be "make sure
492 that the kernel runs perfectly at all times on all machines which
493 you can lay your hands on". Usually the way to do this is to work
494 with others on getting things fixed up (this can require
495 persistence!) but that's fine - it's a part of kernel development.
496
383
384Quilt is a patch management system, rather than a source code management
385system. It does not track history over time; it is, instead, oriented
386toward tracking a specific set of changes against an evolving code base.
387Some major subsystem maintainers use quilt to manage patches intended to go
388upstream. For the management of certain kinds of trees (-mm, for example),
389quilt is the best tool for the job.
390

--- 98 unchanged lines hidden (view full) ---

489::
490
491 The #1 project for all kernel beginners should surely be "make sure
492 that the kernel runs perfectly at all times on all machines which
493 you can lay your hands on". Usually the way to do this is to work
494 with others on getting things fixed up (this can require
495 persistence!) but that's fine - it's a part of kernel development.
496
497(http://lwn.net/Articles/283982/).
497(https://lwn.net/Articles/283982/).
498
499In the absence of obvious problems to fix, developers are advised to look
500at the current lists of regressions and open bugs in general. There is
501never any shortage of issues in need of fixing; by addressing these issues,
502developers will gain experience with the process while, at the same time,
503building respect with the rest of the development community.
498
499In the absence of obvious problems to fix, developers are advised to look
500at the current lists of regressions and open bugs in general. There is
501never any shortage of issues in need of fixing; by addressing these issues,
502developers will gain experience with the process while, at the same time,
503building respect with the rest of the development community.