
Learn How to Contribute to the Linux Kernel: Take the Eudyptula Challenge - Tsiolkovsky
http://www.linux.com/news/featured-blogs/200-libby-clark/770112-learn-how-to-contribute-to-the-linux-kernel-take-the-eudyptula-challenge
======
revelation
The main reason in my experience is the complete and utter lack of
documentation. It's a bunch of text files that alternatively tell you
intricate details about some architecture that died 20 years ago or boast
their genius.

Linus likes his C code groomed a particular way, but he doesn't mind if you
omit the documentation for that subsystem rewrite. That's why they call it
kernel _hacking_.

~~~
teacup50
The BSDs are far more approachable, and I recommend starting there for anyone
interested in kernel development.

There are books, such as The Design and Implementation of the FreeBSD
Operating System (by McKusick): [http://www.amazon.com/Design-Implementation-
FreeBSD-Operatin...](http://www.amazon.com/Design-Implementation-FreeBSD-
Operating-System/dp/0201702452)

There are papers, such as Jonathan Lemon's "Kqueue: A generic and scalable
event notification facility" presented at Usenix 2001:
[http://people.freebsd.org/~jlemon/papers/kqueue.pdf](http://people.freebsd.org/~jlemon/papers/kqueue.pdf)

There are kernel interface man pages:

[http://www.freebsd.org/cgi/man.cgi?query=SYSCALL_MODULE&sekt...](http://www.freebsd.org/cgi/man.cgi?query=SYSCALL_MODULE&sektion=9&apropos=0&manpath=FreeBSD+10.0-RELEASE)

[http://www.freebsd.org/cgi/man.cgi?query=hhook&apropos=0&sek...](http://www.freebsd.org/cgi/man.cgi?query=hhook&apropos=0&sektion=9&manpath=FreeBSD+10.0-RELEASE&arch=default&format=html)

There are examples referenced by the man pages:

[http://svnweb.freebsd.org/base/head/share/examples/](http://svnweb.freebsd.org/base/head/share/examples/)

~~~
songgao
Thanks for the references!

I actually started to look into FreeBSD kernel code recently. I've found that
FreeBSD's ath driver code is cleaner and more straightforward compared to the
ath/ath*k drivers in Linux. Not sure if this is coincidence or due to
different philosophy between FreeBSD and Linux communities.

~~~
teacup50
I've found similar across the board; I think it boils down to different
philosophies/development cultures.

------
ElliotH
I've been wanting to do something like this for ages. I haven't had a reply
back to my sign up email yet, but soon I assume.

What might be really good is if other projects in Linux ran similar courses.
The larger projects are inspiring to take part in, but have learning cliffs
more than learning curves.

~~~
IgorPartola
Did you by chance send the email as HTML? The FAQ says they reject those
outright.

~~~
kasbah
It will tell you if it has not accepted your email and why.

------
pronoiac
Ubuntu offers a guide to fetching the appropriate software dependencies for a
build environment, kernel source and configs:

[https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel](https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel)

~~~
dfc
This link is for _contributing_ to the Linux kernel project, not _compiling_ a
kernel.

~~~
pronoiac
Consider it a step 0!

------
awda
I finished this, but I still have no idea where I can actually help (aside
from janitorial code cleanups and some vague notion of improving the
documentation).

~~~
julian25
I'm curious to know more too. I am a little over halfway done and want to see
where the challenges end up. Can you give me some more detail?

~~~
awda
You end up adding a minor feature to the FAT filesystem.

------
jilted
In the book "Systems Performance" by Brendan Gregg, there is a section on
Kernels--in this case comparing Linux to Solaris--where the author shows a
table of Kernel Versions with Documented Syscall Counts.

He states: '...there is a pattern over time: Linux has been adding system
calls. Solaris has been removing them...'

Just as a matter of personal opinion, I would personally never jump into Linux
Kernel Development simply because I feel there are already 'too many cooks in
the kitchen' and it feels as if there is simply not as much clarity when
compared to other *nix distributions.

Do I work with Linux? Yes, because this is what is used in my workplace. Would
I hack on the Linux Kernel or Network Stack for work purposes? Sure, because
it would likely be a group effort to address some problem for instance.

Now would I go home and hack on the Linux Kernel for fun and understanding?
Absolutely not.

------
tinalumfoil
From the blog post:

> You need a strong knowledge of C in order to participate

From the website:

> A basic understanding of the C programming language is required

------
microwise
A good step taken by the Linux Foundation. I think I'll join the project, it a
nice way to rank myself...

