Linux Kernel Architecture

(Jacob Rumans) #1
Mauerer runbapp06.tex V1 - 09/04/2008 6:14pm Page 1267

TheKernel


DevelopmentProcess


This book has given you lots of information about concepts, algorithms, data structures, and code.
Clearly these form the very core of Linux development, and that is what the kernel is all about. But
there’s another side of Linux that should not pass by unnoticed: the community that develops the
kernel, the way it works, and how people interact. This aspect is interesting because the kernel is
one of the largest and most complex open source projects in existence, and it’s a role model for dis-
tributed, decentralized development on a gigantic scale. The purpose of this appendix is to provide
an overview about numerous technical and social aspects of kernel development. Additionally, it
talks about the relationship between the Linux kernel and academia.

F.1 Introduction


The kernel sources (in the mainREADMEfile) describe the development community as a ‘‘loosely-
knit team of hackers across the Net,’’ and although both the number of people involved in kernel
development and their professional affiliations have changed from the beginning until now, this
statement has always been true. Openness is a direct outcome of this: Most communication among
developers takes place on mailing lists and can be read by anyone who is interested in how an oper-
ating system evolves. One particularly important point is that developers from many companies
that fiercely compete against each other in manyaspects (the companies, not the developers...)
closely cooperate in kernel development. Non-technical people, in particular, can often just stand
by in amazement. And actually, thisisquite a remarkable feat!

Not too much needs to be said about the essential principles of Linux kernel development nowa-
days. Although creating an open source operating system that could actually be used for something
appeared to be a crazy idea only 15 years ago, at least most technical people got quite used to it. One
essential difference between Linux kernel development in contrast to classical development models
is that there are no fixed formal rules of how things have to work. There are established practices,
but they are seldom formalized in documents. There is no development road map, and no single
centralized repository. There are, however,importantrepositories andimportantdevelopers. This
can be an advantage in many cases, because development gets more dynamic and flexible than with
fixed rigid structures, but it also makes things harder if you are new to the area.
Free download pdf