Hi guys,
Lately there have been a lot of discussions on community guidelines, and
general do and don't of kernel newbies mailing list.
So I thought let me compile a document, which can be used as a general
guidelines for kernel newbies, and it _may_ act as a do and don't document.
The document has as many points as I can recollect, so its far from
complete.

I am including Rik in the loop, since he is the one who can really implement
any of this.

I have written a draft kind of document, which I am attaching herewith this
mail. The document is nothing new, but it describes some of points I think I
have learnt here on this list as a member. This document can be best viewed
with a text editor like vim, though I have converted it with unix2dos, so I
hope it should be visible in other editors as well.

Please have a look at the document.
Suggestions/ Criticism are most welcome. There may be a lot of silly things
I have talked about, so feel free to point that out, I guess with more
inputs we can improve this document.
Please feel free to make any addition/deletion/modification to it.
My suggestion is as soon as someone subscribes to list, s/he can be sent
with copy of the finalized document and ask to read it ( and if possible
send an acknowledgement to the same.)


Thank you

Regards
Anuz
Set of FAQs

If you are new to this list please read them before you go on your quest for 
squeezing all the knowledge from fellow members


What is this list about
This list a list for budding kernel hackers, so the idea is ask queries which 
are mostly related to Linux Kernel, directly and sometimes indirectly.
This site is not a homework help site, so please refrain asking your assignment 
questions directly. However if you have a relevant doubt which is related to 
kernel please do ask but after reading all the text below.

What to be asked?
The best thing is to ask questions related to:
Linux kernel subsystems
Linux kernel modules
kernel compilation doubts
Sometimes question related kernel Code, which you are not able to understand 
because you are unfimilar with the syntax. 
Some relevant utilities like git, build tools like gcc et al, patch, kermit 
etc: but ensure you are not deviating too much from central theme of this list.
Kernel coding style/standard
May be issues related to GPL in kernel

How to be asked?
1. Firstly make a descriptive headline

"hi", "help" and generic headlines are shooting offences.
Not only are they annoying, but they waste a lot of time and precious computing 
power.
Besides, there are lesser chances of getting correct answer, you will be 
ignored and you __may__ loose credibility on the mailing list.


2. Give relevant information about your question
Since you have already given description of your problem, now its time to 
assist others with the details of the problem at hand.
Since kernel is complex beast, you need to give reference to what you are 
really asking about.
A code snippet is always the best thing to include. This shows that you have 
really dug into the code and you know what you are asking.
Give details of what you have tried, and where you are really stuck, this makes 
life easy for everyone.
Anything else like logs, test results, coredumps are _always_ a good idea.

3. When to Ask questions?
This is most relevant part of this entire process. if you master this art, you 
will be _winner_ of this mailing list.
First ask yourself "have  you really done your own bits?" what comprises of 
doing your own bits?
1. have you read the relevant texts? 
What are the relevant texts? 
Books: read the section on relevant books
Links: Please read the section on relevant links
Search: well this is the easiest part of entire process. Just use google, its 
gives  you a lot of information about anything you want to know. There is a 
tonnes of online documents for Linux, so google search will most likely link 
you to them. It takes a bit of time and practice to filter out what is relevant 
and what is not relevant on online search and there is no sureshot way of 
optimize this process. But everyone has learnt by hit and trail, so please do 
that.
If still not sure, here is an excercise, go to google and search "how to use 
google" and look for results.
Man pages: Most things related to linux has a relevant man pages including your 
system calls, so please look for man pages.
Mailing list archive: every now and then people ask similar questions, so there 
is a good chance someone has already asked the very same question, so you can 
dig into kernelnewbies archive: http://mail.nl.linux.org/kernelnewbies/
FAQs: kernel newbies has its own FAQ: http://kernelnewbies.org/FAQ. Linux 
kernel has its own FAQ: http://www.kernel.org/pub/linux/docs/lkml/: PLEASE DO 
refer them.
kernel Documentation: when you download linux kernel source: you can find a lot 
of useful documentation inside kernel/Documentation directory.


REMEMBER, self help is best way to learn, hackers before you had much lesser 
resources at their disposal.

Well, when you have tried all the previous steps and you feel your problem need 
to be discussed, its a good time to head towards kernelnewbies mailing list.

4. What to keep in mind, while posting on kernel newbie mailing list?
First rule of mailing list, which goes without saying is "be polite", that 
means not just the language or keywords, but the attitude.
Please learn about netiquettes: http://en.wikipedia.org/wiki/Netiquette. Well, 
they are not specific to any mailing list, but they good a good idea of general 
behaviour on any online community.
Please do not TOP POST. On almost all open source mailing list top-posting is 
considered RUDE. Don't know what TOP POSTing is? Here is a linky: 
http://en.wikipedia.org/wiki/Top_post#Top-posting
please learn a bit about hacker culture! How does that help? Well, since most 
people on kernel newbies are developers(or wannabe developers) they derive 
their ways of problem soving in similar fashion. That will give you a cultural 
insight on how most open source project works.
Do argue your point, but remember there are chances the people on the list know 
more than you, so ensure you make a valid arguement.
Dont add noise to list, by replying to irrelevant posts. Resist temptation for 
off-topic discussion, its a good idea to take them off-line.
Nobody cares much  about grammar on this list, bue make sure you try to make a 
good effort to write a good mail, which is legible and make sense. 

