Outreachy intern in Linux Kernel


Outreachy provides three month internship for people from groups traditionally underrepresented in tech. Interns are paid a stipend of $5,500 and have a $500 travel stipend available to them. Interns work remotely with mentors from Free and Open Source Software (FOSS) communities on projects ranging from programming, user experience, documentation, illustration and graphical design, to data science. Interns often find employment after their internship with Outreachy sponsors or in jobs that use the FOSS skills they learned during their internship.

How I got to know about outreachy?

It was in summer 2017, that I got to know about outreachy for the first time from seniors who have previously appiled for outreachy.After googling and reading the blogs from previous participants, I got intrigued to check out the participating organisations.

Choosing organization..

Organisations for round 15 were not out at that time but list of organisations which participated in previous rounds can give a good idea about the participating organisations.I decided to look at the previous projects and works of interns from different organisations.

As a linux lover, the projects which interested me the most were from linux-kernel but wait I don't know anyone who have previously contributed in linux-kernel and how am I supposed to start ?There are no good-first-bugs issues that I can solve (like in other open-source projects) and code-base is huge.Where to start and how to start..?

Starting contribution to Linux-kernel

But it is not that difficult. I started following kernelnewbies to create my first patch before the application period started and submitted it. Finally, it got a review and got rejected. I sent some more patches but they didn't get reviewed (as I used my name 'harsha' to sign-off the patches and not my complete name 'Harsha Sharma' :D). Your patch has to be perfect to get a review and get applied.

Appication period started

So, finally the wait was over and application period started. I started working and with help of outreachy Linux-kernel coordinator Julia Lawall, I got a good no. of checkpatch and coccinelle pathes applied. XD

I started looking into various projects proposed for round 15, and started working on dri-devel (aka kernel GPU subsystem) and nftables (Network filtration tool).

Choosing Project

You don't wanna do a project just for the sake of getting selected as intern but you'll doing this project for 3 months full time, so finding the project of your interest is important. You can submit proposal for more than one project but priority is still important.

I started working on task of "Better manual Upload support for atomic" in Kernel GPU-subsystem meanwhile going through project nftables. After working on it a bit and discussing with mentor, I got to know that this task was better suited for whole internship period so I started on some small tasks in same project as suggested by mentor.Meanwhile, I worked on adding support for matching reserved type 0 headers field and addrs and adding tests and some other bug-fixes.

Submitting Proposal

After working on both the projects, I decided to submit my proposal for project nftables after discussing timeline with my mentor Pablo Neira Ayuso.

Result day

Keeping the fingers crossed and waiting for the results, I was not disappointed and finally selected as outreachy intern for round 15 in linux-kernel and project nftables. The journey wasn't easy but was worth it and damn exciting.

Two weeks as outreachy intern

The journey has not ended but just started and I'm really looking forward to learn a lot from this great opportunity.
Right now, I'm working on following tasks.

  1. Adding option for nft to define variables from command line which can be referenced from input files.
  2. Allocate handle in tables to uniquely identify a table, parsing the new handle attribute with libnftnl and extend nft to print this handle with option "-a".
  3. Fixing bugs from bugzilla

Feel free to ping me for any questions about outreachy program, application process, Linux-kernel, nftables, etc. XD

Harsha Sharma

A junior year student pursuing Bachelor in Technology in Engineering Physics in Indian Institute of Technology

Roorkee, Uttarakhand