Innovation... driven by intelligence and logic

Linus Torvalds

Linus Torvalds talks future of Linux

INTERVIEW | Linus Torvalds relates his plans for the future of Linux, including the 3.0 kernel [there probably won't be one], and which distro he personally runs on his home PC.

Linus Torvalds, creator of the Linux kernel, has, along with others like Richard Stallman, literally changed the world of software forever.

Linux-based distributions seem to pop up every day, while more and more devices now run Linux at their core, from mobile phones to inflight entertainment systems, to the world's mission critical server infrastructures.

The development of the kernel has changed, and Linux is just getting better and better. However, with a community as large and fractured as the Linux community, it can sometimes be hard to get a big picture overview of where Linux is going: what's happening with kernel version 2.6? Will there be a version 3.0? What has Linus been up to lately? What does he get up to in his spare time?

I had the opportunity to chat with Linus Torvalds, in a number of email exchanges.

Q: Writing an operating system kernel is a hard job. Why did you write Linux in the first place?

LT: Kernels may be hard, but partly because of that they are also interesting. I've always been more interested in "down to the hardware" details than in fluffy stuff like user interfaces etc, and an operating system kernel is about as down to the hardware as you can get without actually building it yourself (which I've also done - I was at a CPU company for seven years, after all). So I'm not into soldering irons etc, but I very much enjoy working at a low level, and thinking about how my software actually interacts with the CPU and other parts of the system. Besides, I really didn't realize how hard it would be. I really never expected to be still working on it 15+ years later ;)

Q: What's the Linux Foundation?

LT: Heh. I just work here, you should ask some of the people who are actually involved in all the other things that LF does. It's basically the combination of OSDL ("Open Source Development Labs") and FSG ("Free Standards Group"), and is a vendor-neutral place for different organizations to discuss the issues they have, and trying to help Linux along. Part of what LF does is pay me to maintain the kernel.

Q: What are you doing with the kernel now? Are you working on it full time? What parts of it do you work on the most?

LT: I very much work on it full time, but I no longer really work on any particular "part"of it - I end up spending almost all my time on not writing kernel code myself, but on working with the flow of code and merging it all.

In fact, the biggest amount of actual source code I've written in the last two years is not in the kernel itself, but in the tool I use to just track the kernel development (called "git" - a source control management system).

So I still get to write code (and I send out suggested patches quite often - but usually they are along the lines of "so here's how we could handle this issue..." in order to prod others to actually do the final patch and testing). But what I do a lot more is go through other peoples changes and say "yes" or "no".

Q: The 2.6 series kernel has been around for a long time. Why?

LT: We used to have these big and painful development releases that took several years, and it worked reasonably well and people got very used to it ("2. is stable, 2. is development"), but it had serious downsides too.

In particular, the release cycles were so long that all the commercial vendors effectively had to back-port a fair amount of new code from the development kernels, and so development code ended up in the stable releases. Also, conversely, the vendors fixed problems in the stable versions, and sometimes the fixes were missed or weren't easy to then forward-port to the development series, because the two were just very far apart.

Basically, a multi-year development cycle simply doesn't work. It was reasonable and required for a while (we did some pretty radical changes there too), but with 2.6, the base kernel is in good shape, and we've improved our development process enough that we just don't have any pressing reason to go back to that kind of "everything changes" model.

So instead of having two or three years between stable releases, we now have two or three months. Which means that the vendor kernels are much closer to the development kernels, and avoids a lot of the problems we used to have. Everybody is happier.

So we'll probably stay with that model unless something really radical happens, and that means that we'll keep with the "2.6.x" codebase, and just incrementally improve on it.

Of course, if we had a marketing department that had a strong say, they'd make us call it some sexy name ("Panther" or "Vista" or whatever), but as it is, the technical people are in charge of version names, and the sexy naming is up to the distribution makers that can call their offerings whatever they want ("Fedora" or "Feisty Fawn").

Q: When do you expect to see a kernel version 3.0? What will be the major changes or differences from the 2.6 series?

LT: We really don't expect to need to go to a 3.0.x version at all: we've been very good at introducing even pretty big new features without impacting the code-base in a disruptive manner, and without breaking any old functionality.

That, together with the aforementioned lack of a marketing department that says "You have to increase the version number to show how good you are!" just means that we tend to just improve everything we can, but you're not likely to see a big "Get the new-and-improved version 3!" campaign.

Q: There doesn't seem to be a Linus kernel anymore and an experimental (e.g. Alan Cox kernel, etc) anymore. Is this true? If so, is it because you have the 2.6 series pretty much exactly where you want it?

LT: Well, part of it may be that we've gotten better at handling the code flow issues, and so maybe there's less reason for various experimental kernels. That said, there's still the -mm tree (Andrew Morton's kernel) where a lot of new code goes first. It's maybe less about "experimental" than about "a first testing ground before merging into Linus' tree", but that's not so different from what -ac (Alan Cox's tree) was about.

