My words on free/open source software

Thursday, February 28, 2008

A Talk with Andrew Morton

On Feb 20th, 2008, Tina and I attended the Eating the Linux Kernel party:
"Thanks to the Linux Foundation and China OSS Promotion Union we're
organizing a diner with all the great speakers of the Linux Developer
Symposium. This is going to be the one opportunity to share food and
thoughts with people like Andrew Morton, Jonathan Corbet, Dave Neary,
Jeff Waugh and many many others. In total probably 20 specialists from
the kernel development, Linux embedded or Gnome development
exclusively for Beijing LUG members..."

Fortunately I had a chance to have a talk to Andrew Morton who seated
besides me:

(This is not a verbal transcript of the talk, nor has Andrew Morton
endorsed it and he has no responsibility for whatever listed here.
This is just a fast record of a gossip and please don't take it
seriously.)

YL: Hi Andrew, you look tired, are you working busy on 2.6.25?

AM: Yes, it takes me lot of time.

YL: When will you leave Beijing?

AM: Friday. Take a tour tomorrow (Thursday) in Beijing.

YL: Can I ask you some questions about the kernel? Why Linux doesn't
maintain a stable ABI. Currently each time the kernel updates, all
3rd party modules will have to be recompiled. And this is really
annoying for many users.

AM: What 3rd party modules?

YL: For example, the one of Madwifi, and fglrx, the proprietary driver
for ATI cards.

AM: Are they GPL?

YL: Oh, no, part of it is a non-GPL blob. So I see the reason why the
kernel doesn't support them well is that they are not free software.
So can I say that the rumor is true that you intentionally break the
ABI to make using 3rd party modules difficult?

AM: No, we don't break them _intentionally_. We just don't care about
it. If we were to support a stable ABI, it will make the development
and maintenance of the kernel much more difficult. We won't support
non-GPL code by compromising free software.

YL: But if you made the installation of some proprietary drivers
easier, more users would come to use Linux. And if you had more
users, you have more developers. And this will promote the development
of the kernel.

AM: Yeah, it's true. But we just can't support proprietary software by
ways of compromising free software.

YL: Do you have a plan, or a long-term goal of the kernel development?

AM: No, we have no plan. And this is just the point of kernel
development (and maybe other free software project). The users decide
where the kernel goes. If you need a function, just as he (a man sit
besides AM) just said, if you need to support Chinese display in
Linux, just implement it and send me the patch, and if it's good
enough, we'll include it in the kernel.

YL: If the kernel itself has no concrete plan for what functions
should be supported and what not, and accepts everything good enough
from the users, won't the kernel became bloated quickly?

AM: No it won't. Everything is configurable. If you don't need it,
disable it.

YL: But the kernel is already very large, the binary is 20Mb, and the
source codes are somewhat more than 300Mb.

AM: I think it's not a problem. The core part of the kernel takes only
1Mb memory at run-time. And I see 300Mb is not a problem for today's
hard drive.

YL: The kernel is so large, and has too many things in it. I see
another problem with this approach. Say if you found a bug in a driver
for an ancient piece of hardware and you updated the kernel. Then all
users have to update just to pull in something they'll never used.

AM: Oh, I've to say sorry for that. You can say it's a problem.

YL: Can we just split this large kernel into several loosely coupled
projects? Say, one project for a kernel core, one project for file
systems, one project for the network layer and some other projects for
drivers.

AM: That maybe to difficult for maintenance.

YL: So do you thing micro-kernel would solve this problem, or are you
a fan of monolithic kernel?

AM: Monolithic kernel is much more efficient and easy to develop.

YL: Another question, does the kernel team have a plan to add
automatic test to cover some key functions?

AM: No, auto test doesn't work as we tried before. I've been
following the LTP project for more than 2 years, and only 2 bugs were
found by those automatic tests. Most of the kernel bugs are only
reproducible on some special pieces of hardware and you just have no
way to use automatic test to cover them.

For the core part, things like scheduler, file system, etc., is used
by everyone so they are thorough tested by everyone, and for the other
parts, like various drivers for special hardware, only those have that
hardware can test it. So auto test has few use for this.

YL: Do you think the kernel can be better maintained or developed by a
team?

AM: No. It won't get better if you put a lot people in a building.
The communication would take too much time. I see it's efficient
enough to communication by using mailing list. I get bored soon
during a long meeting so I just leave and ask them to send mails and
code snips to me and we can have better understanding on technical
problems.

YL: Do you think attending symposiums, lectures and parties like this
is a waste of time? Do you think you can better use the time for
hacking?

AM: Oh, I don't like this before I go, it's not good to travel for
long time on plane. But when the event was finished I thought "oh,
it's not bad." These are things for promotion. For example, before I
went to Japan some years ago, there's few patch from Japanese
developers. And after some lectures there, the patches from Japan now
skyrocketed to be around 20% among all patches. So it has a snowball
effect and that's why I attended these events. I hope I can get more
patch from Chinese developers.

YL: Do you have a laptop?

AM: Yes, it's a ThinkPad.

YL: Oh, I'm using a ThinkPad too. But I have to use proprietary blobs
to support the wireless as well as ATI video card. Though I don't use
3D acceleration much, I do need the 2D acceleration for daily work.
The open source driver is slow on 2D performance.

AM: Yeah, ThinkPad has poor 2D performance but it's bearable. I just
use the default open source driver. For wireless my laptop is running
ipw3945 driver and that's the only binary blob on my laptop.

YL: So does your suspend and hibernation work well?

AM: No, they don't. (shrug)

YL: What's your main work time and for how long you sleep a day?

AM: Huh! I work most of the time, and sleep from around 3am to, say,
11am.

YL: I remember you wrote an article said that the 2.6 kernel is slowly
getting buggier.

AM: Yes. People should spend more time on fixing bugs.

YL: What's your personal plan for the following years?

AM: I may quit in about 1 or 2 years and then I won't spend much time
on maintenance. I'll continue to work on the kernel, perhaps focusing
on bug fixing.

YL: So how about the mm tree?

AM: No need to worry, some other people will set their own branches to
take the position of it.

YL: Have Google asked you to do something special for them?

AM: No, they just pay me to do whatever I want to do.

About Me

My photo
Santa Cruz, California, United States