From: Linus Torvalds <torvalds@linux-foundation.org>
To: Adrian Bunk <bunk@stusta.de>
Cc: Oleg Verych <olecom@flower.upol.cz>,
Debbugs developers <debian-debbugs@lists.debian.org>,
Martin Bligh <mbligh@mbligh.org>,
Natalie Protasevich <protasnb@gmail.com>,
"Fortier,Vincent [Montreal]" <Vincent.Fortier1@ec.gc.ca>,
Andrew Morton <akpm@linux-foundation.org>,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
Michal Piotrowski <michal.k.k.piotrowski@gmail.com>,
Andi Kleen <andi@firstfloor.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Diego Calleja <diegocg@gmail.com>,
Chuck Ebbert <cebbert@redhat.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: This is [Re:] How to improve the quality of the kernel[?].
Date: Tue, 19 Jun 2007 08:01:19 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.0.98.0706190732150.3593@woody.linux-foundation.org> (raw)
In-Reply-To: <20070619124855.GB12950@stusta.de>
On Tue, 19 Jun 2007, Adrian Bunk wrote:
>
> The goal is to get all patches for a maintained subsystem submitted to
> Linus by the maintainer.
Well, to be honest, I've actually over the years tried to have a policy of
*never* really having black-and-white policies.
The fact is, some maintainers are excellent. All the relevant patches
*already* effectively go through them.
But at the same time, other maintainers are less than active, and some
areas aren't clearly maintained at all.
Also, being a maintainer often means that you are busy and spend a lot of
time talking to *people* - it doesn't necessarily mean that you actually
have the hardware and can test things, nor does it necessarily mean that
you know every detail.
So I point out in Documentation/ManagementStyle (which is written very
much tongue-in-cheek, but at the same time it's really *true*) that
maintainership is often about recognizing people who just know *better*
than you!
> The -mm kernel already implements what your proposed PTS would do.
>
> Plus it gives testers more or less all patches currently pending
> inclusion into Linus' tree in one kernel they can test.
>
> The problem are more social problems like patches Andrew has never heard
> of before getting into Linus' tree during the merge window.
Not really. The "problem" boils down to this:
[torvalds@woody linux]$ git-rev-list --all --since=100.days.ago | wc -l
7147
[torvalds@woody linux]$ git-rev-list --no-merges --all --since=100.days.ago | wc -l
6768
ie over the last hundred days, we have averaged over 70 changes per day,
and even ignoring merges and only looking at "pure patches" we have more
than an average of 65 patches per day. Every day. Day in and day out.
That translates to five hundred commits a week, two _thousand_ commits per
month, and 25 thousand commits per year. As a fairly constant stream.
Will mistakes happen? Hell *yes*.
And I'd argue that any flow that tries to "guarantee" that mistakes don't
happen is broken. It's a sure-fire way to just frustrate people, simply
because it assumes a level of perfection in maintainers and developers
that isn't possible.
The accepted industry standard for bug counts is basically one bug per a
thousand lines of code. And that's for released, *debugged* code.
Yes, we should aim higher. Obviously. Let's say that we aim for 0.1 bugs
per KLOC, and that we actually aim for that not just in _released_ code,
but in patches.
What does that mean?
Do the math:
git log -M -p --all --since=100.days.ago | grep '^+' | wc -l
That basically takes the last one hundred days of development, shows it
all as patches, and just counts the "new" lines. It takes about ten
seconds to run, and returns 517252 for me right now.
That's *over*half*a*million* lines added or changed!
And even with the expectation that we do ten times better than what is
often quoted as an industry average, and even with the expectation that
this is already fully debugged code, that's at least 50 bugs in the last
one hundred days.
Yeah, we can be even more stringent, and actually subtract the number of
lines _removed_ (274930), and assume that only *new* code contains bugs,
and that's still just under a quarter million purely *added* lines, and
maybe we'd expect just new 24 bugs in the last 100 days.
[ Argument: some of the old code also contained bugs, so the lines added
to replace it balance out. Counter-argument: new code is less well
tested by *definition* than old code, so.. Counter-counter-argument: the
new code was often added to _fix_ a bug, so the code removed had an even
_higher_ bug rate than normal code..
End result? We don't know. This is all just food for thought. ]
So here's the deal: even by the most *stringent* reasonable rules, we add
a new bug every four days. That's just something that people need to
accept. The people who say "we must never introduce a regression" aren't
living on planet earth, they are living in some wonderful world of
Blarney, where mistakes don't happen, developers are perfect, hardware is
perfect, and maintainers always catch things.
> The problem is that most problems don't occur on one well-defined
> kind of hardware - patches often break in exactly the areas the patch
> author expected no problems in.
Note that the industry-standard 1-bug-per-kloc thing has nothing to do
with hardware. Somebody earlier in this thread (or one of the related
ones) said that "git bisect is only valid for bugs that happen due to
hardware issues", which is just totally *ludicrous*.
Yes, hardware makes it harder to test, but even *without* any hardware-
specific issues, bugs happen. The developer just didn't happen to trigger
the condition, or didn't happen to notice it when he *did* trigger it.
So don't go overboard about "hardware". Yes, hardware-specific issues have
their own set of problems, and yes, drivers have a much higher incidence
of bugs per KLOC, but in the end, even *without* that, you'd still have to
face the music. Even for stuff that isn't drivers.
So this whole *notion* that you can get it right the first time is
*insane*.
We should aim for doing well, yes.
But quite frankly, anybody who aims for "perfect" without taking reality
into account is just not realistic. And if that's part of the goal of some
"new process", then I'm not even interested in listening to people discuss
it.
If this plan cannot take reality into account, please stop Cc'ing me. I'm
simply not interested.
Any process that tries to "guarantee" that regressions don't happen is
crap. Any process that tries to "guarantee" that we release only kernels
without bugs can go screw itself. There's one thing I _can_ guarantee, and
that's as long as we add a quarter million new lines per 100 days (and
change another quarter million lines), we will have new bugs.
No ifs, buts or maybe's about it.
The process should aim for making them *fewer*. But any process that aims
for total eradication of new bugs will result in one thing, and one thign
only: we won't be getting any actual work done.
The only way to guarantee no regressions is to make no progress.
Linus
next prev parent reply other threads:[~2007-06-19 15:04 UTC|newest]
Thread overview: 278+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-26 3:29 Linux 2.6.21 Linus Torvalds
2007-04-26 4:08 ` Adrian Bunk
2007-04-26 4:38 ` Dave Jones
2007-04-26 5:02 ` Greg KH
2007-04-26 5:44 ` Nick Piggin
2007-04-26 5:04 ` Willy Tarreau
2007-04-26 6:28 ` Jeff Chua
2007-04-26 6:46 ` Daniel Barkalow
2007-04-26 8:03 ` Oliver Neukum
2007-04-26 12:32 ` Adrian Bunk
2007-04-26 8:42 ` Soeren Sonnenburg
2007-04-26 9:20 ` Jens Axboe
2007-04-26 10:44 ` Jesper Juhl
2007-04-26 12:58 ` Adrian Bunk
2007-04-26 15:47 ` Linus Torvalds
2007-04-26 16:59 ` Adrian Bunk
2007-04-26 17:20 ` Linus Torvalds
2007-04-26 17:48 ` Adrian Bunk
2007-04-26 18:37 ` Krzysztof Halasa
2007-04-26 18:45 ` Adrian Bunk
2007-04-26 19:55 ` Krzysztof Halasa
2007-04-26 21:34 ` Mel Gorman
2007-04-26 19:11 ` Stephen Clark
2007-04-27 17:14 ` Michael Tokarev
2007-04-27 19:35 ` Stefan Richter
2007-04-28 20:44 ` Krzysztof Halasa
2007-04-26 20:50 ` Alan Cox
2007-04-27 14:58 ` Adrian Bunk
2007-04-27 16:31 ` Theodore Tso
2007-04-27 19:46 ` Adrian Bunk
2007-04-27 20:23 ` Stephen Clark
2007-04-28 12:51 ` Markus Rechberger
2007-04-27 21:17 ` Bill Davidsen
2007-04-26 17:02 ` Chuck Ebbert
2007-04-26 18:13 ` Diego Calleja
2007-04-26 18:42 ` Linus Torvalds
2007-04-26 20:41 ` Diego Calleja
2007-04-26 21:13 ` Linus Torvalds
2007-04-27 9:33 ` Marek Wawrzyczny
2007-04-28 19:08 ` Martin J. Bligh
2007-04-28 22:11 ` Neil Brown
2007-04-28 22:33 ` Adrian Bunk
2007-04-28 22:42 ` Neil Brown
2007-04-28 23:14 ` Rafael J. Wysocki
2007-04-29 0:17 ` Linus Torvalds
2007-04-29 3:03 ` Andrew Morton
2007-04-29 0:07 ` Linus Torvalds
2007-04-29 3:28 ` Andrew Morton
2007-04-28 19:53 ` Adrian Bunk
[not found] ` <alpine.LFD.0.98.0704281529080. 9964@woody.linux-foundation.org>
2007-04-28 20:27 ` Russell King
2007-04-28 21:43 ` irks with bugzilla (was Re: Linux 2.6.21) Stefan Richter
2007-04-28 22:49 ` Linux 2.6.21 Adrian Bunk
2007-04-28 23:29 ` Linus Torvalds
2007-04-29 13:15 ` Andi Kleen
2007-04-29 16:07 ` Linus Torvalds
2007-04-29 16:34 ` Stefan Richter
2007-04-29 16:49 ` Rafael J. Wysocki
2007-04-29 17:37 ` Andi Kleen
2007-04-29 17:50 ` Linus Torvalds
2007-06-14 6:29 ` regression tracking (Re: Linux 2.6.21) Oleg Verych
2007-06-14 15:33 ` Stefan Richter
2007-06-14 16:39 ` Oleg Verych
2007-06-14 16:36 ` Stefan Richter
2007-06-14 17:30 ` Adrian Bunk
2007-06-14 20:33 ` Oleg Verych
2007-06-14 20:46 ` Adrian Bunk
2007-06-15 23:20 ` Linus Torvalds
2007-06-15 23:42 ` Adrian Bunk
2007-06-16 1:32 ` Oleg Verych
2007-06-16 2:55 ` Adrian Bunk
2007-06-16 5:03 ` Oleg Verych
2007-06-16 13:25 ` Adrian Bunk
2007-06-16 12:23 ` Stefan Richter
2007-06-16 12:54 ` Michal Piotrowski
2007-06-17 0:44 ` Adrian Bunk
2007-06-17 9:41 ` [PATCH] (Re: regression tracking (Re: Linux 2.6.21)) Michal Piotrowski
2007-06-17 9:55 ` Andrew Morton
2007-06-17 10:22 ` Michal Piotrowski
2007-06-17 11:47 ` Oleg Verych
2007-06-17 12:13 ` Rafael J. Wysocki
2007-06-17 14:24 ` Oleg Verych
2007-06-17 14:48 ` Adrian Bunk
2007-06-17 17:44 ` david
2007-06-17 21:23 ` Oleg Verych
2007-06-17 12:01 ` Rafael J. Wysocki
2007-06-17 12:45 ` Adrian Bunk
2007-06-17 13:17 ` Michal Piotrowski
2007-06-17 14:02 ` Stefan Richter
2007-06-17 14:29 ` How to improve the quality of the kernel? Adrian Bunk
2007-06-17 16:15 ` Michal Piotrowski
2007-06-17 16:26 ` Stefan Richter
2007-06-17 16:47 ` Michal Piotrowski
2007-06-17 18:24 ` Adrian Bunk
2007-06-17 18:44 ` Stefan Richter
2007-06-17 18:50 ` Natalie Protasevich
2007-06-22 12:01 ` Markus Rechberger
2007-06-22 14:19 ` Stefan Richter
2007-06-22 15:25 ` Oleg Verych
2007-06-17 17:31 ` Rafael J. Wysocki
2007-06-17 17:42 ` Natalie Protasevich
2007-06-17 18:16 ` Rafael J. Wysocki
2007-06-17 19:31 ` Adrian Bunk
2007-06-17 18:53 ` Bartlomiej Zolnierkiewicz
2007-06-17 18:52 ` Andrew Morton
2007-06-17 19:18 ` Rafael J. Wysocki
2007-06-17 19:33 ` Carlo Wood
2007-06-17 20:00 ` Stefan Richter
2007-06-17 20:10 ` Michal Piotrowski
2007-06-17 21:49 ` Bartlomiej Zolnierkiewicz
2007-06-17 23:15 ` Stefan Richter
2007-06-18 0:22 ` Bartlomiej Zolnierkiewicz
2007-06-18 0:32 ` Stefan Richter
2007-06-18 5:09 ` Andrew Morton
2007-06-18 13:23 ` Fortier,Vincent [Montreal]
2007-06-18 22:31 ` Natalie Protasevich
2007-06-18 22:41 ` Martin Bligh
2007-06-18 22:56 ` Natalie Protasevich
2007-06-18 23:59 ` Martin Bligh
2007-06-19 0:09 ` Linus Torvalds
2007-06-19 0:24 ` Natalie Protasevich
2007-06-19 0:42 ` Martin Bligh
2007-06-19 0:55 ` Natalie Protasevich
2007-06-19 1:10 ` Martin Bligh
2007-06-19 4:06 ` This is [Re:] How to improve the quality of the kernel[?] Oleg Verych
2007-06-19 12:48 ` Adrian Bunk
2007-06-19 14:05 ` Oleg Verych
2007-06-19 14:27 ` Stefan Richter
2007-06-19 15:47 ` Oleg Verych
2007-06-19 17:50 ` Stefan Richter
2007-06-19 18:56 ` Oleg Verych
2007-06-19 19:21 ` Stefan Richter
2007-06-19 15:04 ` Adrian Bunk
2007-06-19 15:08 ` Stefan Richter
2007-06-19 17:14 ` Oleg Verych
2007-06-19 15:01 ` Linus Torvalds [this message]
2007-06-19 16:53 ` Oleg Verych
2007-06-19 17:04 ` Linus Torvalds
2007-06-19 17:37 ` Natalie Protasevich
2007-06-19 17:51 ` Oleg Verych
2007-06-21 23:51 ` Adrian Bunk
2007-06-21 23:59 ` Linus Torvalds
2007-06-22 0:16 ` Adrian Bunk
2007-06-21 23:48 ` Adrian Bunk
2007-06-19 13:30 ` Don Armstrong
2007-06-19 1:51 ` How to improve the quality of the kernel? Fortier,Vincent [Montreal]
2007-06-19 2:27 ` Natalie Protasevich
2007-06-19 11:06 ` Stefan Richter
2007-06-17 23:15 ` Rafael J. Wysocki
2007-06-18 1:04 ` Bartlomiej Zolnierkiewicz
2007-06-17 18:54 ` Michal Piotrowski
2007-06-19 0:28 ` regression tracking (Re: Linux 2.6.21) Martin Bligh
2007-06-19 14:49 ` Rafael J. Wysocki
2007-06-19 17:27 ` Martin J. Bligh
2007-04-29 18:50 ` Linux 2.6.21 Rafael J. Wysocki
2007-04-29 18:58 ` Linus Torvalds
2007-04-29 19:14 ` Andi Kleen
2007-04-29 20:18 ` Rafael J. Wysocki
2007-04-29 20:43 ` Adrian Bunk
2007-04-29 22:00 ` Rafael J. Wysocki
2007-04-29 22:00 ` Adrian Bunk
2007-04-29 23:14 ` Rafael J. Wysocki
2007-04-29 20:52 ` Alexey Dobriyan
2007-04-29 22:09 ` Rafael J. Wysocki
2007-04-30 6:30 ` Andrew Morton
2007-04-30 23:08 ` Rafael J. Wysocki
2007-05-04 18:18 ` Bugzilla (was Linux 2.6.21) Martin J. Bligh
2007-04-30 5:43 ` Linux 2.6.21 Willy Tarreau
2007-04-29 17:35 ` Andi Kleen
2007-04-29 17:47 ` Linus Torvalds
2007-04-29 18:09 ` Andi Kleen
2007-04-29 18:47 ` Linus Torvalds
2007-04-29 18:59 ` Rafael J. Wysocki
2007-04-29 19:31 ` Russell King
2007-04-29 19:40 ` Diego Calleja
2007-04-29 19:51 ` Michal Piotrowski
2007-04-30 1:50 ` Gene Heskett
2007-04-30 4:54 ` Bernd Eckenfels
2007-04-30 5:06 ` Gene Heskett
2007-04-29 20:17 ` Adrian Bunk
2007-04-29 20:33 ` Linus Torvalds
2007-04-29 21:05 ` Adrian Bunk
2007-04-29 21:24 ` Linus Torvalds
2007-04-30 7:45 ` Anton Altaparmakov
2007-04-30 18:09 ` Adrian Bunk
2007-04-30 18:20 ` Linus Torvalds
2007-04-30 18:27 ` Linus Torvalds
2007-04-30 18:57 ` Adrian Bunk
2007-04-30 19:25 ` Vegard Nossum
2007-04-29 22:36 ` Johannes Stezenbach
2007-04-29 23:18 ` Indan Zupancic
2007-04-29 23:41 ` Johannes Stezenbach
2007-04-30 0:05 ` Indan Zupancic
2007-04-30 7:54 ` Matthias Andree
2007-04-29 20:56 ` Diego Calleja
2007-04-29 21:10 ` Adrian Bunk
2007-04-29 21:16 ` Michal Piotrowski
2007-04-29 21:21 ` Adrian Bunk
2007-04-29 21:26 ` Michal Piotrowski
2007-04-29 21:52 ` Thomas Gleixner
2007-04-29 22:19 ` Adrian Bunk
2007-04-29 22:33 ` Thomas Gleixner
2007-04-29 22:37 ` Andi Kleen
2007-04-29 22:48 ` Michal Piotrowski
2007-04-29 23:09 ` Andi Kleen
2007-04-29 22:42 ` Adrian Bunk
2007-04-29 22:57 ` Michal Piotrowski
2007-04-29 21:51 ` Diego Calleja
2007-04-29 23:19 ` Rafael J. Wysocki
2007-04-29 21:29 ` Francois Romieu
2007-05-02 19:59 ` Lennart Sorensen
2007-04-29 20:01 ` David Miller
2007-04-29 21:26 ` Andi Kleen
2007-04-29 21:41 ` David Miller
2007-04-29 22:15 ` Andi Kleen
2007-04-29 20:38 ` Simon Arlott
2007-04-30 7:34 ` Matthias Andree
2007-04-29 23:55 ` Theodore Tso
2007-04-30 0:13 ` Dave Jones
2007-04-30 1:14 ` Björn Steinbrink
2007-04-30 1:31 ` Andi Kleen
2007-04-30 5:02 ` Kyle Moffett
2007-04-30 7:59 ` Johannes Stezenbach
2007-04-30 16:51 ` David Lang
2007-04-29 7:34 ` Russell King
2007-04-28 22:33 ` Linus Torvalds
2007-04-28 22:58 ` Markus Rechberger
2007-04-28 23:40 ` Linus Torvalds
2007-04-29 0:05 ` Adrian Bunk
2007-04-29 21:27 ` Dave Jones
2007-04-29 21:27 ` David Lang
2007-04-29 22:09 ` Adrian Bunk
2007-04-29 0:20 ` Bob Tracy
2007-04-29 0:40 ` Markus Rechberger
2007-04-29 0:28 ` Markus Rechberger
2007-04-29 3:40 ` David Miller
2007-04-29 6:43 ` David Lang
2007-04-29 9:34 ` Stefan Richter
2007-04-29 9:40 ` Stefan Richter
2007-04-29 6:01 ` Willy Tarreau
2007-04-29 9:53 ` Stefan Richter
2007-04-29 7:37 ` Russell King
2007-04-28 23:04 ` Adrian Bunk
2007-04-28 23:58 ` Linus Torvalds
2007-04-29 3:41 ` David Miller
2007-04-29 8:44 ` Thomas Gleixner
2007-04-30 18:13 ` Borislav Petkov
2007-04-26 17:39 ` Bill Davidsen
2007-04-26 17:44 ` Linus Torvalds
2007-04-27 21:14 ` Bill Davidsen
2007-04-26 23:32 ` Thomas Gleixner
2007-04-27 0:22 ` Linus Torvalds
2007-04-27 23:08 ` Daniel Barkalow
2007-04-26 17:23 ` Bill Davidsen
2007-04-26 18:04 ` Jeff Garzik
2007-04-26 18:36 ` Adrian Bunk
2007-04-26 18:58 ` Francois Romieu
2007-04-26 19:13 ` Jeff Garzik
2007-04-26 19:19 ` Adrian Bunk
2007-04-26 19:43 ` Stephen Clark
2007-04-26 19:43 ` Francois Romieu
2007-04-26 19:53 ` Stephen Clark
[not found] ` <4630FC6C.6070902@seclark.us>
[not found] ` <4630FE8D.6090900@garzik.org>
2007-04-26 19:48 ` Stephen Clark
2007-04-27 15:22 ` Stephen Clark
2007-04-26 19:13 ` Adrian Bunk
2007-04-26 19:14 ` Stephen Clark
2007-04-26 19:32 ` Jeff Garzik
2007-04-26 21:02 ` Gene Heskett
2007-04-26 21:02 ` Gene Heskett
2007-04-27 21:36 ` Bill Davidsen
2007-04-26 6:30 ` Jan De Luyck
2007-04-26 8:23 ` Marat Buharov
2007-04-27 6:30 ` Jan Engelhardt
2007-04-26 8:35 ` Jan Engelhardt
2007-04-26 16:40 ` Linus Torvalds
2007-04-26 19:02 ` Willy Tarreau
2007-04-27 4:08 ` Mike Galbraith
2007-04-26 19:57 ` Jan Engelhardt
2007-04-26 21:59 ` Mel Gorman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.0.98.0706190732150.3593@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=Vincent.Fortier1@ec.gc.ca \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=bunk@stusta.de \
--cc=bzolnier@gmail.com \
--cc=cebbert@redhat.com \
--cc=debian-debbugs@lists.debian.org \
--cc=diegocg@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mbligh@mbligh.org \
--cc=michal.k.k.piotrowski@gmail.com \
--cc=olecom@flower.upol.cz \
--cc=protasnb@gmail.com \
--cc=rjw@sisk.pl \
--cc=stefanr@s5r6.in-berlin.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®