What is Outreachy?
According to a 2002 survey of open source communities, only 1.1% of participatants are women. Many outreach efforts have taken place since, and the more recent 2013 survey found that 11% of FLOSS contributors are women. The number is still much less than the number of women participating in proprietary software development (30-40%, according to various surveys).
In order to increase diversity in open source, the GNOME Foundation created the FOSS Outreach Program for Women (OPW). OPW has recently been renamed Outreachy, to reflect its more general focus, and has been taken over by the Software Freedom Conservancy. The program provides a three-month paid internship, where participants are paired with mentors from one of many different open source projects. The Linux kernel is one of those projects.
The GNOME Foundation coordinates the overall program and pays the interns. Karen Sandler, Marina Zhurakhinskaya and Sarah Sharp (former kernel coordinator) coordinate the overall Outreachy program. Each separate open source project has a coordinator that communicates with project applicants, interns, and mentors. Julia Lawall is the coordinator for the Linux Kernel.
What's the timeline?
Outreachy internships run twice yearly, from May to August and December to March. This allows the internships to happen during the northern and southern hemisphere summers, when college students are likely to have time off.
Who are these interns?
The Outreachy program is open to women (cis and trans), along with genderqueer, genderfluid, and genderfree individuals. For the May to August 2015 round, the Outreachy program is also open to alumni from the Ascend Project, which aims to teach open source programming to people from non-traditional backgrounds: low income, people of color, and/or LGBTQ. This means the program may have a mixture of both men and women.
Although we do get a lot of college students applying for Outreachy, we also get a lot of people from non-traditional backgrounds. Some people may have no college experience or only one or two courses. Others may have graduated with a degree, but may not have a job that utilizes their technology degree. Some people may want to switch careers, say from a Linux sysadmins to a Linux developer.
The only requirement for Outreachy is that these people meet the first paragraph requirements. For the Linux kernel, we also require them to have C programming experience. Some of them may have operating systems knowledge, and some may not. Many will learn git for the first time during the application process, and many more will use IRC for the first time. Most of the interns we select already have background using Linux, but haven't dived into developing on Linux.
What is required of mentors?
Preparing a project
Mentors provide projects for interns to work on during the three-month internship. Ideally, these start out as bite-sized bugs or small tasks that allow the interns to get familiar with your subsystem, and are followed by a larger feature. Tasks should not be critical-path, and ideally should be able to be completed within three months. Some interns will continue working on the project after the internship is done, but their time to work on it will be sporatic. Remember, interns will likely take 2-10 times longer than you think a project should take, so choose wisely. If you pick a project that doesn't have good documentation, you may have to spend extra time ramping up your intern.
The project can either be focused on the kernel (core, drivers, filesystems), or on tools that help kernel developers (sparse, coccienelle, kernelshark), or a combination of kernel and userspace interface work (KVM, Xen). Mentors will need to provide a list of small tasks for applicants to get used to their project. This could be a small bug fix, a stack diagram of functions used in a particular code path, or some small feature. Please make sure to withhold some simple tasks from that list, in order to ensure your selected intern has tasks to ramp up on. If you list those tasks on a separate website, please link that from your project description on the Outreachy intro page. You may also create a separate page for your small tasks and link that page. Applicants will coordinate who is working on what task through the tasks page. If a claimed task hasn't been completed in a week, it will be removed from the page, and will be up for grabs by any applicant.
Helping out during the application period
During the month-long Outreachy application period, potential interns will contact you directly to get more information about your project. In order to be accepted as an intern, applicants will have to complete the tutorial for creating their first kernel patch. The applicants will send their staging driver cleanup patches to a separate mailing list. Mentors are expected to help out with code review and answering questions on the IRC channel.
This stage of the Outreachy process is seriously like drinking from a firehose. During the Round 6 application process, applicants sent an average of 28 patches per day. All mentors need to participate in patch review in order to spread the work load. Some of the past Outreachy interns will also be helping out with patch review and answering questions on IRC.
The application period allows mentors to get a clear sense of whether applicants can follow directions and where applicants get stuck and need help. It's long enough that applicants who are self-starters will move on to using advanced tools like sparse, coccinelle and smatch. Basically, the application period allows mentors to learn which applicants have a clue.
Selection of interns
When the application period ends, the Outreachy mentors review intern applications and code contributions, and decide which interns to take. Applicants to the program are asked to rank Linux kernel projects in the order that most interests them. All mentors and the Linux kernel Outreachy coordinator (Julia Lawall) collaborate to match interns to the project that best suits their interests, skills, and background. If a mentor feels there are no applicants that are suited for their project, they don't have to accept an intern.
During the three-month internship period, mentors answer their intern's questions, provide guidance on the direction of the project, review code, and provide encouragement and support on the mailing lists. If an intern is working on a simple project with multiple parts, they may send 20-60 patches during the internship, which will require more patch review. If an intern is working on a complex project, they may send very few patches, but need a lot of extra guidance and one-on-one mentoring.
Mentors and interns typically meet for an hour a week, through a phone call or video conference. They may meet more frequently or longer as necessary. Mentors and interns may not work in the same timezone, so you may have to compromise on when to meet.
I still want to help out!
3. Email Julia with your kernelnewbies.org username, so she can add you to the editors group. Also tell Julia which email address you would like to have subscribed to the Outreachy mailing lists. You will be receiving patches at this email address, so you will need to be able to respond to emails in plain text, and possibly apply the patches. Any email address you would use for Linux kernel mailing lists is fine.
4. Create a user home page that interns will read to learn more about you. At the bare minimum, you need to provide your nick on the #opw and #kernelnewbies channel and your email address. Anything else is optional. Here's an example homepage.
5. Update the Outreachy introduction page with your project description, and (optionally) a picture for your project.