linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: David Zeuthen <david@fubar.dk>
Cc: Kay Sievers <kay.sievers@suse.de>,
	Pekka J Enberg <penberg@cs.Helsinki.FI>, Greg KH <gregkh@suse.de>,
	Adrian Bunk <bunk@stusta.de>, Robert Love <rml@novell.com>,
	Andrew Morton <akpm@osdl.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	John Stultz <johnstul@us.ibm.com>
Subject: Re: 2.6.16-rc4: known regressions
Date: Wed, 22 Feb 2006 09:08:47 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0602220848280.30245@g5.osdl.org> (raw)
In-Reply-To: <1140625103.21517.18.camel@daxter.boston.redhat.com>



On Wed, 22 Feb 2006, David Zeuthen wrote:
> 
> Oh, you know, I don't think that's exactly how it works; HAL is pretty
> much at the mercy of what changes goes into the kernel. And, trust me,
> the changes we need to cope with from your so-called stable API are not
> so nice. 

Why do you "cope"?

Start complaining. If kernel changes screw up something, COMPLAIN. Loudly. 
They shouldn't.

> It also makes me release note that newer HAL releases require newer
> kernel and udev releases and that's alright.

It's _somewhat_ ok to have a well-defined one-way dependency. It's sad, 
but inevitable sometimes.

For example, the kernel does have a dependency on the compiler used to 
compile it. We try to avoid it as far as possible, but we've slowly been 
updating it, first from 1.40 to 2.75 to 2.9x and now to 3.1. But the 
kernel obviously shouldn't have any other run-time dependencies, because 
everything else is "on top of" the kernel.

What is NOT ok is to have a two-way dependency. If user-space HAL code 
depends on a new kernel, that's ok, although I suspect users would hope 
that it wouldn't be "kernel of the week", but more a "kernel of the last 
few months" thing. 

But if you have a TWO-WAY dependency, you're screwed. That means that you 
have to upgrade in lock-step, and that just IS NOT ACCEPTABLE. It's 
horrible for the user, but even more importantly, it's horrible for 
developers, because it means that you can't say "a bug happened" and do 
things like try to narrow it down with bisection or similar.

> For just one example of API breaking see
> 
>  https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=175998

So the kernel obviously shouldn't be just randomly changing the type 
numbers around. 

The _real_ bug seems to be that some people think it is OK to do this kind 
of user-visible changes, without even considering the downstream, or 
indeed, without even telling anybody else (like Andrew or me) about it.

> This breaks stuff for end users in a stable distribution. Not good.

Indeed. Not good at all.