And there are still a lot of specialized trees for specific things. In fact, it's one of the things I wanted git to make easier to do, and if you want to follow network driver development before it gets merged into my tree, there are trees for that, and for sound drivers etc etc.

But I do think that part of it is that over the years we've found what works, and that the current development model is reasonably good.

That said, I'm sure we'll eventually hit some issue that gets peoples blood boiling, and we'll have a tree for some changes that I don't think are appropriate and am not willing to merge, and that's as it should be: unlike a lot of other open source projects, I've always encouraged people to try their hand at forking off a kernel project of their own to scratch their own itch.

So I don't think such project forks are bad at all, it's how a lot of development is done. Obviously, most development is about "micro-forks" and people don't even think of them as real forks at all, but I actually think it's good to encourage experimentation - and by keeping it friendly, if some experimental kernel shows that it was actually the right direction, we don't end up having psychological road-blocks to switching over or to merging the code...

May the best code win.

Q: Do you think Linux has had an impact on computing in the past decade? If so, what stands out the most?

LT: I think Linux has affected the OS landscape a lot, but even more than that, I think Linux was instrumental in making the whole issue of Open Source move into the mainstream software development consciousness.

There had certainly been Open Source projects before Linux, but Linux was big and successful, and actually changed how people viewed them. Part of that was that Linux took a lot more pragmatic approach to what used to be called "Free Software" (and is still called that by some), and moved it from being a fringe and sometimes pretty extreme ideology to be something that was just "technically better".

And I'll certainly take some of the credit for that personally. I dislike the frothing-at-the-mouth ideology (to me, ideology should be something personal, not something you push on other people) and I think it's much more interesting to see how Open Source actually generates a better process for doing complex technology, than push the "freedom" angle and push an ideology.

And I think that pragmatic approach was what made Linux and Open Source also much more palatable to many more people, and helped make it mainstream.

