diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-10 10:42:33 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-10 10:42:33 -0800 |
commit | 65332ecd7458d8d980bccf49d3ac666bd23219dc (patch) | |
tree | 72c8a1d0ff7564d919dc0f742d66262a5a9f95b8 /HOWTO | |
parent | a07408096569c969cf70a48b17fee38a86af5c47 (diff) | |
download | patches-65332ecd7458d8d980bccf49d3ac666bd23219dc.tar.gz |
reorg for proper pci places
Diffstat (limited to 'HOWTO')
-rw-r--r-- | HOWTO | 103 |
1 files changed, 89 insertions, 14 deletions
@@ -19,15 +19,36 @@ know to achieve this by describing the process you need to go through, and hints on how to work with the community. It will also try to explain some of the reasons why the community works like it does. -What this document does not do, is teach you how to program. There are -plenty of good places to learn how to do this, but this is not such a -place. -First off, please remember that you are trying to learn how to work with -the existing development community. You should try to learn as much as -possible ahead of time, and not expect people to adapt to you, or your -company's way of doing things, no matter how important you feel your -task is. +The kernel is written mostly in C, with some architectural-dependent +parts written in assembly. A good understanding of C is required to +kernel development. Assembly (any architecture) is not required unless +you plan to do low-level development for that architecture. Though they +are not a good substitute for a solid C education and/or years of +experience, the following books are good, if anything for reference: + +"The C Programming Language" by Kernhigan and Ritchie [Prentice Hall] +"Practical C Programming" by Steve Oualline [O'Reilly] +"Programming the 80386" by Crawford and Gelsinger [Sybek] +"UNIX Systems for Modern Architectures" by Curt Schimmel [Addison Wesley] + +The kernel is written using GNU C and the GNU toolchain. While it +adheres to the ISO C99 (??) standard, it uses a number of extensions +that are not featured in the standard. It can sometimes be difficult to +understand the assumptions the kernel has on the toolchain and the +extensions that it uses, and unfortunately there is no definitive +reference for them. Please check the gcc info pages (`info gcc`) for +some information on them." + +Please remember that you are trying to learn how to work with the +existing development community. It is a very diverse group of people, +with very high standards for coding, style, and procedure. These +procedures have been created over time based on what they have found to +work best for such a large and geographically dispursed team. Try to +learn as much as possible about these procedures ahead of time, as they +are well documented, and not expect people to adapt to you, or your +company's way of doing things. + Legal Issues @@ -110,7 +131,7 @@ Becoming A Kernel Developer If you do not know anything about Linux kernel development, you should look at the Linux KernelNewbies project: - URL + http://kernelnewbies.org It consists of a helpful mailing list, where you can ask almost any type of basic kernel development question (make sure to search the archives first, before asking something that has already been answered in the @@ -118,11 +139,14 @@ past.) It also has a IRC channel that you can use to ask questions in real-time, and a lot of helpful documentation that is useful for learning about Linux kernel development. +The website has basic information about code organization, subsystems, +and current projects (both in-tree and out-of-tree). It also basic +logistical information, like compiling a kernel and applying a patch. If you do not know where you want to start, but you want to look for some task to start doing to join into the kernel development community, go to the Linux Kernel Janitor's project: - URL + http://janitor.kernelnewbies.org/ It is a great place to start. It describes a list of relatively simple tasks that need to be cleaned up and fixed within the Linux kernel source tree. Working with the developers in charge of this project, you @@ -135,19 +159,22 @@ If you already have a chunk of code that you want to have go into the kernel tree, but need some help getting it in the proper form, the kernel-mentors project was created to help you out with this. It is a mailing list, and can be found at: - URL + http://selenic.com/mailman/listinfo/kernel-mentors The development process ----------------------- +<TODO> + + Mailing lists ------------- As some of the above documents describe, the majority of the core kernel developers participate on the Linux Kernel Mailing list. Details on how to subscribe and unsubscribe from the list, can be found at: - URL + http://vger.kernel.org/vger-lists.html#linux-kernel There are archives of the mailing list on the web in many different places. Please use a search engine to find these archives if you wish to research what has been discussed in the past. @@ -157,6 +184,18 @@ mailing list where they do their development efforts. See the MAINTAINERS file for a list of what these lists are, for the different groups. +Many of the lists are hosted on kernel.org. Information on them can be +found here: + http://vger.kernel.org/vger-lists.html + +Please remember to follow good behavioral habits when using the lists. +Though a bit cheesy, the following URL has some simple guidelines for +interacting with the list (or any list): + http://www.albion.com/netiquette/ + +Above all, please remember to show respect to other subscribers. + + Working with the community -------------------------- @@ -184,6 +223,8 @@ do to try to avoid problems: - "Here's a 5000 line patch that..." + + Break your changes up --------------------- @@ -196,13 +237,47 @@ you can receive feedback on what you are doing. It also lets the community feel that you are working with them, and not simply using them as a dumping ground for your feature. +The reasons for breaking things up are the following: + +1) Small patches increase the likelihood that your patches will be + applied, since they don't take much time or effort to verify for + correctness. A 5 line patch can be applied by a maintainer with + barely a second glance. But, a 500 line patch may take hours to + review for correctness (the time it takes is exponentially + proportional to the size of the patch, or something). + + Small patches also make it very easy to debug when something goes + wrong. It's much easier to back out patches one by one, than it is + to dissect a very large patch after it's been applied (and broken + something). + +2) It's important not only to send small patches, but also to rewrite + and simplify (or simply re-order) patches before submitting them. + +Think of a teacher grading homework from a math student. The teacher +does not want to see the student's trials and errors before they came up +with the solution. They want to see the cleanest, most elegant answer. +The student knows this, and would never submit her intermediate work +before the final solution. + +The same is true of kernel development. The maintainers and reviewers do +not want to see the thought process behind the solution to the problem +one is solving. They want to see a final, simple, elegant solution. + +Both of these things are sometimes very hard to do. It can take years +to perfect these practices (if at all). It's a continuous process of +improvement that requires a lot of patience and determination. But, +don't give up. It's possible. Many have done it before, and each had to +start exactly where you are now. + + ---------- Thanks to Randy Dunlap and Gerrit Huizenga for the list of things you -should and should not say. Also to XXX for their review and comments on -early drafts of this document. +should and should not say. Also to Pat Mochel for their review and +comments on early drafts of this document. |