How to train college students to contribute to the Linux kernel

Training college students to contribute to the Linux kernel

open source courses at universities
Image by : 

opensource.com

Following my recent post on the initiatives now in place to rebalance the demographics of the Linux Kernel community, I would like to share a set of specific training activities to get beginners, specifically college students, involved in the kernel.

These were created by an enthusiastic group at Red Hat, including Matthew Whitehead and Priti Kumar, and unfolded on campus at Rensselaer Polytechnic InstituteRensselaer Center for Open Source (RCOS), and State University of New York at Albany.

The purpose of developing these activities was to demystify the process of contributing to the Linux kernel. We focused on the processes of:

  • getting the source code
  • creating a Git branch
  • preparing a patch
  • submitting it to the proper maintainer

The main idea here is that: it is easy to participate in the Kernel community. The key is to start with easy patches.

 We purposefully focused on very simple (almost trivial) patches, so that the students could dedicate all their attention to getting familiar with the community process. The material we used for these training sessions: Linux Kernel Training Session - Part I (created using Reveal.js, see a tutorial heresource slides on GitHub).

This material covers:

Note: We found this book useful when preparing the materials for the activites: Linux Kernel in a Nutshell by Greg Kroah-Hartman. The full PDF is available for free download. Also, the sources are in Git.

Again, the patches used in this exercise are very easy.

They involve, replacing the statement:

printk(...)

with

printk(KERN_DEBUG....)

linux training

We were then able to focus on the process of submitting the patches without being concerned for the software architecture of the Kernel itself. There are thousands of these easy patches, waiting for volunteers to work on them. As Linus Torvalds puts it:

...the trivial patches are among the most important ones—exactly because they are the "entry" patches for every new developer.

We did the exercise with the students using an Ubuntu 13 VM in Amazon EC2 (under an academic grant that Amazon kindly provided to SUNY Albany). The setup in the VM was a very basic one; we installed several development packages.

With these materials we ran three training sessions:

  • at Rensselaer Polytechnic Institute durin gthe Open Source course with a group of 16 students (consisting of a mixture of Computer Science and Electrical Engineering majors)
  • at the State University of New York at Albany with a group of 33 students from the Information Science program (consisting of a mixture of undergrads and graduate students)
  • at the Rensselaer Center for Open Source (RCOS), with a mixture of Computer Science and Electrical Engineering majors

These three sessions occured within the span of two days, so we benefited from the opportunity of making changes based on what we learned from the previous sessions. The final step is to refine these training materials and even develop new ones so that other Kernel enthusiasts can use them as training activities for their class, event, or meetup. The goal is that they are accessible as well as fun.

linux training

All of the students who completed the activities received a "Linux Kernel Padawan" badge, designed using the Mozilla Open Badges platform. They can be displayed on their Mozilla Backpack page, on sites like LinkedIn, and in their resume.

We are planning on repeating these training sessions in the Spring with the operating systems class at SUNY albany, and as a hackathon during the 4th Open Source Festival at SUNY Albany.

If you are interested in helping us improve these training materials, please post issues, make pull-requests, or write to the wiki pages of the GitHub repository. If you would like to run or host a training session and would like to coordinate, please email me here.

About the author

Luis Ibanez - Luis Ibáñez works as Senior Software Engineer at Google Inc in New York city.