Q: For those eager to make their first contribution to the kernel and have it accepted, what would your recommendations be? (Any areas that need help more than others, any good books for kernel hackers; however you'd like to interpret this question).

LT: It's hard to give advice, because it's different for different people. The big thing is to not think too big - you don't start out by rewriting some subsystem. Start out with some small annoyance, and see if you can fix it. And do something you're really interested in - kernel programming is easily complex enough that if you're not really interested, you'll lose your motivation before you really get anywhere.

Q: Out of curiosity, do you have anything to say to hardware manufacturers who refuse to release datasheets or specifications about the functioning of their hardware so it could operate with the Linux kernel?

LT: Is "I hope you all die a painful death" too strong?

The good news is that a lot of hw manufacturers are actually doing the right thing. Intel in particular has improved wrt open source a lot, and for that reason I tend to suggest that when buying a machine, just make sure that you buy one with Intel graphics and wireless. That takes care of the two biggest annoyances right there.

But Intel certainly isn't the only one, and we're doing fairly well in general - with just a few dark spots.

Q: You've made an enormous contribution to community service and to the lives of countless people with Linux. People in third-world countries are donating old or second hand machines, and Linux distributions are free of charge and come with sometimes tens of thousands of free programs. Is there anything else about Linux you are really proud of?

LT: Actually, I'm not all that proud of the "community service" and "third-world countries are using Linux". Simply because it wasn't really what I was aiming for. So that feels like a great bonus, but it's not something I see myself patting myself on the back for. The credit for that goes to a lot of other people.

So the thing I tend to be personally proud over is just the fact that I've had the tenacity to "just do it" for over fifteen years, and that Linux has fostered a culture of good open source technology. I'm proud of a lot of the technology too, of course.

Q: You said you were proud of the technology. What do you mean by this - something like better memory management algorithms than those in commercial UnixTM kernels, better flow of control in a complex process like a kernel?

LT: I think we have tons of areas where we're just better than anybody else. We handle portability better, we handle the development process better, and yes, we also end up having better memory management and a better filesystem layer than anybody else.

So there's tons of things on the technical side that I'm really proud of how we handle. And hey, I'm obviously biased, and some people will disagree on any particular feature, but that's what makes things interesting.

Q: Before you wrote the kernel, you wrote a clone of Pacman. Do you play games at all and if you do, which ones?

LT: I don't games that much, I don't tend to find it interesting enough. And when I do play, I tend to play things that are more kids or teenager games: more of a "platformer" kind of thing. I played the original Prince of Persia a long time ago before I started Linux, and for that reason I tried out the modern versions, and liked those too ("Sands of Time" in particular, the later ones were a bit too serious).

Q: Would you write another game if you had the time? If yes, what would it be? Do you have a favourite type of game, such as adventure?

LT: I really only wrote some (fairly bad) games because I was interested in the programming, not so much the playing. I found it more interesting to just do flicker-free graphics at high performance than the actual game-play.

So no, I'd probably never do a game again. Especially in these times, when games are a lot more about the content, and less about the things I used to worry about.

Q: What do you like to do in your spare time? Do you have any particular hobbies or interests outside of computing?

LT: I spend a lot of time at the computer. But I'm writing this one-handed, because our puppy is sitting in my lap right now. And when not at the computer or with the family, I tend to read a lot.

Q: What books do you like reading, and what have you read over the past few months?

LT: I read mostly just random pocket-books - horror, sci-fi, fantasy, thrillers, you name it. I tend to not really remember the books, it's not like I read them because they leave a lasting impression...

The more serious stuff I read tends to be biology and especially genetics. Richard Dawkins was a big hero of mine even before he became an internet cult figure - I really enjoyed his The Selfish Gene (and I find his books on evolution more interesting than "The God Delusion", even if his atheist worldview is perhaps what he's now most famous for - probably because I just find genetics more interesting than religion ;)

Q: You like to use your computer, as you said. Aside from writing kernel code, what do you like to do on your computer?

LT: These days, most of the time I write less kernel code than I write code for git, and in fact for the last year, even that has no longer been a full time job. What I really end up doing most of the time is just communicating. Reading emails, forwarding them, writing replies...

And reading other peoples patches (and bug-reports - most of them never get elevated to "let's bring Linus into this", but it happens often enough that I end up being personally involved enough with some regression most days..)

And that really does fill my computer time. I waste time browsing the web when I'm bored, of course, and I have my classic rock going on random selection in the back-ground, but what I do most of the time is literally revolving around email and the kernel.

Q: Do you use a specific distribution of Linux at home or work?

LT: A "specific" one? No. I have changed distributions over the years, and it tends to really end up depending on various random circumstances, like just when I switch machines around and what happens to be convenient.

So right now I happen to run Fedora on my machines, which largely came about from me running on POWER for a few years, and Fedora supported it pretty well (and since I actually don't care that deeply about the distribution, I tend to prefer running the same thing on everything, just to keep any distro issues away).

Before Fedora had PowerPC support, I ran YDL for a while, and before that I had SuSE. Funnily enough, the only distributions I tend to refuse to touch are the "technical" ones, so I've never run Debian, because as far as I'm concerned, the whole and only point of a distribution is to make it easy to install (so that I can then get to the part I care about, namely the kernel), so Debian or one of the "compile everything by hand" ones simply weren't interesting to me.

Q: What software do you use everyday? Your browser, desktop (if any), email client and so on?

LT: Well, ignoring the actual development stuff (make, compiler, editor etc), it ends up being mostly just xterms and "alpine" (the newer version of the venerable old "pine" email reader. Strictly text-based, thank you very much).

And yes, a browser is mostly open in the background. There's a few technical discussion forums I'm active on when I have nothing better to do (or when I do have better things to do but get frustrated with them ;) , and then the normal "random" sites (boing boing etc).

Q: You've worked on Linux for 15+ years. Do you think you'll ever stop working on it? If you did, what do you think you'd do?

LT: "Ever" is a long, long time. I didn't expect it to end up being 15+ years when I started, and I still don't really have any plan on what I'll do in the future. But one reason I've done it for 15+ years is that I like concentrating on something, and don't like flittering from one project to another. And I simply like doing Linux.

So no, I'm not planning on ever stopping working on it, but maybe some day somebody better simply comes along, and I certainly hope I'll just have the good grace to realize when I'm simply not needed any more and not adding anything to it.

Q: You've been to Australia, and rumour has it that you were bitten by a penguin. Is that true? How did you find Australia, how many times have you been there, any favourite town or city? Was there any kind of activity like bush-walking and things like that which you really took to in Australia?

LT: I've been to Australia several times, these days mostly for Linux.Conf.Au. But my first trip - and the one when I was bitten by a ferocious fairy penguin: you really should keep those things locked up! - was in 93 or so, talking about Linux for the Australian Unix Users Group.

And I'd never go bush walking. Not that I mind the idea of poisonous animals (or the drop-bears), but simply because I'm just not into that whole outdoor thing. I tend to go to zoos, and I love walking around the strange creatures you have down there, but let's face it - one of the biggest draws is that it's warm and sunny there when it's nasty and horrible in the northern hemisphere. I'm from Finland, so "warm and sunny" means more to me than it may do to some other people.

One of these days I hope to find myself on the Great Barrier Reef and do scuba diving (which I love), but for some reason I've always ended up in other parts.


EmbLogicTM is an ISO 9001:2008(QMS) (Quality Management System) Certified Company

Go to Top ^