A new blog appears!

Hi! I’m Kristina. I’m a 23-year-old computer science student from Estonia. I was recently accepted into the Outreach Program for Women (OPW) as a Linux kernel intern. I’ve never had a blog before, but since blogging is part of OPW, I’m starting this one here. Initially I’ll probably talk about my work for OPW, but in time I may branch out to other subjects, e.g. projects I’m working on in my spare time.

I guess I should say a few words about myself. I’m from Estonia, and currently live here in the city of Tartu (but will move back to Tallinn next month). I’m studying computer science at an undergraduate level at the University of Tartu, and will graduate next month. I’ve also worked as a software developer, and once organized a TEDx event (TEDxTartu). When I manage to find time off from school, I like to read (fantasy, non-fiction), play board and video games, watch movies, and I also love to travel.

I want to go to graduate school at one point, but not before I have a clearer picture of what I’d like to do research in. The past couple of years I’ve worked with some research groups at the university (mostly in the fields of computational neuroscience and bioinformatics) but wasn’t really excited about the work. Lately I’ve instead been curious about computer hardware, electronics, and low-level software development. I’ve started reading some books on the subjects and have found them really interesting.

Which is also where OPW comes in! A couple of years ago I read about Google Summer of Code and thought it would be very cool to participate. I haven’t contributed to any open source projects though, mostly because of lack of time. As I was looking through the list of participating projects, I immediately noticed some related to hardware. One of them was the Linux kernel (which is the part of the Linux operating system that deals with hardware). I’ve used Linux for over three years, so I like the idea of working on something that I’m familiar with. The kernel manages a lot of different kinds of hardware, so I think the opportunity to learn about them while also giving back to the community is just perfect.

My project is about cleaning up one or more device drivers in the kernel’s staging directory. (A driver is just code that controls a hardware device.) The staging directory contains drivers that have been included in the kernel, but haven’t been brought up to the kernel’s usual quality level. This could mean, for example, that they have actual bugs, or duplicate some code already present in the kernel, or are missing some essential features. Or maybe they just need more testing, or their coding style doesn’t match the rest of the kernel’s. My goal will be to improve a driver (or several) so that it can be moved out of staging and into the kernel proper.

This week was the first week of my internship. I wasn’t sure which driver to work on, so my mentor (Greg Kroah-Hartman) suggested I go over all the drivers in staging to find which ones interest me the most. So far I’ve only gone over about a third of them, since I wasn’t able to work as much as I should have this week (mostly because of some final university stuff I had to do). Hopefully I’ll make up for it in the coming weeks. Plus I think I was being way too thorough at first. Anyway, as I go I’m also looking at the git history to see which drivers aren’t being worked on by anyone, and should therefore be removed from the kernel. The rule is that if someone puts a driver in staging then they (or somebody else) should also work to get it cleaned up. If nobody works on a driver for more than a year (or so) then it gets kicked out.

Well, that’s all I have to say for now. Good, means I can get back to work :) I feel like I’ve already learned a lot this week, it’s amazing the kinds of devices that exist out there, and can be controlled by just a little driver (and some medium). I hope it continues to be this interesting (and fun) throughout the internship.