What not to do?
1. My manager want me to develop driver for superslicksuperawesomeDevice and i 
have no clue about linux, can you guys help me? BIG BLOODY NO. Before jumping 
here please "lurk more", this mailing list is not some kind of code churning 
machine
2. I want to be uber leet Kernel Haxor in 20 days, Please help me. It takes 
years of hardwork and dedication to learn kernel coding, so be patient and 
follow the process, you will improve slowly and community can help you only 
when you do it in the right way.
3. "cn i use ths lngo": bloody hell no, please make sure you use proper words, 
we are not grammar nazis, we are also fine with bad spellings, but 
undecipherable text makes it hard to read. Use of good abbreviations is 
encouraged, as  pointed out previously please read about hacker culture, it 
will help you in learning these kind of things. 
4. I want a job in kernel Programming please help. This is not really a job 
portal or job training list. Its meant for learning kernel coding, and how you 
use that learning is totally upto you.  Though its encouraged to take up this 
kind of profession, but this is not the right place to talk about your 
professional aspirations.

For more details on how to ask good question, please read this commentary, its 
very very useful:
http://www.catb.org/~esr/faqs/smart-questions.html


Some resources AKA "LURK MORE":

Books: 

Core kernel programming books:

1. Linux device drivers by Rubini, Greg kroah hartman and Jim Corbett: Third 
edition
if you really want to learn Kernel programming, this is your book. Its a MUST 
BUY book.
Probably most questions will be answered somewhere in this one
2. Linux kernel Development by Robert Love third edition.
Again, this is a highly recommended textbook. It gives you working details of 
kernel in fairly simple language.
3. Understanding Linux Kernel by Bovet and Cessati
This is an advance book, this is intended for more serious coding. Its 
recommended that you get yourself a bit familiar with x86 arch to use this book 
to fullest.
4.Essential Linux device drivers by Sreekrishnan Venkateswaran
This book is a good book in addition to classic text, its well written and 
simpler in nature, highly recommended.

C language programming books:

1. The C programming language by Kerninghan and Ritchie.
Its a must-have book, most code in Kernel is written in C language and 
mastering C is important and there is nothing better than KnR for this job.
2. Practical C programming by By Steve Oualline
Good book for developing a good coding style in C language
3. C traps and pitfalls by Andrew koeing 
A book which talks about limitations and issues with C programming, a very 
helpful textbook to understand where you can make mistakes.
4. Expert C programming: deep C secrets by Peter V Linden
A very good books, which teaches a lot of nuances of  C language. 
5. The C programming Manual by Harbison and Steele
This book ventures deep into the C programming language mostly details of 
standards and changes in C, its quite advance in nature.

Some preliminary books:

You may need to get yourself familiar with a lot of extra stuff, which may be 
needed:
1. Advance 80836 programming techniques by Jim Turley
A good book which gives details about x86 arch, this book will make you ready 
to use ULK as previously pointed out
2. The art of assembly programming:
A good book to learn some assembly language, which may be required if you want 
to dig into some architecture related code.
3. Design of unix operating system by Maurice J bach
Classic text on how unix operating system is designed, its a good text to 
understand the principles behind a lot of subsystems in operating system
4. Beginning linux programming by Richard Stones and Neil Matthews
its always a good idea to learn more about user space programming, before you 
dive in kernel. Mostly for two reasons: 1. Get familiar with facilities 
provided by operating systems 2. Get your hands on some coding. This book is 
highly recommended text

links:
1. http://www.linux.com/
home page of everything related to linux, you may find a lot of useful articles 
there

2. http://www.linux-magazine.com/
This magazine a lot of general information about linux, its not highly directly 
related to kernel but a very useful resource.

3. http://lwn.net/
One of the most respected site, its maintained by one of the most senior 
developer of kernel. It has a lot of useful article related to linux kernel.

4.http://kerneltrap.org/
This site host the digests of hottest topic on linux kernel mailing list. Its 
again a very useful site to look for what is going on in much simpler way.

5. http://sourceforge.net
If you want to participate in some project, this is the place to begin. There 
are lot of projects hosted on this site, some of them are related to kernel 
and/or device drivers.Most of those projects are in need of developers, so if 
you have skills, you can participate.

6. http://tldp.org/
The famous linux documentation project, this will help you with a lot of HOWTo 
for everything related to linux, including kernel.

  

Reply via email to