This week's 30 Linux Kernel Developers in 30 Weeks profile is with John Stultz. Based in in Portlandia, John works for IBM and is on assignment with Linaro. His love affair with Linux began in 1997, and he's never looked back.
What role do you play in the community and/or what subsystem(s) do you work on?
My work on the timekeeping subsystem has been the continuous thread through my time with the community, but I've also worked on Linux hardware enablement for large NUMA systems, as well as worked on improving the robustness of the CONFIG_PREEMPT_RT patchset." patchset. Most recently I've been focusing on helping to upstream the Android patchset, which has required me to dig in a lot of areas in the kernel I previously haven't looked.
Where do you get your paycheck?
I work for IBM's LTC, currently on assignment with Linaro.
What part of the world do you live in? Why there?
I live in Portland, Oregon, and I really enjoy the walkable/bikable neighborhoods, great food and relaxed vibe. The creative scene is really great too, and while the tech scene is somewhat limited, there's a good community of tech folks who have regular social events (see: calagator.org).
What are your favorite productivity tools for software development? What do you run on your desktop?
ssh, sshfs, git, kvm. Its not a very exciting list. I try to keep most of my development on a big build system in a lab, and then access that machine from different thin-client style systems (mostly a kvm virtual machine desktop environment, and a netbook, so not places you can do any heavy computation). I still like to use gui style editors (I used to love nedit, but modern distros support for it is poor), so I sshfs mount my development machine and that allows for quick local editing and remote building cycles, testing with kvm. Oh, and Dave Jone's trinity test tool has been really useful in finding bugs.
Desktop-wise, I try to sort of go with the flow, since I have a few machines, and I don't want to bother keeping settings or environments synced. The less configuration required, the better. So its usually whatever the distro default decides. Currently: Ubuntu 12.04 w/ Unity. I can't say I love it, but I get by.
How did you get involved in Linux kernel development?
I started playing with Linux around 1997 at the beginning of college, and back then building your own kernel was a commonly recommended task for a new Linux user. I had switched over to Linux full time shortly there after, and as I took more systems courses, my interest in kernel level development grew. Following lkml.org and lwn.net made it obvious that the Linux community was the most interesting place to do kernel development. After graduation in 2001 I went looking for Linux kernel development jobs and started at IBM's Linux Technology Center, where I've been ever sense.
What keeps you interested in it?
I really like the collaborative nature of the development. Despite the occasional head-butting, folks are really helpful for the most part, and its great having access to very smart people from around the world. Even if a change or approach gets rejected and totally shut down, its all out there in the open and someone else might be able to learn from it and take a different stab at the problem and come up with something better. I also like that even if you change teams or projects, you can still participate, help-out and have wider influence then just what your immediately working on.
The kernel community process is definitely not easy and there are regular setbacks, but the constant iterative improvement and the strong resistance to quick hacks makes the end result worth it. Its a really great feeling when you do finally get something upstream, and know others will be using and building on that work for years.
What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?
I can't think of any one specific case but generally, I think the casual and fun attitude that shows that smart folks are really enjoying what they do is always great to see. Usually these are showcased in the lwn.net quotes of the week.
What's your advice for developers who want to get involved?
Find an area that is unloved and learn about it.
Overall, I think persistence and empathy are important. It takes work to understand someone else's perspective, especially if you disagree. Avoid letting your ego show. The flames aren't personal (even when they really sound like it), so if you're worked up by something, let it sit and reply the next day. Expect to throw away your work and try again, possibly many times.
What do you listen to when you code?
I really like to focus on music when I'm listening to it, so it can be more of a distraction when I'm working. But on occasion I'll listen to mellower stuff like Polica or Telefone Tel Aviv when I'm coding.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?