
Linux Kernel Teaching - throwaway_7718
https://linux-kernel-labs.github.io/refs/heads/master/index.html
======
ivanfon
I miss the Eudyptula Challenge [0], I never got around to complementing it. It
was a series of 20 challenges to introduce you to Linux kernel development,
and it was done entirely over email. I think it's been shut down for a few
years now, I'm not sure when or if it'll come back at this point.

[0] [http://eudyptula-challenge.org/](http://eudyptula-challenge.org/)

~~~
tarruda
It is still possible to find the exercises/answers on github, so anyone can
complete the challenge on their own.

~~~
eatonphil
Yep! A quick search turned this up.

[https://github.com/agelastic/eudyptula](https://github.com/agelastic/eudyptula)

------
mikeyouse
The Linux Foundation recently released a free course as well titled "A
Beginner's Guide to Linux Kernel Development" \- haven't taken it yet, but
another resource for the community:

[https://training.linuxfoundation.org/resources/free-
courses/...](https://training.linuxfoundation.org/resources/free-
courses/a-beginners-guide-to-linux-kernel-development/)

~~~
ignoramous
Here's another freely available beginner's resource on Linux internals by
u/0xAX [0]: [https://0xax.gitbooks.io/linux-
insides/content/index.html](https://0xax.gitbooks.io/linux-
insides/content/index.html)

[0]
[https://news.ycombinator.com/submitted?id=0xAX](https://news.ycombinator.com/submitted?id=0xAX)

------
rtkaratekid
Started getting into kernel stuff for work. Does anyone have a good idea what
kind of market demand there is for kernel devs or similar skill sets? Being
new to this I absolutely love it, but have no idea.

The resources shared by everyone here are so helpful! I’ve been muddling
through by reading the docs, source code, and various messages on the mailing
list and... it’s been a little painful.

~~~
ddevault
Consistent kernel hackers get hired fast. Focus on a particular subsystem,
participate in the community, and contribute regularly - you'll have
opportunities in no time.

~~~
dbancajas
what would be a typical salary range for 1 year kernel dev + 4-5 years in
related experience? let's say BayArea/NY/Austin? I really did like learning
about kernel dev before. Might be time to learn again..

~~~
ddevault
I dunno, maybe around $80K-$100K? In expensive cities, more? At FAANG, more
still? A lot of kernel hackers work remotely.

~~~
shok3001
seems low

~~~
ddevault
Well, it depends on whether or not "4-5 years in related experience" means
systems programming or if it means making single-page webapps.

~~~
ddlutz
That's less than somebody with 0 years experience in FAANG will make. I
wouldn't expect kernel developers to get paid much differently than non-kernel
developers at a similar level.

~~~
ddevault
FAANG rates aren't normal outside of FAANG (and maybe finance).

------
saagarjha
Someone here probably knows this, so I figured I'd ask: I submitted a small
patch to the kernel a while back and I made a typo in it and it broke the
tests, and then I couldn't figure out how to get the test bot to pick up my
new patch and by that point I assume anyone who would possibly have reviewed
my patch stopped bothering. Is there something I should do to get it looked at
again?

~~~
stefan_
If your original patch contained a mistake, you just send the new version with
the v2 prefix to the mailing list. You can do this with git format-patch -v2
and then send-email will pick it up automatically.

You should note the change in the individual commit or the cover letter.

~~~
saagarjha
Hmm, I’ll take a look. I think I manually did some munging of the subject line
to add “v2” where it seemed appropriate but I probably did it wrong.

------
organicfigs
Awesome! I can't wait to dig through this, I've been wanting to contribute to
the linux kernel for over 2 years but no one on the linux mailing lists seemed
interested in helping a newbie (so much for kernel newbies). Thanks for
putting this together.

~~~
snvzz
I find other systems (such as netbsd) to have a fairly more readable codebase
and friendlier community.

It was very easy for me to make some contributions there.

~~~
highspeedmobile
I pretty much agree with this. For example, the BSD Handbook and documentation
is the point of call for a newbie entering into the community and the codebase
is much more readable than the Linux kernel.

Last time I checked, the kernel-newbies site doesn't seem to be beginner
friendly and aside from following the IRC channel, the mailing list is still
the way to do code reviews there, which is quite frankly pre-historic and very
unfriendly for beginners sending patches at best.

At least for FreeBSD, they uses Phabricator for code reviews, HaikuOS uses
Gerrit and SerenityOS uses GitHub and they seem to be the other OSes that have
both good documentation about their kernels and their userland APIs. Perfect
places to start learning about operating systems and kernels in general.

~~~
jfkebwjsbx
Prehistoric? It is actually how the Git workflow was designed to work, and it
is a standard method that does not require third-party services nor tools.
Just your mail agent.

Sending patches is as easy as sending one in GitHub or any other web-based
system. The problem is that you (and many others) have never done it, and so
anything different is harder.

You should consider that if learning a handful of CLI commands is such a
problem for you, perhaps it is not the system that is being unfriendly to you,
but that you are unfriendly to learning anything else that is not your way.

~~~
highspeedmobile
> Sending patches is as easy as sending one in GitHub or any other web-based
> system.

Its still prehistoric in projects like the Linux Kernel, from a beginners
point of view compared to GitHub, Gerrit or GitLab, which most of the active
contributors are already working at large companies who's work requires
contributing to it, thus already have invested in time and money learning the
contribution process. To look at the LKML and do code reviews via back and
forth emails looks simple for a veteran Linux developer at a large company but
very arcane for a student sending a patch to the kernel.

> The problem is that you (and many others) have never done it, and so
> anything different is harder.

Your assumption is quite funny here as I have done both and I can tell you
that most of the beginners particularly students are introduced into open-
source via GitHub or even GitLab these days and its used as a starting point
into contributing to a OS project. IIRC, ReactOS and FreeBSD has retained more
student contributors from Google Summer of Code than say GNU/Hurd, by both
improving the contribution process for beginners. I still wouldn't recommend
beginners to learn about OSes in general by contributing to the Linux kernel
due to the above reasons. Project making contributions more accessible for
beginners isn't a bad thing, its actually how they attract potential long term
contributors to stay on, rather than to make things simple only for veteran
developers.

> You should consider that if learning a handful of CLI commands is such a
> problem for you, perhaps it is not the system that is being unfriendly to
> you, but that you are unfriendly to learning anything else that is not your
> way.

There's my point, it is still beginner unfriendly. Beginners these days would
start with Github or Gitlab with a GUI to send PRs to a different OS project
and wouldn't bother learning tons of CLI commands to send a patch in a email +
code reviews. It is therefore favours veteran developers at large companies
who stay on being long term contributors than the old days of random Linux
enthusiasts doing this, which I'm very surprised you don't see the
contribution process prehistoric from a beginners eyes. Perhaps something
needs to change...

~~~
salawat
Here's the thing.

Take GitHub, and boil it down, and it's a mish mash of version control, diff,
and patch, all plastered over with a shiny HTTP veneer.

Diff/patch, git, and email alone are the basic tools you _need_. Even before
VCS was a really big thing, that is how software changes were propagated
around.

There is nothing wrong with sticking with the basics. In fact, I flat out
refuse to tell newbies that they should host _everything_ on GitHub, or
GitLab. It's becoming a twisted new form of "social media-esque" hype.

~~~
highspeedmobile
Well done. But here's the actual thing:

There will always be those who don't like using the mailing lists for back and
forth reviews and the same goes for GitHub (I use both anyway and have a self-
hosted community GitLab and cgit). This isn't about me, its about attracting
potential contributors to the Linux kernel in the long term.

If I were tasked to attract as many beginners/students to go this path, It
won't be to start with the Linux kernel or the LKML mailing lists (that will
put them off). It would ultimately be other beginner-friendly similar projects
like SerenityOS, HaikuOS or some of the BSDs even, etc so they can get some
experience. Then their mental model is used to the Git flow so they can
transition to using bare Git commands and can go into a technical discussion
involving anything about kernel internals.

Since Linux doesn't need to worry about attracting new outsider contributors
due to commercial contributors doing most of the work, little needs to change.
Which is why from the very start I much rather recommend beginners to start
with other OSes and transition later to Linux internals.

------
grng3r
Great, thanks for this contribution. So helpful this just came at the moment
when I got my hands on The Linux Programming interface book, hopefully this
will all help myself to contribute, thanks guys

------
filereaper
Any additional material on cgroups and namespaces?

~~~
TACIXAT
I'd be interested in the next course on BPF and KVM.

~~~
rtkaratekid
BPF has some pretty good docs out there if you just poke around the BCC GitHub
repo (libbpf-tools/ is a good one) you’ll find a lot of them. I was able to
start building programs using libbpf, but a lot of the “understood” info about
the kernel is what’s been slowing me down, so I’m psyched to go through all
this material and learn.

------
Jahak
Cool, thank you very much!

------
navidr
Does this contain videos?

