LWN.net Logo

Communicating requirements to kernel developers

By Jonathan Corbet
July 14, 2009
The 2009 kernel summit is planned for October in Tokyo. Over the years, your editor has observed that the discussion on what to discuss at the summit can sometimes be as interesting as the summit itself. Recently, the question of how user-space programmers can communicate requirements to the kernel community was raised. The ensuing discussion was short on definitive answers, but it did begin to clarify a problem in an interesting way.

For the curious, the entire thread can be found in the ksummit-2009-discuss archives. Matthew Garrett started things this way:

I've just run a session at the desktop summit in Gran Canaria on the functionality that userspace developers would like to see from the kernel. Some interesting things came out of it, but one of the major points was that people seemed generally unclear on how they could communicate those requirements to kernel developers. Worth discussing?

Dave Jones's response was instructive:

What exactly is the problem ? They know where linux-kernel@vger.kernel.org is, so why aren't they talking to us there?

To developers who are used to the ways of linux-kernel, and who are well established in that community, a question like this might make sense. If one were to poll developers who do not normally hang out in the kernel community, though, one might get an answer something like this:

  1. The volume on linux-kernel is far too high for ordinary people to cope with.

  2. Even if we could keep up with linux-kernel, the volume is still likely to bury anything we might post there.

  3. Kernel people speak their own language, making it hard to follow discussions, much less participate in them.

  4. If somebody does notice our request, they will probably flame it to a cinder without necessarily taking the time to understand it first.

  5. If they don't flame it, they will probably tell us to send a patch, but we're not kernel developers and thus not in a position to do that.

There can be no doubt that some communications problems can be easily blamed on the requesting side. If a feature request is phrased as a demand, it is unlikely to be received well. Kernel developers are beholden to demands from their employers, but from nobody else; like most other developers, they take a dim view of people who feel entitled to free work just because they want it. A classic example here would be the early Carrier Grade Linux specifications produced by OSDL; they read like a "to do" list handed to the kernel community, even if OSDL eventually claimed that it was not intended that way.

Another problem can be poorly-expressed requirements. Consider the early TALPA proposal, which posted a very clear set of low-level requirements. Unfortunately, they were too low-level, requiring features like the ability to intercept file close operations. Instead, TALPA (now fanotify) needed to express requirements like "we need a clean way to support proprietary malware-scanning software, and this is why." That disconnect set the project back significantly, and could well have killed a project whose developers showed less persistence or less willingness to learn. Clearly expressing requirements at the right level is never an easy task, but it's crucial.

Finally, some ideas just don't make sense in the kernel. Perhaps they cannot be implemented in a way which avoids security problems, does not break other features, and does not create long-term maintenance problems. Or perhaps there are better solutions in user space. A developer who goes to linux-kernel with this kind of request is likely to go away feeling like kernel developers are completely unwilling to listen to reason.

All of the above notwithstanding, there is some recognition that user-space developers have real difficulties in bringing requirements to the kernel community. Kernel developers tend to be busy, focused on their own projects, and not always entirely open to requests from outside the community. There is no mechanism for tracking feature requests, so it is very easy for them to be buried in the flood of email. The tone of discussions can be harsh, even though it truly has improved over the years. And so on.

This is not good. The kernel exists to provide for the needs of user space; if the kernel development community is not hearing what those needs are, it can only fail to satisfy them. So thinking about how to make it easier for user-space developers to communicate their requirements would seem to be worthwhile; chances are that space will be made at the summit for that topic. But there is no need to wait for the summit to start talking about how things could be improved.

Matthew Wilcox suggested the creation of a document on how user-space developers can interact with the kernel community. The idea makes sense (your editor may just try to help there), but this is not a problem which can be solved by documents alone.

James Bottomley described three broad categories of users needing changes to the kernel:

  1. Sophisticated developers who can write their own kernel extensions.
  2. Users who can get a kernel developer interested in their desired additions.
  3. Users who want features that no developers are interested in.

James points out that categories 1 and 2 can be helped with documentation and general outreach. He worries, though, that we have no way to help the third category of users, who are generally left with no way to get the kernel changed to meet their needs.

Ted Ts'o had a different taxonomy which he has put forward as a way to help understand the problem:

  1. Core kernel developers (or those who have access to such people). Core developers have the advantage of a high degree of trust in the community; that allows them to get features into the kernel with a relatively small amount of trouble. They are able to merge code which might well not pass muster if it came from a different source.

  2. Competent, but non-core kernel developers (and, again, people who have access to them). These developers have to work harder to justify their changes, but they are generally in a position to get changes merged as long as the work is good.

  3. Potentially competent developers with "patently bad design taste." Ted suggests that the frank nature of the kernel review process is intended mainly to weed out bad patches from this source.

  4. Users with no access to kernel development expertise, who must thus try to convince somebody else in the community to implement their desired feature for them. Ted divided this category into two subcategories, depending on whether there is an active kernel developer working in the user's area of interest or not.

