Learn How to Contribute to the Linux Kernel, Take the Eudyptula Challenge
If you want to contribute to the Linux kernel but aren't sure where to start, the Eudyptula Challenge could be a great way to test your programming skills and learn how to participate in the kernel community.
The Challenge, which appeared online about a month ago at http://eudyptula-challenge.org/, was created by an anonymous hacker (or hackers) going by the name Little Penguin as a way to get more developers involved with the Linux kernel. It's modeled after the Matasano Crypto Challenge – a collection of 48 exercises that teach participants how cryptography systems are built and how they're attacked. The Eudyptula Challenge isn't a tutorial, says Little Penguin, but you will get a good idea of how the whole kernel contribution process works by completing the challenge.
Challenge participants sign up by sending an email to Little, who sends them a series of programming tasks commonly employed by Linux kernel developers. Participants receive one task at a time and must complete it before Little Penguin sends the next. There's no winner of the challenge, but those who successfully complete all 20 tasks in the challenge are well on their way to being Linux kernel contributors.
We recently reached out to Little Penguin via email to learn more about the challenge. You can sign up for the challenge by sending a (non-HTML) email to little at eudyptula-challenge.org.
What is the Eudyptula Challenge?
The Eudyptula Challenge is a series of programming exercises for the Linux kernel. These exercises start with a very basic "Hello world" kernel module, and move up in complexity from there.
Why did you create the challenge?
The idea came to us after a long night of drinking in which it was determined that if the Linux kernel was to survive, it would need new programmers to fix all of the bugs that were recently added after a long night of drinking.
When does it start and how long does it last?
It starts whenever you want it to start. Just follow the directions on the website for how to join and your first task will be sent to you through email. There are currently 20 different tasks to complete. If you can finish all of them, a new set is currently being worked on to satisfy the people who have completed them who are asking for more.
Everything goes through email? There isn't a web form to use?
Yes, kernel development is done all through email, so setting up an email client to properly send Linux kernel patches is a skill that all kernel developers need to learn. Also, the back and forth process of submitting patches and code and responding to review all through email is exactly how it happens for all kernel developers. This challenge tries to duplicate the Linux kernel development experience as closely as possible.
Who should take the challenge?
Anyone who is interested in programming a set of different tasks relating to the Linux kernel.
What do I need to know before I can participate?
You need a strong knowledge of C in order to participate. Also, this challenge is not a tutorial. There will be some hints on how to complete the tasks, and pointers on where more information can be found, but it requires a lot of work on your own.
If I'm totally new to Linux kernel development, will this teach me how to contribute?
Yes, a number of the tasks involve getting patches accepted into the Linux kernel tree itself. By the end of the challenge, you will have the skills and understand how to contribute to the kernel.
Is there a winner? What do I get for completing it?
There is no "winner", as this is not a timed set of tasks starting all at once. A number of people have already completed the current set of tasks, and new people are signing up to take it every day.
It is rumored that the Linux Foundation might be providing a "prize" for everyone who completes the challenge. You will just have to complete it to find out for yourself as to what that prize is.
Does completing the challenge mean I'm qualified to be a kernel maintainer?
You will be qualified to point out any problems with kernel development issues that your favorite maintainer is causing. That's usually way more fun than actually being a kernel subsystem maintainer.
Will this look good on my resume? Will it help me get a job?
It can't hurt to have on your resume, but I doubt anyone will know what it is. As for getting a job, there are so many Linux kernel developer jobs out there, if you complete all of the tasks, there is no reason why you shouldn't be able to easily find a position doing this full time.
Why do you think you've seen such a strong response to your challenge already? We hear you've had 2,000 people participate already.
There has been a huge response to the challenge, much larger than I ever imagined. There are currently just over 2,400 people taking the challenge, with more signing up every day.
A lot of times, people just don't know what they want to do when it comes to programming in the kernel. This set of tasks forces them to poke around in a huge number of different places through the kernel source tree. Without a specific task, most people don't think to look into how these areas of the kernel works.
We also heard that a university programming group set up a hack fest where their members all worked on the challenge over a weekend, how did that go?
The challenge is meant to run on an individual basis, so the university group had to work on the individual tasks on their own. They had a group of about 10 people, working all in the same location. None of the developers were able to finish all of the tasks in one weekend, but it sounds like they had an enjoyable time trying to do so.