And yes, some of it may be just HAL being a fragile mess, and some of it 
may end up being just user-level code that must be made to be more robust 
("I see a new type I don't understand" "Ok, assume a lowest common 
denominator, and stop whining about it"). 

But a lot of it is definitely some kernel people being _waayy_ too 
cavalier about userspace-visible changes.

> I think maintaining a stable syscall interface makes sense. Didn't you
> once say that only the syscall interface was supposed to be stable? Or
> was that Greg KH? I can't remember...

It's _not_ just system calls. It's any user-visible stuff. That very much 
includes /proc, /sys, and any "kernel pipes" aka netlink etc bytestreams.

What is not stable is the _internal_ data structures. We break external 
modules, and we sometimes break even in-kernel drivers etc with abandon, 
if that is what it takes to fix something or make it prettier.

So fcntl and ioctl numbers etc are _inviolate_, because they are part of 
the system interface. As is /proc and /sys. We don't change them just 
because it's "convenient" to change them in the kernel. 

If /sys needs an extended type to describe the command set of a device, we 
do NOT just change an existing attribute in /sys. 

> And I also think that breaking things like sysfs can be alright as long
> as you coordinate it with major users of it, e.g. udev and HAL.

The major users are USERS. Not developers. It doesn't help to "coordinate" 
things, when what gets screwed is the end-user who no longer can upgrade 
his kernel without worrying that something might break.

THIS IS WHY WE MUST MAKE THE KERNEL INTERFACES STABLE!

If users cannot upgrade their kernels safely, we will have two totally
unacceptable end results:

 - users won't upgrade. They don't dare to, because it's too painful, and 
   they don't understand HAL or hotplug, or whatever. 

   If a developer cannot see that this is unacceptable, then that 
   developer is a nincompoop and needs to be educated.

 - users upgrade, and generate bug reports and waste other developers time 
   because those other developers didn't realize that the HAL cabal had 
   decided that that breakage was "ok".

   Or worse, they don't generate the bug reports, and then six months from 
   now, when they test again, and it's still broken, they generate a 
   really bad one ("it doesn't work") when everybody - including the HAL 
   cabal - has forgotten what it was all about.

   Again, if a developer cannot see that this is unacceptable, then that 
   developer is not playing along, and needs to have his mental compass 
   re-oriented.

The fact is, regressions are about 10x more costly than fixing old bugs. 
They cause problems downstream that just waste everybodys time. It's a 
_hell_ of a lot more efficient to spend extra time to keep old interfaces 
stable than it is to cause regressions.

> One day perhaps sysfs will be "just right" and you can mark it as being
> stable. I just don't think we're there yet. And I see no reason
> whatsoever to paint things as black and white as you do.

Nothing will _ever_ be "just right", and this has been going on too long. 
We had better get our act together.

		Linus

  parent reply	other threads:[~2006-02-22 17:12 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-17 22:45 Linux 2.6.16-rc4 Linus Torvalds
2006-02-17 23:14 ` 2.6.16-rc4: known regressions Adrian Bunk
2006-02-19 11:06   ` Pekka Enberg
2006-02-19 14:54     ` Adrian Bunk
2006-02-19 17:50       ` Pekka Enberg
2006-02-19 21:14       ` Pekka Enberg
2006-02-20  1:02         ` Greg KH
2006-02-20  7:08           ` Pekka J Enberg
2006-02-21 22:51           ` Pekka Enberg
2006-02-21 22:57             ` Kay Sievers
2006-02-21 23:33               ` Andrew Morton
2006-02-22  0:04                 ` Kay Sievers
2006-02-22  0:15                   ` Mark Lord
2006-02-22  0:21                   ` Andrew Morton
2006-02-22  0:34                     ` Linus Torvalds
2006-02-22  0:46                       ` Con Kolivas
2006-02-22  1:06                       ` Linus Torvalds
2006-02-22 11:21                         ` Theodore Ts'o
2006-02-22 14:25                           ` uswsusp & initrd -- was " Pavel Machek
2006-02-22 15:48                           ` Joel Becker
2006-02-22 16:25                             ` Theodore Ts'o
2006-02-22 17:33                               ` Gabor Gombas
2006-02-22 17:57                                 ` Linus Torvalds
2006-02-22 18:37                                   ` Christian Trefzer
2006-02-22 18:59                                 ` Joel Becker
2006-02-22 19:18                                   ` Greg KH
2006-02-22 19:29                                     ` Arjan van de Ven
2006-02-22 19:40                                       ` Greg KH
2006-02-22 20:45                                         ` Jens Axboe
2006-02-22 22:51                                           ` Greg KH
2006-02-23  6:39                                             ` Jens Axboe
2006-02-23 17:29                                         ` Martin Bligh
2006-02-23 17:52                                           ` Greg KH
2006-02-23 18:01                                             ` Martin Bligh
2006-02-23 18:04                                             ` Arjan van de Ven
2006-02-23 20:26                                         ` Benjamin LaHaise
2006-02-24 23:42                                         ` Eric W. Biederman
2006-02-22 19:39                                     ` Linus Torvalds
2006-02-22 19:54                                   ` Andrew Morton
2006-02-22 20:02                                     ` Arjan van de Ven
2006-02-22 20:12                                     ` Linus Torvalds
2006-02-22 20:44                                       ` Andrew Morton
2006-02-22 20:26                                     ` Greg KH
2006-02-23  5:28                                       ` Jody McIntyre
2006-02-22 20:57                                     ` Diego Calleja
2006-02-22 21:19                                     ` Russell King
2006-02-22 21:30                                       ` Greg KH
2006-02-22 20:47                             ` Bryan O'Sullivan
2006-02-22 19:07                           ` Greg KH
2006-02-22 17:06                         ` Matthias Andree
2006-02-23 12:36                         ` Paulo Marques
2006-02-22 10:49                   ` Diego Calleja
2006-02-22  7:06               ` Pekka J Enberg
2006-02-22 15:27                 ` Kay Sievers
2006-02-22 15:44                   ` Linus Torvalds
2006-02-22 16:03                     ` Arjan van de Ven
2006-02-22 16:11                       ` Christoph Hellwig
2006-02-22 17:17                         ` sysfs regressions (was: 2.6.16-rc4: known regressions) Matthias Andree
2006-02-22 17:47                           ` Greg KH
2006-02-22 16:18                     ` 2.6.16-rc4: known regressions David Zeuthen
2006-02-22 16:35                       ` Christoph Hellwig
2006-02-22 16:46                         ` David Zeuthen
2006-02-22 16:51                           ` Christoph Hellwig
2006-02-22 17:08                       ` Linus Torvalds [this message]
2006-02-22 17:31                         ` Linus Torvalds
2006-02-22 18:04                           ` Al Viro
2006-02-23  3:01                             ` John Stoffel
2006-02-22 17:51                         ` Al Viro
2006-02-22 17:55                           ` Christoph Hellwig
2006-02-22 18:10                             ` Al Viro
2006-02-22 19:25                         ` David Zeuthen
2006-02-22 17:10                       ` Al Viro
2006-02-22 17:10                       ` grundig
2006-02-22 17:14                       ` Martin Bligh
2006-02-23  4:17                         ` Theodore Ts'o
2006-02-22 18:10                   ` Pekka Enberg
2006-02-22  8:28               ` Arjan van de Ven
2006-02-17 23:27 ` Linux 2.6.16-rc4 Nigel Cunningham
2006-02-18  8:59 ` Edmondo Tommasina
2006-02-18  9:19   ` Gene Heskett
2006-02-18 10:20     ` Con Kolivas
2006-02-18 11:26       ` Gene Heskett
2006-02-18 16:04 ` Jean Delvare
2006-02-22 22:02 ` Linux 2.6.16-rc4 edac oops Mark Rustad
2006-02-24 11:09   ` Andrew Morton
2006-02-22  2:39 2.6.16-rc4: known regressions Yu, Luming
2006-02-22  3:16 ` Adrian Bunk
2006-02-22  6:55 Yu, Luming
2006-02-22 12:23 ` Adrian Bunk

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=Pine.LNX.4.64.0602220848280.30245@g5.osdl.org \
    --to=torvalds@osdl.org \
    --cc=akpm@osdl.org \
    --cc=bunk@stusta.de \
    --cc=david@fubar.dk \
    --cc=gregkh@suse.de \
    --cc=johnstul@us.ibm.com \
    --cc=kay.sievers@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penberg@cs.Helsinki.FI \
    --cc=rml@novell.com \
    /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;
as well as URLs for NNTP newsgroup(s).