Commentary

Serdar Yegulalp
 

Wanna Be A Kernel Guy? Here's How

Contributing code to the Linux kernel probably seems about as easy as, say, reading the entire Buddhist canon in its original Pali. Now there's a how-to guide, written in plain English, about how exactly to go about being a "kernel guy."

Contributing code to the Linux kernel probably seems about as easy as, say, reading the entire Buddhist canon in its original Pali. Now there's a how-to guide, written in plain English, about how exactly to go about being a "kernel guy."


More Software Insights

White Papers

More >>

Reports

More >>

Webcasts

More >>

Written by Jon Corbet (himself a kernel contributor) and entitled "How to Participate in the Linux Community", the guide's been offered under the aegis of the Linux Foundation's Linux Developer Network. It's not a programming guide, since that subject is covered in far greater detail by any number of other books and tutorials. Instead, it's about the etiquette and protocol of kernel submissions -- something that's often just as hard, if not harder, than the code itself.

The guide steps a prospective kernel developer/contributor through the process of not just submitting a prospective kernel change but making sure that all the ducks are in a row long before. There's a lot of emphasis on figuring out exactly what problem you are trying to solve before you write a single line of code, the better to avoid wasted effort that might only have to be scrapped and restarted later on.

There's been a lot of talk about how tough it is to get changes accepted into the kernel mainline -- e.g., the (to put it mildly) rough-and-tumble attitude that folks take on the kernel mailing list. "Don't waste our time" and "This won't work the way you want it to" are two common criticismS levied against potential contributors. One example, quoted from the guide:

... some years ago, developers working with Linux audio sought a way to run applications without dropouts or other artifacts caused by excessive latency in the system. The solution they arrived at was a kernel module intended to hook into the Linux Security Module (LSM) framework; this module could be configured to give specific applications access to the realtime scheduler. This module was implemented and sent to the linux-kernel mailing list, where it immediately ran into problems.

To the audio developers, this security module was sufficient to solve their immediate problem. To the wider kernel community, though, it was seen as a misuse of the LSM framework (which is not intended to confer privileges onto processes which they would not otherwise have) and a risk to system stability. Their preferred solutions involved realtime scheduling access via the rlimit mechanism for the short term, and ongoing latency reduction work in the long term.

The audio community, however, could not see past the particular solution they had implemented; they were unwilling to accept alternatives. The resulting disagreement left those developers feeling disillusioned with the entire kernel development process ...

The most important thing I'm gleaning from this anecdote is how the kernel folks and the audio developers were seeing the whole thing from two entirely different perspectives. The audio folks were worried about their corner of the world; the kernel staff had to worry about everything. It's not easy for people focused on one problem alone to keep that in mind, but that's the point of documentation like this: to give a broader perspective on a process that's normally only seen through one keyhole at a time.


Related Reading




Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

InformationWeek encourages readers to engage in spirited, healthy debate, including taking us to task. However, InformationWeek moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing/SPAM. InformationWeek further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
T-Shirt Giveaway T-Shirt Giveaway: Each week we're selecting one great comment from our readers. The author of the comment will receive an InformaitonWeek Community t-shirt. So get posting!
Subscribe to RSS

Resource Links