Today we celebrate the completion of our 30 Linux Kernel Developers in 30 Weeks series. We've talked to 30 of the world's best developers over the last eight months in an effort to learn more about how the world's largest collaborative development project works. We've also learned a lot of details about what makes these amazing people tick and what advice they have for people who want to get involved.
Today we talk to Paul McKenney, who says his kernel development addicition is funded by IBM. He explains why he uses Vi and how Alexey Kuznetsov prompted Paul's first experience with Linux - and not in the way you might think.
Enjoy the last post in this series and stay tuned: We have a new series in the works that we hope to debut in February. I also want to give a big thanks to everyone who participated in this series.
Paul E. McKenney, IRC nickname paulmck
What role do you play in the community and/or what subsystem(s) do you work on?
Read-copy update (RCU) is my baby; though, I do occasionally get out into other parts of the kernel and into a few user-mode projects, including userspace RCU and "Is Parallel Programming Hard, And, If So, What Can You Do About It?"
Where do you get your paycheck?
IBM Linux Technology Center funds my kernel development addiction.
What part of the world do you live in? Why there?
I live in Beaverton, Oregon, USA.
One reason is that both my wife and I grew up on Oregon. Another reason is that Beaverton was where Sequent Computer System was located -- and they were hiring back in 1990 when it came time to move back home from the Bay Area.
What are your favorite productivity tools for software development? What do you run on your desktop?
The usual productivity tools: git, cscope, vi, bash, awk, and the rare bout with python. Why vi? Well, the shared system I was using 30 years ago could support seven or eight concurrent vi sessions, but only one emacs session. In that environment, therefore, use of emacs was socially irresponsible.
I run Ubuntu with Unity2D at the moment.
How did you get involved in Linux kernel development?
The first time was in 1997, back when I was working on DYNIX. I got an email from someone with a .ru email address asking for a machine-readable copy of an old paper of mine. I sent along a postscript of the paper and asked what he was using it for. He replied that he was working on this kernel named "Linux." Although I had heard of Linux, it would be some years before I learned the significance of the name "Alexey Kuznetsov."
The second time was in 2000, when I joined the IBM Linux Technology Center.
What keeps you interested in it?
The constant challenge of keeping up with the what people are using the Linux kernel for. The need for SMP scalability, real-time response, small memory footprint, and energy efficiency (to say nothing of the reliability required to support millions of devices) has resulted in a long series of very interesting problems to solve.
What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?
I am often amazed when a single technical solution addresses problems that appear to have absolutely nothing to do with each other. The first time was CONFIG_NO_HZ being required by battery-powered devices on the one hand and by mainframes on the other: The smallest of the small and the biggest of the big. Later I was surprised by how the -rt patchset was so effective at finding SMP bugs. More recently, a patch I am working on for the HPC and real-time communities might well also turn out to be useful for energy efficiency.
What's your advice for developers who want to get involved?
Read all the great advice from the other 29 kernel developers. I cannot think of anything to say that they have not already said. :)
What do you listen to when you code?
I listen to contemporary music. If it is more than three or four centuries old, I have a hard time relating to it.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?
LKML and linux-rt-users for email lists, and #linux-rt on IRC. That said, I cannot say that I really keep up with any of them.