In this week's 30 Linux Kernel Developers in 30 Weeks profile, we talk to Alan Cox. We learn how he originally got involved in Linux and why it remains important to him. He also gives us a bit of music education.
ermm pass... are all the questions this hard?
What role do you play in the community and/or what subsystem(s) do you work on?
I've worked across a fairly large chunk of the kernel at different times. At the moment I'm trying to finish reworking the terminal layer, locking and fixing the remaining races and bugs in this area. It's basically a nasty, horrible technical problem that isn't exciting and not many other people care about.
Other than that I'm currently trying to get stable 2D graphics support for the various Imagination-based, graphics-based devices shipped by Intel, and on a one man mission to clean up the kernel bugzilla.
Where do you get your paycheck?
What part of the world do you live in? Why there?
Swansea, South Wales. I first ended up in Wales when I went to university. I met my wife here and we've stayed ever since. I find it a much more relaxed and friendly part of the world than the big cities. It's nice to be able to look out of the window and see the hills and the sea.
We've also got a better rugby team here than in England :)
What are your favorite productivity tools for software development? What do you run on your desktop?
Brain, experience and sometimes pot luck. My technical tool setup is pretty traditional but with a better taste in editors. So it's bash shell, joe editor, gcc, make, git.
Most boxes run Fedora, but my desktop varies by system and setup and also at random when I feel like shuffling things around and changing or trying stuff. Right now I'm playing with some of the GNOME 3 stuff in part because Fedora 17 is showing up bugs in my graphics driver. My other usual choice is Xfce.
For inclusivity the Ubuntu VM I used for building Android bits is still running Unity, which seems to be a poor remake of Windowmaker without the style.
I am running a few other little experiments on distro choice as I'm finding Fedora (while technically very good and with a lot of leading edge stuff well integrated) to be getting increasingly buggy.
How did you get involved in Linux kernel development?
Mostly by accident. I'd been adding Unix facilities including email and userids to my Amiga but really needed a better system for running the AberMUD multi-user game. Windows back then was a complete joke for such uses. 386BSD needed an FPU and a lot of messing around, Linux just worked.
Having discovered Linux "just worked" I soon discovered it didn't quite work and ended up working on various fixes, then the networking stack. In time I ended up maintaining that and then the stable releases. Somewhere along the line I worked with Thomas Radke to produce the Linux SMP support (Thomas unfortunately always seems to get forgotten) and had a couple of forays into less sane projects - Linux Mac68K and a mini Linux on 8086.
What keeps you interested in it?
In part the fact it is always changing. Hardware changes, software changes, needs change. So you are always facing new challenges.
The other aspect of it is the changing the world part. Directly, it's put computers into places that could never afford proprietary licensing. Indirectly, it forms part of the first wave of the whole reclamation of culture and production by the people. This is something the maker culture is now extending into the physical world.
What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?
I'm not sure I could pick out a single amused moment. Those tend to be brief and in quantity. It's not usually a dull place. I'm watching the Android numbers with amusement right now. At this rate Linux might actually outdo the Beatles on copies in a while.
What's your advice for developers who want to get involved?
Never admit you know anything about databases, never offer to help configure bugzilla.
For any project - do things you care about and do them right. Right is an ambiguous term but if you are happy with a piece of code and that it's done the way you think it should be done, then that is probably "right."
Five years later you may look at it and shudder but that is learning.
Also don't focus on the kernel because it's famous and big. In many ways that makes it hard to work on. If you break the kernel there are a lot of people who care (and a lot more of them being added each day by Android alone).
There is a lot more openness and flexibility in many of the newer projects and technologies. The people doing crazy things with 3D printing, HTML5 and webgl are probably closer to the nature of the earlier days of Linux when anything was possible and nothing was too silly to try because nobody knew what would work.
What do you listen to when you code?
If I'm working on complicated code, nothing. For grunt work it tends to depend how tedious the task is. A pretty wide range from folk/rockbands like Show of Hands through to stuff like ZZ Top or New Model Army. For tedious repetitive coding work there isn't a lot to beat Mötorhead and perhaps the odd bit of Ministry or Dead Kennedys.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?
Quite a few kernel lists but not many conferences. I'm not a big fan of long distance travel and I loathe and detest flying. It was bad enough before the security theatre, now its just horrendous.
I did have fun doing Swansea to Prague by train however, and you are probably more likely to find me at a model railway exhibition or heritage railway than a Linux conference. Linux may be fun, but it's still 'work.'