This week, the 20th week in our 30-week series profiling Linux kernel developers, we talk to H. Peter Anvin. His Linux story starts in 1992 and involves a hospital stay, stolen OS/2 manuals and a computer hardware order made by pay phone.
H. Peter Anvin. The "H" stands for "Hans," but that is not and has never been my primary name of address, nor was it ever intended to be.
What role do you play in the community and/or what subsystem(s) do you work on?
My main project nowadays is being co-maintainer of the x86 architecture with Ingo Molnar and Thomas Gleixner. I have done a lot of different things over the years, including creating kernel.org, the distribution site for the Linux Kernel; creating the Syslinux bootloader suite and klibc; writing the original version of autofs; maintaining the Netwide Assembler; and a number of other things. A lot of them I still do;others I have handed over along the way.
Where do you get your paycheck?
Intel Open Source Technology Center. A fun place to be with a bunch of fun people. Work is always nicer with smart people around.
What part of the world do you live in? Why there?
I live in San Jose, California. The weather is fantastic, and I like the Silicon Valley culture. It is a place where creativity and uniqueness are valued, and there is a can-do attitude that is really invigorating.
What are your favorite productivity tools for software development? What do you run on your desktop?
Git must be my favorite software development tool, hands down. The speed and flexibility allows one to do things that I would never have considered using a version-control tool for in the past.
I run KDE on my desktop. I keep getting talked into trying other things, but I usually switch back pretty quickly. I suspect I might actually enjoy Xfce if I were willing to spend the time to get used to it, but I don't really feel a strong reason to spend that time at the moment.
How did you get involved in Linux kernel development?
In 1992, when I was an undergraduate, I had gotten exposed to Unix at the university and really liked it. I had seen Microsoft Windows and found it horrible beyond belief. I was using my dad's old 286 at the time but had been saving money for a better computer for quite a while. I was starting to get close, and so had begun to wonder what operating system I should be running on it and had started to follow the article series in Dr. Dobbs Journal called "Porting BSD to the 386," which described the then unfinished 386BSD project.
Back in those days, Usenet was small enough that when you logged in, your newsreader would ask you if you wanted to subscribe to every newly created group. So when a group called "alt.os.linux" suddenly appeared I joined and got connected to the Linux project. Shortly thereafter, I was in an accident and spent a few weeks in the hospital. My father decided to cheer me up by topping off my computer fund, so I ended up ordering an amazingly decked-out 486 (8 megs of RAM, 500 megs of hard disk!) from a hospital payphone. When I got it, I started experimenting with Linux, but I also tried to learn OS/2. The OS/2 manuals I had ordered ended up getting stolen(!), so I ended up spending my time on the Linux side instead, which obviously turned out to be a good thing. So, whomever stole my OS/2 manuals, kudos to you. I hope you spent a lot of time becoming a highly skilled OS/2 developer.
Linux was far from the first "cheap Unix clone" in those days. However, at least to my eyes at the time, the two big differences between "real Unixen" and "cheap knock-offs" were X11 for graphics and TCP/IP for networking. When I started messing with it, Linux had neither. But six months later, in the autumn of 1992, it had both. That was when I really knew that Linux had come to stay.
What keeps you interested in it?
For one thing, the challenges never end. My laptop computer today is at least 10,000 times more powerful than that "monster" 486 of 20 years ago, and Linux today is used in computers that are a thousand times more powerful than that, many millions of times if you count clusters. At the same time, my cell phone today, which is still orders of magnitude faster than that old 486, runs Linux as well.
Linux has crept into almost every nook and cranny of modern society because of its versatility, and I am firmly convinced that versatility is a direct result of its open source nature.
What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?
For plain amusement value, nothing beats the stuff that gets posted on or around April 1. I particularly like the April Fools pranks which actually work but are just totally pointless. For example, RFC 2324, Hypertext Coffee Pot Control Protocol. It is a part of hacker culture that I find really charming.
For flame wars, we used to have a contributor on the Linux Kernel Mailing List who would write long posts with very detailed explanations of various aspects of computer arcana, mostly targeted at newbies. This would have been absolutely fantastic, except for the slight problem that his explanations were just plain incorrect. The senior developers could just ignore him, but newbies would get horribly misled, which isn't fair to them. At one point, in exasperation, several people including Matt Mackall (of Mercurial fame) and I started commenting to his nonsense with posts starting with "Dear Wrongbot" and the title stuck. He stopped posting shortly thereafter.
As for amazing accomplishment... I think the early development of git stands out there. Going from literally nothing to something usable in about two weeks was an amazing accomplishment and because of the very powerful but straightforward object model, it was very easy to get other developers to jump on the bandwagon and flesh out the functionality. Admittedly, it is somewhat of a rare situation to have that many senior developers that highly motivated; but hey, it is the rare situations that stand out.
What's your advice for developers who want to get involved?
Start small. Do something that interests you. But if you have the option, pick your first project as something that isn't all that important to too many people; it makes the stakes too high, and there is a risk that your first experience will be quite a trial by fire. It is better to get used to the process first and then worry about the bigger bits.
If you can, find a mentor.
Expect some curt replies, especially in Linux kernel circles. Don't take them personally. I have personally had Linus Torvalds call things I have written "stupid" and "idiotic" on a number of occasions -- and most of the time he's quite correct -- but as far as I know he hasn't ever called *me* stupid or an idiot. There is a huge difference there: even very smart people will regularly do things that probably seemed to make sense at the time but for whatever reason didn't turn out too well.
What do you listen to when you code?
Most of the time nothing, but every now and then I get into a piece of music and usually play it over and over. "Hotel California" by The Eagles is a particular favorite for some reason.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?
More than I can count. I don't read all of LKML -- few if any people do -- but I certainly skim it regularly. I actually hang out in about 40-50 different IRC channels, but one of the easiest to find me at is probably #syslinux on FreeNode.