Ask The Expert

Alan Cox
Kernel Developer

Recently, we spoke with kernel developer Alan Cox. When it comes to the Linux kernel, Alan is one of the luminaries, having worked closely with Linus Torvalds on kernel development issues for quite some time. At Red Hat, Alan's job is to do what he does best -- make the Linux kernel better.

Q:  How and when did you first get interested in computers?
A:  As a concept, they fascinated me from when I was 11 or 12. Fortunately for me, our school not only had computers (three for a school of several hundred pupils) but also had staff who thought it was important enough to spend an evening a week informally teaching people BASIC and computing in general. That was a huge help. Once they became sanely priced, I got a 1K sinclair ZX81, later upgraded to 16K, and then a ZX Spectrum.
Q:  What software-related jobs have you held?
A:  I started out working in the game industry -- helping with Z80 ports of Scott Adams games, text compression, graphic engines, and then game writing.

Somehow, I managed to avoid going back into that after university and ended up doing real time synchronization work on DOS and VMS boxes. Since then, I've worked on a graphical desktop, ISDN bridges and routers, been a sysadmin, a security engineer, an ISP director, and helped design an end user friendly Linux appliance.

Nowadays I'm working full time on Linux.
Q:  What prepared you for your role in Linux kernel development?
A:  Computing internals have always fascinated me. At Aberystwyth (The University of Wales, Aberystwyth -- Ed.), I wrote a fair chunk of a multi-user game, and in doing so had to learn how the OS dealt with stuff. A mix of reading, poking around, and judicious abuse of a screwdriver taught me a lot.

University lectures taught me different things; stuff I thought was irrelevant, but some of which keeps turning out to be useful. Software engineering, statistics, and even queue theory turn out to have practical value. Admittedly, Cobol85 hasn't proved useful except for humour value.
Q:  How has your role in Linux kernel development changed over time?
A:  I started out sending Linus small patches that he dropped because some guy called Ted T'so fixed the bug first, then somehow ended up hacking networking code to get 1.0 possible. My role has gradually turned more from coding to organising stuff. It's been nice to take some time hacking and sort out the aacraid driver and NCR5380 stuff.
Q:  How and when did you end up being a Red Hat employee? What were you asked to do?
A:  I worked at NTL helping roll out the and ISP's they ran and managed. I was part of a team building up the systems, writing security policies and then getting the actual service up and running.

I then left NTL to work as a director of mostly because there was too much travel. NTL then bought, so I asked Erik Troan for a job (well it worked for Erik...). From that came Building #3 and later I joined Red Hat Europe properly.
Q:  Tell me a bit about Building #3.
A:  Building #3 mostly did work for Red Hat but did some other things, too. In part it was done because the tax mess created by working outside the USA for a US company is deeply unfunny. Building #3, by being a company and a real separate financial entity, avoided the mess.

The name "Building #3" started out as a joke inside Red Hat. Someone remarked it would be Building 3, because at the time Red Hat was split between two buildings (which were within a mile or two of each other).
Q:  How does the -ac kernel series fit into this?
A:  I was just accumulating patches for testing and to feed on to Linus as tested chunks. With the 2.2 tree it was useful; with 2.4 because the early 2.4 proved less solid than desired, almost every vendor ended up shipping -ac kernels. As of 2.4.17, the -ac stuff is mostly merged where appropriate (some is pending for 2.5 only). 2.4.18 should finish the merge.
Q:  How has your employment with Red Hat affected your kernel-related work, and how has your kernel-related work affected your employment with Red Hat?
A:  I have a somewhat more developed sense of the importance of QA and caring about good back compatibility.
Q:  Have you found yourself in a situation where Red Hat's business interests and the kernel development community's interests put you in a conflict? If so, how did you resolve it?
A:  It happens some times. On the odd occasion I've got a patch I (wearing my Red Hat) want in the kernel, I send it to someone else such as Linus for approval (commented so he knows I'm biased). I'd want to do that for my own code anyway -- extra eyes find so many more errors.
Q:  Please give us an overview of how your new role in kernel development differs from your previous role.
A:  I get to read a lot less mail and spend more time working on actual code. I've been cleaning up driver code that has been annoying me for years.
Q:  How does this new role fit into your job responsibilities at Red Hat?
A:  I have a lot more time to actually write code, and that means a lot more time to work on things Red Hat customers need.
Q:  In your post on, you said about your future that:

"There are various kernel projects I will be working on as well as spending more time concentrating on Red Hat customer related needs."

That sounds interesting -- can you tell us a bit more about the kernel projects you'll be spending more time on?
A:  Kernel stuff -- I have driver cleanups and a lot more documentation in mind.
Q:  Thanks for your time; I know you're very busy. Speaking of which, when you *do* get some time to relax, what do you like to do?
A:  Sleep 8)

I'll try my hand at all sorts of things. I need to spend more time cooking again. Often I get a chance to mix fun and work which is great. Going out onto the snow in Iceland miles from any civilisation was great fun for example.