Ted's thought is that this taxonomy can help users to understand why certain patches and ideas are treated the way they are. It can also be used to help develop ways to reach out to each specific group of users. Certainly the different groups need to hear different messages. One could argue that the existing documentation should be sufficient for people with kernel development skills, but there is relatively little help out there for those who must find a developer to do their work for them.

It is that last group which is most likely to be intimidated by the prospect of walking into linux-kernel and asking for features. The kernel community could really use a person who would take on the task of working with these users, helping them to clarify their requirements, connecting them with the appropriate developers, and tracking requests. The good news is that we do have such a person; the bad news is that it's Andrew Morton, who has one or two other things to do as well. The community would benefit from a person who worked something close to full time on the task of helping users and user-space developers get what they need from the kernel. That sort of position tends to be very hard to fund, though; as a result, it tends to stay vacant.

As was noted at the outset, this conversation did not produce much in the way of concrete conclusions. It is far from complete, though. If not before, it will be resumed in October at the full summit. Needless to say, your editor plans to be there; stay tuned.


(Log in to post comments)

Communicating requirements to kernel developers

Posted Jul 15, 2009 2:06 UTC (Wed) by PaulWay (✭ supporter ✭, #45600) [Link]

I'd suggest that the 'poorly defined requirements' problem is actually a reflection of another fact of Kernel development - that it is much more at the whims of the kernel developers than they would like the rest of the community to think.

It's very easy, as the CGL and TALPA experiences show, for the verdict of 'this is not suitable' to be pronounced on any definition. "It's too specific". "It's too general". "It's too prescriptive." "It's too vague." It's probably easy for a well-versed reader of the LKML to give examples where different kernel developers have given differing pronouncements on these scales. Having been a victim of the specification game - where each revision of the specs comes back from the review as being too far in some other direction - I would suggest an obvious way to correct this problem.

Kernel developers should get together and draw up some guidelines for submitting development requests. They should include examples of what they want to see as well as examples of the extremes that won't be accepted. This should be written in fairly simple english and should be as reasonable and useful as possible. Giving examples of what requests have worked and what haven't in the past would also be a good way of helping people or groups new to the process to understand what's needed to make something that will really work for everyone. No-one minds being told to RTFM if there's a F good M there to R.

It's not even obvious whether the LKML only allows subscribers to post - to state that "[t]hey know where LKML is" is just being cliquey.

OTOH, the one thing that the rest of the world needs to know about linux kernel developers is that they are always busy. It's not a case of them sitting around wondering what they're going to do next, there's always (AFAICS) something to work on. We can hardly go to them and say "here's a big spec, we expect it built by next Monday" and expect code, let alone a polite response.

Have fun,

Paul

Communicating requirements to kernel developers

Posted Jul 15, 2009 4:25 UTC (Wed) by dlang (✭ supporter ✭, #313) [Link]

in case anyone is wondering, linux kernel does not restrict posts to subscribers

Communicating requirements to kernel developers

Posted Jul 15, 2009 12:21 UTC (Wed) by drag (subscriber, #31333) [Link]

> in case anyone is wondering, linux kernel does not restrict posts to subscribers

The problems don't lie in the filters setup from my SMTP server to the mailing list... the problems lie in the multitude of undocumented restrictions setup between the mailing list's servers and the kernel developer's mail clients.

;)

Communicating requirements to kernel developers

Posted Jul 16, 2009 19:08 UTC (Thu) by jlokier (guest, #52227) [Link]

An educated guess says the TALPA folks got caught on "patently bad design taste" mixed with a dose of "we don't need no steenkin' Windows virus checkers" prejudice. I don't agree with the latter objection. Half of TALPA is just another security module, and there's plenty of those. But regarding design taste, using getsockopt() to read an event queue is asking for criticism on taste alone, and distracts from the important design issues. It shows gross unfamiliarity with unix/Linux culture, which can't be helped but it's a hurdle they'll have to overcome. Aesthetics and taste play an important part.

Communicating requirements to kernel developers

Posted Jul 15, 2009 8:16 UTC (Wed) by dgm (subscriber, #49227) [Link]

Ted Tso's ideas sound about right to me.
It's worth noting that novice and competent non-core Kernel developers are the ones most interested in listening to user space needs. Indeed, changes that have a group of interested users should be more likely to be accepted -or at least discussed- than whitespace fixes.

Communicating requirements to kernel developers

Posted Jul 15, 2009 9:49 UTC (Wed) by jengelh (subscriber, #33263) [Link]

The volume on linux-kernel is far too high for ordinary people to cope with.

That I claim is a problem with developers always cc'ing linux-kernel. If there is a subsystem list on vger — linux-fsdevel, linux-netfilter, you name it — at best only post there.

[Ted's category-4 users]

Hey, I was once, years ago in category-4B too. But the feature I wanted was important enough for me to even do spend time with implementing it myself, and thereby automatically moving to category-3. And that is what I think many category-4 users lack.

cc'ing lkml and keeping up

Posted Jul 15, 2009 12:45 UTC (Wed) by alex (subscriber, #1355) [Link]

As I understand it CC'ing lkml is accepted practice because it means kernel
developers get a heads-up/chance to review if a feature for a sub-system
touches other non sub-system code.

lkml can seem like a fire hose of information but I don't know how many
people actually read all of it and how many rely on filtering it for
interesting topics. Although I subscribe to lkml I only really follow
threads I've marked as interesting and/or involved with. To keep upto date
with the kernel in general I rely on the more usefully condensed information
on our very own LWN Kernel pages and more recently the very useful Kernel
Summary Podcast.

Communicating requirements to kernel developers

Posted Jul 15, 2009 13:01 UTC (Wed) by mjg59 (subscriber, #23239) [Link]

That's pretty unsurprising, given that SubmittingPatches says:

"Unless you have a reason NOT to do so, CC linux-kernel@vger.kernel.org."

Communicating requirements to kernel developers

Posted Jul 18, 2009 21:19 UTC (Sat) by jengelh (subscriber, #33263) [Link]

A reason to spam. Great.

Communicating requirements to kernel developers

Posted Jul 23, 2009 22:28 UTC (Thu) by ariveira (guest, #57833) [Link]

>>The volume on linux-kernel is far too high for ordinary people to cope with.

>That I claim is a problem with developers always cc'ing linux-kernel. If
>there is a subsystem list on vger — linux-fsdevel, linux-netfilter, you
>name it — at best only post there.

Well i have read Ingo Molnar opposing this a lot of times in lkml... he
claims that everything has to be cc'd to lkml (his tipbot does exactly this
and the result is a lot of big duplicated mail/patches on subscriber's
mailboxes)

Communicating requirements to kernel developers

Posted Jul 15, 2009 13:14 UTC (Wed) by MarkWilliamson (guest, #30166) [Link]

Perhaps it could be useful to have a *separate* e-mail list for userspace developers to post on and interact with each other as well as a self-selecting group of kernel developers.

The idea would have to be that kernel developers should sign up to *help* userspace programmers with requests (either with finding a way to proceed, finding a kernel developer who can help, or with understanding why the request is not appropriate). The trouble would be keeping the tone civil and discouraging flamers from flaming / continuing to contribute.

Communication among to userspace/kernel developers

Posted Jul 16, 2009 1:14 UTC (Thu) by petermag (guest, #7550) [Link]

Firstly, I think the model should be based on communications AMONG userspace and kernel developer, not TO the kernel developer.

Secondly, to facilitate this kind of change, instead of showing the code patches, it should be more higher level. It definitely is better to argue and resolve all the discrepancies at the design level, before actually implementing it.

A good example is OpenSolaris' ARC approach:

http://mail.opensolaris.org/pipermail/opensolaris-arc/

I am quite amazed that this way of presenting the specifications, and then followed by implementation has such a long history back - even before it was OpenSource. Those past ARC before OpenSolaris was released is usually not available.

From the above mailing list, one can see that there are even patches/corrections to the specifications before implementation starts, which is much better that patches AFTER the implementation.

Comments?

Communicating requirements to kernel developers

Posted Jul 16, 2009 20:25 UTC (Thu) by clugstj (subscriber, #4020) [Link]

The other thing to remember in all of this "reaching out" to Ted's category 4's is that this category of people in all likelyhood produce the highest percentage of bad ideas.

Communicating requirements to kernel developers

Posted Jul 17, 2009 12:47 UTC (Fri) by sjayaraman (subscriber, #48013) [Link]

On a side note, I have wondered if it is useful if the emails from the mailing list are categorized on subsystem and presented in some form for e.g. Somewhat similar to what lkml.org does, but with categories for e.g. fs, mm, net, suspend etc.
Email filters should help to some extent, one should have to subscribe and handle the other unimportant emails somehow..

Communicating requirements to kernel developers

Posted Jul 20, 2009 19:08 UTC (Mon) by a9db0 (subscriber, #2181) [Link]

I can understand the frustrations of the non-coders. The community is not always the most easy place to navigate, and sometimes the residents are not the most welcoming.

One suggestion for feature-proposers might be that they first run their request by the subsystem maintainer. There they might at least find out if what they need is feasible, and if there's a chance somebody might be able to work on it for/with them.

Another thought is that perhaps the kernel dev process needs an ombudsman of sorts, who can man a virtual information desk, helping folks find their way to getting the features the user needs implemented, much as Greg KH has done with the Linux Driver Project. Not necessarily the guy to do the work, but a navigator to help them to the right people / list.

And no, I'm not volunteering - I would fall into Ted's category 4.

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds