Participating in the kernel development...
Transcript of Participating in the kernel development...
Participating in the kernel development process
(With a minimum of pain)
Jonathan CorbetLWN.net
What we'll talk about
An introduction to the kernel communityWhy be a part of it?The Kernel ReportLicensing, copyright, and lawyersSome overall principlesThe mechanics of kernel contributionHints 1: ProcessHints 2: CodeToolsConclusion
Questions?
Ask anytime!
About your speaker
Kernel hacker since 1980Linux since 1993Co-founded LWN in 1998Co-author of Linux Device DriversMaintainer: cafe-ccic, ov7670, and via-camera
driversAuthor: Documentation/development-processKernel Summit program committee memberLinux Foundation Technical Advisory Board memberWorldwide speaker on Linux kernel topics
What is the kernel?
The kernel...Makes the hardware workManages processesEnforces securityCommunicates with other systemsImplements filesystems...
Kernel programming is unique
Kernel programming is unique
Low-level programming environment(No C library)
Kernel programming is unique
Low-level programming environment(No C library)
Failures are catastrophicDeath of process at the minimumSystem failure or security breach often results
Kernel programming is unique
Low-level programming environment(No C library)
Failures are catastrophicDeath of process at the minimumSystem failure or security breach often results
Performance is critical
Kernel programming is unique
Low-level programming environment(No C library)
Failures are catastrophicDeath of process at the minimumSystem failure or security breach often results
Performance is criticalHigh degree of concurrency
Kernel programming is unique
Low-level programming environment(No C library)
Failures are catastrophicDeath of process at the minimumSystem failure or security breach often results
Performance is criticalHigh degree of concurrencyWide range of target platforms
SupercomputersDesktopsTelephones
Kernel programming is unique
Low-level programming environment(No C library)
Failures are catastrophicDeath of process at the minimumSystem failure or security breach often results
Performance is criticalHigh degree of concurrencyWide range of target platforms
SupercomputersDesktopsTelephones
Large, complex code base (>8M lines of code)
Kernel programming is unique
Low-level programming environment(No C library)
Failures are catastrophicDeath of process at the minimumSystem failure or security breach often results
Performance is criticalHigh degree of concurrencyWide range of target platforms
SupercomputersDesktopsTelephones
Large, complex code base (>8M lines of code)Huge, active development community
Developers contributing to each kernel release
Release Developers2.6.33 1,1502.6.34 1,1102.6.35 1,1882.6.36 1,1762.6.37 1,2762.6.38 1,136
2.6.34 through 2.6.38-rc7(Feb 25, 2010 to March 6, 2011)
Four major kernel releases (+ one in progress)
49,100 distinct changes merged(131 changes/day, every day)
1.3 million lines added(3,475 lines per day)
2,826 developers involved
About those 2,826 developers
...they work for 326 companies that we have been able to identify.
Who those developers work for
nobody 17.6%Red Hat 11.7%unknown 7.7%Intel 6.7%Novell 4.8%IBM 3.7%Nokia 2.3%Consultants 2.2%Texas Inst. 2.2%Oracle 1.7%AMD 1.6%
Samsung 1.5%academics 1.4%Fujitsu 1.4%Renesas Tech. 1.4%Pengutronix 1.3%Google 1.2%Broadcom 1.1%Atheros 1.1%Analog Devices 1.1%Wolfson Micro 1.0%New Dream Net 1.0%
In other words
Over 75% of kernel patches come from people paid for their work
In other words
Over 75% of kernel patches come from people paid for their work
Linux is not the product of kids working in their parents' basements
In other words
Over 75% of kernel patches come from people paid for their work
Linux is not the product of kids working in their parents' basements
These companies have solid reasons for contributing to the kernel
In other words
Over 75% of kernel patches come from people paid for their work
Linux is not the product of kids working in their parents' basements
These companies have solid reasons for contributing to the kernel
They have found ways to contribute successfully.
One other note
Very few kernel developers do it full time
If development projects are communities...
...the kernel is a large city
Getting around in the city is not hard
...once you know how it works.
28
Otherwise...
“So, I've had enough. I'm out of here forever. I want to leave before I get so disgruntled that I end up using Windows. I may play occasionally with userspace code but for me the kernel is a black hole that I don't want to enter the event horizon of again”
-- Con Kolivas
29
So why bother?
30
Why?
The kernel is the core of a Linux system
31
Why?
It's how you get the kernel to meet your needs
“Well, this is open source... you don't get to request new features, you get to implement them”
-- James Bottomley
32
Why?
Out-of-tree code is lower quality code
33
Why?
In-tree code can be improved by others
Why?
You'll make your users and customers happy
35
Why?
Out-of-tree code is expensive
Google's code costs
300,000 lines of code1200 patches30 full-time kernel engineers
http://lwn.net/Articles/357658/
Why so expensive?
The kernel is a moving target
Duplicated workOften incompatible with in-tree solutions
Nobody will help you maintain out-of-tree code
No design guidance from the community
...
Fun
41
Why?
That is how our community works
Questions?