.. _development_conclusion:

For more information
====================

There are numerous sources of information on Linux kernel development and
related topics.  First among those will always be the Documentation
directory found in the kernel source distribution.  The top-level HOWTO
file is an important starting point; SubmittingPatches and
SubmittingDrivers are also something which all kernel developers should
read.  Many internal kernel APIs are documented using the kerneldoc
mechanism; "make htmldocs" or "make pdfdocs" can be used to generate those
documents in HTML or PDF format (though the version of TeX shipped by some
distributions runs into internal limits and fails to process the documents
properly).

Various web sites discuss kernel development at all levels of detail.  Your
author would like to humbly suggest http://lwn.net/ as a source;
information on many specific kernel topics can be found via the LWN kernel
index at:

	http://lwn.net/Kernel/Index/

Beyond that, a valuable resource for kernel developers is:

	http://kernelnewbies.org/

And, of course, one should not forget http://kernel.org/, the definitive
location for kernel release information.

There are a number of books on kernel development:

	Linux Device Drivers, 3rd Edition (Jonathan Corbet, Alessandro
	Rubini, and Greg Kroah-Hartman).  Online at
	http://lwn.net/Kernel/LDD3/.

	Linux Kernel Development (Robert Love).

	Understanding the Linux Kernel (Daniel Bovet and Marco Cesati).

All of these books suffer from a common fault, though: they tend to be
somewhat obsolete by the time they hit the shelves, and they have been on
the shelves for a while now.  Still, there is quite a bit of good
information to be found there.

Documentation for git can be found at:

	http://www.kernel.org/pub/software/scm/git/docs/

	http://www.kernel.org/pub/software/scm/git/docs/user-manual.html


Conclusion
==========

Congratulations to anybody who has made it through this long-winded
document.  Hopefully it has provided a helpful understanding of how the
Linux kernel is developed and how you can participate in that process.

In the end, it's the participation that matters.  Any open source software
project is no more than the sum of what its contributors put into it.  The
Linux kernel has progressed as quickly and as well as it has because it has
been helped by an impressively large group of developers, all of whom are
working to make it better.  The kernel is a premier example of what can be
done when thousands of people work together toward a common goal.

The kernel can always benefit from a larger developer base, though.  There
is always more work to do.  But, just as importantly, most other
participants in the Linux ecosystem can benefit through contributing to the
kernel.  Getting code into the mainline is the key to higher code quality,
lower maintenance and distribution costs, a higher level of influence over
the direction of kernel development, and more.  It is a situation where
everybody involved wins.  Fire up your editor and come join us; you will be
more than welcome.
