June 11, 2012

30 Linux Kernel Developers in 30 Weeks: Linus Torvalds

Welcome to 30 Linux Kernel Developers in 30 Weeks! This is the first in a 30-week series we're running that profiles a different Linux kernel developer each week. The Linux kernel development community is unique in many ways. The individuals that make up this community are responsible for orchestrating the world's largest collaborative development project and have a very large impact on the future of the operating system and other technologies. The profiles we publish throughout the rest of 2012 should help illustrate how these developers do their work, providing important insight on how to work with them and what makes them tick.

We start the series with none other than Linux creator Linus Torvalds. This week Linus is in his home country of Finland to attend the Millennium Technology Prize ceremony. This week he was named a joint winner of the 2012 Millenium Technology Prize. Just before he left, he took the time to answer these profile questions.

What's your name?

Linus Torvalds

What role do you play in the community and/or what subsystem(s) do you work on?

I'm the kernel top-level maintainer and don't tend to do any particular subsystems directly; although, I occasionally get directly involved with the VFS layer (and very occasionally some VM discussions).

Where do you get your paycheck?

The Linux Foundation.

What part of the world do you live in? Why there?

Portland, Oregon. As to "why?" it's mostly because it's a lot calmer and more livable than Silicon Valley, where we lived for several years before moving here. The weather may not be that great, but it's a much better area for the kids to grow up in, I suspect. And we can afford a bigger house in a good school district.

What are your favorite productivity tools for software development? What do you run on your desktop?

I really just run a web browser (for email and time wasting), and then several terminals that I use git in. With the occasional "gitk" window to show the git history view. Most of my time goes to reading (and answering) email, and merging trees and looking at the results.

The other tool I tend to use is the "perf" tool to do performance profiling for the loads I care about (which is mainly kernel compiles and some git workloads).

How did you get involved in Linux kernel development?

Heh. Not enough common sense and knowledge to know that writing your own OS was a ridiculous amount of work.

What keeps you interested in it?

I still like the tinkering, and just the technical side of it. The fact that it's actually pretty social, and I get to call people names, is just a bonus.

What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?

I think my favorite part is when somebody does something utterly crazy using Linux. Things that just make no sense at all, but are impressive from a technical angle (and even more impressive from a "they spent many months doing *that*?" angle).

Like when Alan Cox was working on porting Linux to the 8086. Or the guy who built his own computer using an 8-bit microcontroller that he wired up to some RAM and an SD card, then wrote an ARM emulator for it, and booted Linux (really really slowly) on his board.

What's your advice for developers who want to get involved?

Start small. It doesn't even have to be Linux - there's a lot of open source projects that need help, and you want to learn how to get involved. And once you *do* realize that user-mode programmers are wusses, and you want to get involved with kernel programming, don't try to revolutionize some core kernel code - try to find some really small nagging concern, and fix that one thing. Maybe a driver for hardware that you have access to that doesn't work as well as it should, things like that.

It takes a while to learn the ropes, and it really helps if people can see that you've done other things before you start sending more involved patches.

But the most important thing is "have good taste." It's hard to describe, but it's something I personally look for. People who do things the "RightWay(tm)" - and I'm not meaning that you should follow
all the rules we have come up with over the years (although you should do that, too) - but I'm talking about that elusive quality of writing code that makes obvious sense and does the right thing without lots of special cases or complexity, but also without being unnecessarily abstract and general-purpose. "Do one thing, and do it well."

What do you listen to when you code?

Oh, I want my office to be totally silent. I listen to music when I'm driving the kids around, etc., but when I'm working, I don't want to hear anything. Not music, not any noise from the fans in my computers. Just stillness.

What mailing list or IRC channel will people find you hanging out at? What conference(s)?

I don't do IRC or any other real-time interactive stuff - I do everything by email. I follow the general kernel and git mailing lists, but even those I have in "auto-archival" mode, so that I only see the threads if I explicitly look for them or if I'm cc'd or pointed at them.

As to conferences, it's usually just the Linux Kernel Summit. I try to get to LinuxConf Australia most years too - I like it as a conference and it's in Australia during their summer. But LCA is a "when it works out" kind of thing, so it's probably only every other year or so.

There's been a few other conferences I go to, usually because they're in an interesting area and if I can get some scuba diving done during the same trip

Thank you, Linus! Next week we talk to Thomas Gleixner.