Participating in the kernel development...

Post on 16-Jul-2020

4 views 0 download

Transcript of Participating in the kernel development...

Participating in the kernel development process

(With a minimum of pain)

Jonathan CorbetLWN.net

corbet@lwn.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?