What is the most difficult thing about kernel releases these days?
Well, people are excited about writing new code, new features and things like that. The way we do it is, we have this merge window for two weeks when all the new code is supposed to go in. In that two weeks everybody is really happy because that's when you get to do all the fun stuff and you get to push in the new code you've just written and are proud of and so on. After the two weeks are over you're supposed to make sure that all the bugs are gone, and we get reports from all the people who are actually using the new features, and that's when the motivation levels go somewhat down because it's not at all as fun to debug things as it is to write the code in the first place.
So the biggest problem has been to try to keep people from writing new code for the next merge window (usually our schedule is two months between merge windows). So instead of making people write new code for the next merge window, they really need to concentrate on following up on every single bug report that comes in from the previous merge window - and that tends to be the hardest part. Everybody knows it's really important but at the same time it's not as exciting as writing new code, and I think that is the biggest social problem we have in the kernel.
What new features are you working on, or are tickling your fancy at the moment?
Well for the last few years all I have really done is communicate. I end up merging other people's code. I actually seldom write code myself, except when it comes to the tools around the kernel. I write code for our source control management utility which is how we keep track of who did what. Every single patch that comes in is tracked individually and in the right order, and code merges from different people. I tend to write that code, in the kernel itself though all the code ends up being written by others. I'm more of a technical lead person than a developer person, and that has been true for the last, maybe five years.
What do you think of the various Linux distributions?
People talk about how different they are but they actually all end up using pretty much the same kernel, so I suppose as far as I'm concerned there is very little difference between them. We used to have this problem with our old release schedule where instead of a release every two months we had like two years of development kernels and then a big release, kind of like what Microsoft is doing except for them it's every five years. That was really painful because then all the distributions had all their own add-ons and couldn't afford to wait for two to two and a half years to catch up, and that used to be a huge problem.
These days I don't have any problems at all with any of the distributions because we changed our release policy so that the distros can have a much easier time keeping up with new features, without having to have their own patch release. So I actually see much less of the distribution issues then most other open source projects probably do.What do you think of KDE 4?
I haven't used it myself yet, I am a KDE user but that's one area where I don't want to be on the leading edge. I actually used to send in my bug reports and stuff like that but I haven't had the time to really make that jump. I think I will probably wait for 4.1 or something when some of the initial issues have been smoothed out.
Do you have Linux on your mobile phone?
I don't even have a mobile phone! I hate phones in general because I'm the kind of person that when I work I want to concentrate on my work and if somebody calls me that completely destroys my concentration. I hate phones because they just disturb you, and mobile phones are even worse because you have them with you all the time, so I don't do mobile phones at all. I have one of the early Linux mobile phones in my workroom because I got it for free, but it's not turned on. I have Linux on all my machines but not on any phones.
When do you think we'll see the first batch of kernel patches from the OLPC project?
I'm wondering if we haven't seen some of those already. One of the big things they had was the power usage, because they actually keep the screen on and turn off the CPU when nothing is going on. This is something that went in not that long ago. We have a much more dynamic view of time - we can literally stop our timer interrupts from happening over longer periods. I think the OLPC people were involved, even though the developers may have sent stuff onto me directly or not.
You're not big on virtualisation, why doesn't it excite you?
I think it has been over hyped a bit, it's one of those hot buzz word type of things. Part of it is that for the people who tend to be more interested in virtualisation there tends to be three usage cases. One is the desktop usage case where you want to use virtualisation to run another operating system, so you actually run like VMware in order to run Windows on your Linux box for example. For me personally, that is completely uninteresting because why would I want to run Windows on my Linux machine?
The second reason is a lot of commercial people want virtualisation as they want to utilise their computers better, so they have one very powerful computer but they have many different things they want to run on that and keep them separate, so they use virtualisation to kind of create these independent boxes. This is nice for IT where you kind of manage things better, even if you have one big computer you manage them as smaller entities, and again that's not what I do.
The third reason is to run legacy operating systems, even if it's the same operating system but you run an older version because you have certain programs that you want to run. But none of those reasons are things that I do, so I personally have not been very into virtualisation, it's just not something that I'm doing. One of the things about open source is the fact that I'm completely uninterested in virtualisation doesn't mean that we don't support it; we have many different models for virtualisation that Linux actually supports, because I don't have to be interested in something for it to actually happen.Desktop Linux is really taking off for education purposes in less wealthy countries. Why do you think that is?
One of the nice things about Linux, the reason I think Linux is used in commercial settings, tends to be because it's very flexible. It's not just cheap, it's also that you can tune it for your particular usage case and that's one of the reasons it gets used there. In the developing world there are two reasons. One is obviously the price which is always a big issue, especially if you want to bootstrap your own IT technology. It's kind of pointless to buy a pre-made package when you don't know how it works and you can't change it. You really can't claw yourself up from zero when you have very basic knowledge and a very polished package that you can't even look at to see how it works - you just can't learn from that. You can learn to use it but you can't actually learn to recreate anything like it.
So one of the things I think the OLPC does very well, for example, is that a lot of the applications they have are written in a very easy language. It's not the most efficient language perhaps, and it's not necessarily the language I would use, but Python is really easy to learn - it's perfectly straightforward.
I think they have a special button you can press so when you use one of these programs you can see the source code for it, so you can literally learn how that program works. If you screw up you can say "OK I want the original back because my edits didn't actually work". But I think if you are serious about not just wanting to give people computers, but are hoping to instill into them skills in computers - not just to use a word processor but to understand how it actually works - I think Linux and open source in general is almost a requirement. Because without source access it's always just going to be a black box.
The price is important, don't get me wrong, but I think the source access just for learning purposes is hugely important. Even though let's face it, most people will not look at the source code, most people using a computer will just use it as a computer. But even if you have just a small percentage that actually looks at the source code and tries to understand it - that's how you build up maybe a small core but still a core competency in computer science - no matter where you are, even if you're in sub-Saharan Africa.
Would you ever accept an offer to keynote at LCA?
I used to do speaking almost ten years ago. I did a lot of speaking because when Linux was new it wasn't very widely known, so I felt like I should spread the word. But I was never a really good speaker, I always hated speaking and I don't like standing in front of a huge audience. I get stressed out beforehand and Linux got big enough that there were people who were willing to do the speaking and people who were better at it, so I stopped doing it. I come to LCA to go to some of the sessions, but more so just to talk with the people.
Why do you keep coming back to LCA?
LCA is a really nice conference; it's very laid back, it's very technical, you don't see suits, there is no marketing crap, it's all just about the technology which is really fun. It's a nice environment and to be honest it is summer here! Back home in Portland they had snow and sleet, it's cold and rainy, so coming to Australia for a week during summer is a nice break.
What do you think is going to be the next big controversy in the Linux world that everyone is going to fight about and want to have you on their side?
If I knew that it wouldn't be a big issue! It seems like something flares up every few years. I mean something flares up all the time but it's usually something small. There is always the bigger thing, usually something that has been simmering for a while, and it just simmers long enough that when something happens it just releases the floodgates and there is a big flame-fest. It probably happens at every company where people get frustrated and there's heated discussions, but of course when it's open source everybody sees it.
I'm also not very polite, I actually like arguing with people, and there's a lot of people who like arguing in general in the kernel community. Some people don't like doing anything but arguing and we try to discourage that, so sometimes you see this flare up and it goes on for a while and then it dies down. Sometimes, as a result we change how we do things.
What happens is as the community grows things that used to work a couple of years ago may not work anymore, and we continue this process and the process itself becomes this thing that holds you back and it frustrates people, and nobody wants to change it because changing a process you've gotten used to is really painful. Then you get to the point where it begins this huge flame war because everybody hates what is going on and nobody really knows how to do it right. We've had that happen three or four times where we've had these big discussions saying "this is not working anymore". The discussions often aren't that polite at all and tend to be like "this person is being a complete asshole and we should just kick him out because it's really not working".
And sometimes nothing really happens, we've had cases where we just realise "OK this isn't working let's try to change the model", so quite often the flame wars are actually productive and are a way of letting off steam and getting out all the problems that have been simmering for sometime out in the open. Sometimes it's enough to just get them out and not have to change anything - it's just about letting people let their steam off.What do you think is the next big thing for Linux?
I don't think there is one thing. One of the things that is quite interesting is there are all these different people and different companies and they all have their own agendas. For example within the mobile world - which is not just one area either - there are the cell phone companies, the embedded systems, people using Linux for things like embedded music, distribution points like wireless music and media in general, and they all have their own thing that they think is the most important, which is true for them because they may have a small or even a large company that is going in one direction.
So what motivates you to work on Linux?
Linux has done what I wanted it to do for the last fifteen years, literally, so since very early on my motivation actually came from the outside: my motivation came from problems that other people see. I don't see the problems, my usage model is actually fairly simple and it's still the same development model that I tend to concentrate on. So I am actually motivated by other people's issues, and sometimes they make me go "those people are just crazy, that's just insane", but sometimes the crazy people have some of the most interesting problems too.
I personally have always been interested in the desktop because my usage has always been as a workstation. It's been a fairly limited desktop because I don't tend to care about a lot of the things that other people care about on their desktops, so personally I tend to be more intrigued by problems that other desktop people have as it's closer to my own usage.
But at the same time, sometimes the really technically interesting problems in particular come from the embedded world. They come from people who have very strict requirements because they are doing just one thing and they are usually doing it on a very small machine because they need that machine to be cheap in order to sell millions and millions of copies. So sometimes the desktop people have a much easier time because their machines are really big and powerful, but the really interesting technical challenges sometimes come from the mobile people. Although for them it's usually the user interface, they don't tend to complain that much about the kernel.