Training college students to contribute to the Linux kernel

No readers like this yet.
Imdergrads and open source contributors without writing any code

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.

User profile image.
Luis Ibáñez works as Senior Software Engineer at Google Inc in Chicago.

2 Comments

This was a really interesting session, I am hoping to find something I can contribute to the kernel soon. I would love to see more of these sessions, and think about how we might do similar things for some of the other open source communities I am involved in. It is really important to think of new ways to engage with students, and maybe even integrate sessions like these into courses where students can really get their hands dirty while getting credit for doing so.

Luis,

Thanks for sharing this. Indeed I can't help but compare these tangible, examples to some of the often over-hyped trends promoted in higher education.
<ul>
<li><b>Peer-to-peer learning (connectivist, constructionist) pedagogy:</b> Not only do these courses foster peer interactions within the course, but also out into the broader community of practice supporting the open source project as well. Students learn both the mechanicals of creating/contributing code, ad also participation and collaboration skills for working within a community of practice. As open source tools and development continue to grow across the technology industry (as well as other sectors), these skills will be (are) tremendously valuable.</li>
<li><b>Online learning:</b> While many most often think of a "learning management system" as the platform for online education, the use of real-world tools like GitHub, bug reporting/issue tracking systems, discussion forums, and even email lists, provide an infrastructure very much like what students will find in their careers (arguably even if they end up outside IT).</li>
<li><b>Hybrid courses:</b> Many courses are adopting a hybrid approach where teaching and learning occurs outside the course. I can't think of a better example of this than the interactions students must be having with those outside the course within the Linux Kernel community who offer feedback, suggestions, etc. on their work and working habits.</li>
<li><b>The flipped classroom:</b> This model, where students "watch the lecture" outside the class and work on "homework" during the class, allows the faculty and other students to work together--referencing foundational knowledge acquired during the lectures--to understand the application of that knowledge through personalized and "just-in-time" teaching. Again, these courses sound like they provide just that experience.</li>
<li><b>Problem based learning:</b> Well I hardly thing an explanation is required for this one. It sounds like the course is providing actual problems and asking the students to investigate and solve these.
</ul>
Too often the above practices are promoted as "disruptions" with little authenticity in approach or discipline in practice. What you've described highlights the possibilities when institutions and faculty choose to invest in such models. The reality is, we need more creativity, motivation and authority for faculty to develop programs like these, not simply presentations at edTech conferences by rock stars.

Thanks again for sharing this,
Patrick

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.