A look at a Linux kernel rejection
The project in question is the Linux Kernel Crash Dump (LKCD) subsystem. LKCD comes into play if a Linux kernel panics; it uses the swap area to create an image of the dying system. That dump can then used to figure out just what went wrong. Commercial operating systems have had crash dump capabilities for decades; crash dumps make life much easier for vendors facing angry customers who want their systems fixed immediately. Given the increasing interest in "enterprise" deployments and high-quality support, one would think that a crash dump capability would be a high priority for inclusion. One would also think that it would not be controversial, since crash dump support does not slow down or adversely affect users in any way. So why did it fail to go in?
Certainly, there were some technical concerns about LKCD. A kernel which is crashing is, by definition, not functioning properly; do you really want that kernel to write massive amounts of data to disk as its last act? Some developers fear that LKCD has not taken sufficient care to avoid overwriting files as it saves its dump to disk. There is no real history of people having their systems trashed by LKCD, but the worry remains.
LKCD has not played the kernel political game all that well. In some
cases, it is enough to write code and ask that it be merged. But, as a
general rule, you have to convince Linus that the development really
belongs in his kernel. In practice, that means turning one or more of the
top-tier developers into an advocate for your work. The LKCD developers
have not done that; instead, they have tried putting pressure on Linus
directly. Linus responded by digging in his heels and stating: "...right now I won't touch LKCD
with a ten-foot pole, if only because I've been mail-bombed by people who
argue for it when I have better things to do than to explain myself over
and over again.
"
But neither of those reasons are the real reason why LKCD got left out in the cold. As Linus has been saying for a few years, his real job anymore is saying "no" to people. He says "no" to anything that, in his opinion, does not really have to be in his kernel. It is a hard job; it requires enough backbone (and ego) to stand up against great pressure at times. But it is also a crucial role that must be played well if the kernel code is to remain maintainable over the long term.
Linus said "no" to LKCD because he did see any real advantage to having it in his kernel. LKCD, says Linus, is a "vendor-driven" development. Since LKCD is vendor driven, the vendors that are interested can merge it into their trees. That is what free software is all about, of course. This attitude may seem a little harsh, but it makes sense when you consider a couple of points:
- Vendors, with very rare exception, do not ship Linus's kernels as
he distributes them. Most vendor kernels are heavily patched, with
dozens (or even hundreds) of changes and added features. The spec file for the 2.4.18 kernel shipped
with Red Hat Linux 8.0 lists a full 200 patches; Red Hat has
added User-mode Linux, TUX, the O(1) scheduler, the low-latency patch,
NAPI, netdump (a network-based crash dumper), etc. LKCD would
be a small addition to the list of patches already applied by
distributors. The fact that few vendors have included LKCD suggests
that they, who are the main market for such a feature, are not yet
interested in it.
- It is hard to imagine any vendor being interested in a crash dump that comes from anything other than one of their own stock kernels. Linux empowers any user to obtain and build any kernel they want, but those users cannot, in general, expect their vendors to chase bugs in "roll your own" kernels.
So, by suggesting that interested vendors patch in LKCD themselves, Linus is getting that code to the places where it is useful without having to put it into his tree. A certain amount of kernel source bloat is avoided, the way is left open for other potential crash dump implementations, and LKCD is still easily deployed in the situations where it is needed. All told, it is not an entirely unreasonable decision. The kernel process is often hard on developers, but it important that Linus continues to say "no" if we want to have a kernel which does not eventually collapse under its own weight.
(See also: Linus's explanation of why LKCD
didn't go in, and of how to get patches into the kernel in general, and
this week's Kernel page, which looks at the
next steps for the (non-merged) EVMS project).
Posted Nov 7, 2002 5:15 UTC (Thu)
by Strike (guest, #861)
[Link]
Posted Nov 7, 2002 23:07 UTC (Thu)
by barbara (guest, #3014)
[Link] (1 responses)
Barbara
Posted Nov 20, 2002 19:43 UTC (Wed)
by yakker (guest, #3570)
[Link]
LKCD has been going through major steps to get as much feedback from the Linux community (including Linus) for inclusion into the kernel. By garnering feedback, asking for thoughts, bug fixes, putting in features, modifying the project to meet the demands of the other kernel developers, etc., we expected that we had done everything asked of us by the community, for the community. Your last sentence is clearly wrong, and if you doubt me, go back and read the threads. Go back and read the patch postings. Go back and read the comments from other kernel developers on what to change/fix/modify/etc. Or better yet, don't, take my word for it, as I'm right, and do something more useful with your time (like code). It's what I _should_ be doing instead of replying to this. --Matt
After reading Linus's explanation, backed by this article, I think it makes total sense. Sure, there was a bit of ego and posturing that was involved (like Linus not liking being caught off-guard by a sudden request for a relatively big merge), but his reasoning is quite sound. I really enjoy the points about how it is really a more vendor-driven feature, and I'm glad to see such a feature be excluded from the kernel proper. It, in some small way, re-establishes the "grass roots" feel of the kernel process. In spite of how it's become moderately automated and "colder" now, the least common denominator is still looked out for.
A look at a Linux kernel rejection
Linus' explanation of why LKCD did not get into his kernel tree should be read by every kernel hacker who wants her/his patch merged into Linus' tree. He explains concisely, clearly and colourfully what he expects. The LKCD crew did everything possible to guarantee their patch would not get in the 2.5 kernel.A look at a Linux kernel rejection
I think your last comment based on Jonathan's summary is very short-sighted and shows that you didn't follow the entire thread.A look at a Linux kernel rejection