A person who isn’t much of a computer literate wouldn’t know that the kernel is a fundamental part of any OS. It is so far removed from the surface apps that the closest you could get to it from a typical app on your machine is configuring network protocols and/or installing driver software. As a matter of fact, only programmers typically deal with kernels directly.
To paint a perfect picture, the kernel is to a computer what an engine is to a car. You ask what the best way to contribute to the Linux kernel is? I don’t know. I’m not an authority on kernels, but I sure do have some suggestions you may find useful.
The Linux Kernel was written in C and assembly programming languages to be of the Monolithic type. Released under the GNU GPL license, it is available on the Linux Kernel Archives website.
By default, this means that you will need to have at least, a basic understanding of how to program, especially in C and assembly. The kernel is managed using GIT version control system so you will also need to understand how to work with GIT.
A good place to start is Kernel Newbies , where you will become familiar with the Eudyptula Challenge – a series of programming exercises that teaches you how to contribute to the Linux kernel.
Another thing you should know before you delve into the Linux code is that the Linux repo on GitHub is pretty much a stand-in mirror and Linus doesn’t accept pull requests.
The “actual” mirror is here and everything goes over mailing lists. There are guides online on how to work with mailing lists in Git if you look well enough.
The Ways to Contribute
There are 3 main ways you can contribute to the kernel:
1. Perfect the Code Quality
Linus has strict rules for accepting code changes and he is the only one who can add to the master branch. However, there are a couple of mistakes that result in static code checker errors and warnings and what you can do here is to eliminate such issues.
This is the easiest of ways to contribute to the kernel but mind you, you will need to have understood the recommended coding style as stated in the docs and made all the necessary configurations that will allow you make your edited work available to the many other contributors.
2. Complete the ToDos
If you are either satisfied with what you’ve done so far or already know how to do that, completing the ToDo list is an excellent point to be. All ToDo files on the source tree have descriptions of the work that needs to be done so you can get right into it. It can include new features that are yet to be added, improvement fixes, etc.
3. Fix Bugs
This might be just as hard as completing the ToDos, if not harder. To fix bugs you must already understand what the error is and how to go about fixing it in a way that adheres to the documentation standard and will not break other code implementations.
So, there you have it!
In a way, I’m contributing to the Linux kernel by writing about it to raise awareness. Some donate their finances to contributors across the distro spectrum, and some make code changes to the kernel code base. The best way for you depends on a number of factors best known to you and only you can decide which way is the most suitable for you.
At the end of the day, the Linux Kernel is available to all those interested in contributing to it and no one is under any coercion to do so.
What do you think is the best way to contribute to the Linux kernel? Are you a contributor by code or any other way? Or maybe you know people who are. Drop your two cents in the discussion box below.