Linux Kernel Internships (OPW) Update

A month ago, Amanda McPherson and Greg Kroah-Hartman from the Linux Foundation asked me to coordinate an internship program aimed at getting more women to participate in the Linux kernel. In order to be considered for an internship, the applicants need to submit patches to the Linux kernel, and get them accepted.

The results have been amazing:

  • 41 women applied for 6 Linux kernel internships.
  • In 13 days, 374 patches were submitted, and 137 patches were accepted.
  • Diff stat for accepted patches:
    105 files changed, 3889 insertions(+), 4872 deletions(-)

Even though patches submitted after May 17th don’t count towards the women’s internship application, some of the women have continued sending patches. Eleven additional patches have been merged into the staging tree, bringing the running total of accepted patches to 148.

I’m really, really proud of the applicants, and very pleased to announce that Intel’s Open Source Technology Center (OTC) was involved in funding three of the internship positions. The Linux Foundation found sponsorship funds for three more positions.

We have seven different Linux kernel developers that will be OPW mentors. From Intel, we have myself (Sarah Sharp), PJ Waskiewicz, Carolyn Wyborny, and Anjali Singhai. Oracle employee Konrad Wilk is also a mentor, along with Stefano Stabellini from Citrix. Our final mentor is Greg Kroah-Hartman, a Linux Foundation fellow.

OPW logo

What is the FOSS Outreach Program for Women?

For the last three years, the GNOME Foundation has worked to improve the number of women involved in open source, by offering internships through the FOSS Outreach Program for Women (OPW). Women and genderqueer or genderfluid interns receive $5,000 for working for three months on one of 16 different open source projects.

The Results

In order to be considered for an internship, OPW applicants must make a contribution to the project.

As coordinator for the Linux kernel OPW project, I was really worried about whether applicants would be able to get patches into the kernel. Everyone knows that kernel maintainers are the pickiest bastards^Wperfectionists about coding style, getting the proper Signed-off-by, sending plain text email, etc. I thought a couple applicants would be able to complete maybe one or two patches, tops. Boy was I wrong!

Over 13 days, applicants submitted 374 cleanup patches for staging drivers (including patch revisions). Greg Kroah-Hartman ended up accepting 133 patches into the staging tree by the end of the application process. Konrad accepted another four patches into the Xen tree, for a total of 137 accepted patches.

Yes, that’s one hundred thirty-seven properly formatted, Signed-off-by patches, that were accepted into the mainline kernel. By day five, we had applicants submitting proper patchsets with one logical change per patch.

You can peruse the patches (minus four Xen patches), that I’ve conveniently cherry-picked on top of 3.10-rc2, to see the full diff stat:

https://git.kernel.org/cgit/linux/kernel/git/sarah/xhci.git/log/?h=opw-kernel

How did this happen? I personally think it’s a combination of really strong applicants, a very detailed tutorial, and very patient, encouraging mentors.

Creative Commons photo from flickr user nicmcphee

Improving Documentation

Over the last three weeks, I’ve been writing and improving a first patch tutorial that takes someone from a fresh Ubuntu 12.04 install to having a working Linux kernel development environment. One of our mentors, Carolyn, commented to me, “Getting the kernel development environment set up is like going through child birth. It’s so painful you end up blocking out memories of the pain.”

Writing and testing the tutorial on a fresh install took me about a week, so I got to experience that pain all over again. The good news is that our interns found it really helpful, and I think others looking to get into kernel development will be able to use it to avoid the pain of common mistakes.

By the time someone finishes the tutorial, they’ll have a git checkout of the kernel, with a git pre-commit hook that runs their patches through checkpatch.pl, and know how to email a proper patch. They’ll also know how to use make menuconfig to enable a module, compile said module, and load their module. If they also read the linked PatchPhilosophy page, they’ll understand what kernel developers are looking for in a good patch.

Creative Commons photo from flickr user rcsj

Creating a Safe Place to Learn

A requirement for OPW projects was to have a mailing list and IRC channel for interns to ask questions on. We created a separate Google group for the interns, since there was no way I was going to have them ask questions on LKML. Unlike other open source projects, there is no public kernel developers’ IRC channel. I briefly considered using the kernelnewbies channel, but decided it was best to create a separate channel.

The IRC channel turned into a really awesome collaboration tool. Several of the applicants chatted up a storm in it, and it was really fun to watch them get to know each other and share excitement and frustrations. A lot of the mentors were on the IRC channel at all hours, attempting to field questions. I even attempted to debug an applicant’s git tree at 6am on a Saturday, from an IRC client on my Android phone (and quickly learned I needed both caffeine and a real keyboard).

The important thing was that no question was “too silly” to ask, and no mentor ever told applicants to “RTFM”. I tried to encourage applicants and celebrate their successes, while giving politely worded constructive criticism where needed.

