This is the third profile in our 30-week series that features a different Linux kernel developer each week. Last week we featured Thomas Gleixner, after beginning the series with Linus Torvalds. The profiles we publish throughout the rest of 2012 will help illustrate how these developers do their work, providing important insight on how to work with them and what makes them tick.
What role do you play in the community and/or what subsystem(s) do you work on?
I'm the Linux kernel xHCI driver maintainer. I own Linux USB 3.0 support, and I send my patches up to Greg Kroah-Hartman, who is the USB subsystem maintainer.
Where do you get your paycheck?
I work in Intel's Open Source Technology Center, along with a bunch of other cool Linux kernel developers.
What part of the world do you live in? Why there?
I live in Portland, Oregon. There's a reason why we say, "Keep Portland Weird". We have everything from Voodoo Donuts to mini-bike-riding "Zoo Bombers" to Powell's, which is America's largest book store. Portland is also really friendly to open source development. It's home to OSCON (Open Source Convention), and there's this great cross-pollination between Linux users and the bicycle community. The electronics maker community is pretty strong in Portland, too. Check out a Dorkbot meeting when you're in town, or hang out with cool techie women at Code N Splode.
What are your favorite productivity tools for software development? What do you run on your desktop?
Um, I'm pretty much a vim and mutt person. Software development is all text for me. As for what I run on my desktop, it's Linux, of course. :) I run either Debian or Ubuntu on my boxes, and try to do all my work in Linux.
How did you get involved in Linux kernel development?
My computer science professor, Bart Massey, was approached by Greg Kroah-Hartman, who was looking for a student to do a Linux USB project. Bart thought I would be a great fit, and was my faculty advisor for the "usbfs2" project. I worked on usbfs2 for Portland State University senior elective credits, and later as a paid project under the Intel Undergraduate Research Program.
It was pretty nerve-racking to send my first patchset out, but my then-boyfriend-now-husband encouraged me to actually hit send. The Linux USB community was a pretty good place to start doing kernel development, and the people on the mailing list were patient about answering my newbie questions.
A couple months before I graduated, I proposed a talk on my usbfs2 project for OSCON 2007. Kristen Accardi was on the OSCON selection committee, and remembered me from some Portland Linux gatherings I had been to. She knew that Intel's Open Source Technology Center was looking for a Linux USB developer, so she got me an interview with OTC. I've been working for OTC for the past five years now, continuing my work on the Linux USB subsystem.
I wouldn't be a Linux kernel developer today without the contacts I created by networking with other developers at conferences and tech events.
What keeps you interested in it?
The people keep me coming back. I really love learning and discussing new ideas with the Linux kernel community, and my Intel co-workers. Sure, there's some heated discussions every once in a while, but most developers are friendly enough to take the time and answer any questions I have.
What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?
I've certainly amused Greg KH in the past with my pull request descriptions. Here's an excerpt from a reply he sent me:
Date: Thu, 26 May 2011 00:04:50 -0700
From: Greg KH
To: Sarah Sharp
Subject: Re: [RFC 0/3] xhci: Remove useless debugging
On Wed, May 25, 2011 at 04:28:51PM -0700, Sarah Sharp wrote:
The xHCI driver is what, two years old now? It's high time it put on
its big girl pants and stop crapping out useless debugging information.
You now owe me a wet-wipe to clean my laptop up from the coffee I just
snorted out my nose all over it.
What's your advice for developers who want to get involved?
Find a medium-sized project, in a part of the Linux kernel community that has a responsive mailing list. Don't waste your time on a bunch of spelling fix patches. A couple bug fix patches should be enough to get you used to the patch submission process, but at some point you need to move on and start making useful, bigger, contributions to the kernel.
Find a mentor. It doesn't have to be someone who is a Linux subsystem maintainer. It should be someone who knows git basics, can review your
code, and help you set up a mail client so you can send patches. Team up with a friend to do joint code review and try to figure out a Linux kernel subsystem together.
What do you listen to when you code?
I can't concentrate on coding when I listen to vocals, so I tend to lean towards electronica, break beats, or classical movie sound tracks. I usually listen to Daft Punk, Justice, Hans Zimmer, and Klaus Badelt.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?