It was really awesome to see the applicants pick up on the helpful atmosphere, and start to help and encourage each other. Applicants who had been running Linux for years helped other applicants troubleshoot Linux environment issues, and called on mentors to help when they got stuck. After we coached several applicants through some git basics, those applicants went on to share that knowledge with other applicants that were struggling with git.

Mentors also learned from each other. I personally learned some git tips from both Greg and Konrad that I’m going to use from now on. Even watching how Greg dealt with the massive amount of patches was useful to me as a kernel maintainer.

Creative Commons photo from flickr user Ray_from_LA

Giving Women a Chance

One of the most common things I hear from open source developers is that they will mentor “the right person” but they “don’t want to be stuck with someone who is a time sink.”

The awesome thing about OPW is the contribution process allows mentors a chance to see whether an applicant is more than just a good looking resume. The patch submission process tests applicants to see whether they can follow directions, debug their systems, write kernel code, and correctly follow up on feedback to their patches. It also allows mentors to see who’s a procrastinator and submits patches at the very last minute. In the end, if there’s no candidate that’s a good fit, the open source project doesn’t have to take anyone.

Accepted Kernel Interns

Of the 41 applicants, 18 of them submitted at least one patch, and 11 applicants had patches accepted into Greg’s staging tree, Konrad’s Xen tree, or Intel’s netdev tree. We only have 6 kernel internship slots to fill, so it’s going to be a very difficult selection process.

Applicants will be notified by May 27th if they have been accepted. I hope that applicants who aren’t selected will apply for the next OPW round in December.

Creative Commons photo from flickr user kwerfeldein

Want to Help Out?

We’re looking to expand the Linux kernel internships for the next OPW round to include more kernel projects. For the next round, organizations will announce their projects in November 2013, and interns will work from January to April 2014.

If you have a project that needs small bug fixes or small to medium entry-level features, and you have a patient mentor that is willing to work with a full-time intern, please consider adding your kernel project to OPW. I will be coordinating the Linux kernel internship program next round, so it should be easy for your kernel project to get into OPW with minimal administrative overhead.

If you’re a company that employs Linux kernel developers, please consider donating money to sponsor OPW intern(s). If you’re interested in donating, please talk to Amanda McPherson at the Linux Foundation and Karen Sandler from OPW.  A big thank you goes out to the Linux Foundation for finding sponsorship funds for three interns, and Intel’s Open Source Technology Center for sponsoring three more interns.

We’ve been complaining about not having enough women in the Linux kernel for years, and it’s time we actually start doing something constructive to bring more women into the kernel community. Please consider donating either mentorship time or money to improving diversity in the kernel. If you’re willing to help out, please drop me an email: Sarah Sharp <sarah.a.sharp@intel.com>

Let’s do it!

I’m really excited to start working with my (yet-to-be-notified) OPW intern on the USB 3.0 driver. I’m also very enthusiastic about the direction the program is going. We have some awesome mentors, and some really talented applicants.

The selected OPW interns will be working from June 17 to September 23. A requirement for Linux kernel interns is that they speak at a Linux Foundation event, so you will be seeing our interns at either Linux Con North America in September or Linux Con Europe in October. Please make sure to introduce yourself when you see them.

I’m hopeful that we can use the OPW program as a pipeline to get more women to participate in the Linux kernel, and get them hired into full-time jobs.  Please consider helping out with OPW.

8 thoughts on “Linux Kernel Internships (OPW) Update

  1. I think this would be interesting and informative to know, if it can be divulged publicly: What were the typical reasons for the other patches to be rejected? Not to shame the individual contributors, but rather, it might provide good lessons on how other kernel newbies can improve their output quickly.

    1. Jason: Good idea! I’ll compile common mistakes, and make a separate blog post.

  2. Why is this not standard in every OS course? It seems to me that publicly funded universities should be teaching their students to be good digital citizens. Thank you for creating a vehicle where more people can learn how to contribute. I will be working through your tutorial. BTW my university could fund the whole project if it eliminated 10% of its Windows installs.

    1. I feel like the material covered in the tutorial is more suitable for an advanced OS class. Let learn students about the basics of race conditions, interrupt handlers, etc, and then move them onto kernel development in a separate class.

      The good news is that my local university, Portland State University, has added an upper division Computer Engineering course called “Embedded Operating Systems and Device Drivers” that teaches Linux kernel internals. It’s actually co-taught by Linux developers from Intel, and it’s a pretty awesome class to take if you’re interested in getting a job as a kernel hacker.

  3. Wow, that’s quite a success! Sounds like a really well-run program with a lot of detailed instruction, tutorials, and mentoring. Are there plans to expand the program in the future? I would think it would be easy to find more corporate sponsors.

Comments are closed.