public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@MIT.EDU>
To: Greg KH <greg@kroah.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Jeff Garzik <jeff@garzik.org>, David Miller <davem@davemloft.net>,
	arjan@infradead.org, sfr@canb.auug.org.au,
	linux-kernel@vger.kernel.org, linux-next@vger.kernel.org,
	linux-arch@vger.kernel.org, akpm@linux-foundation.org
Subject: Re: Announce: Linux-next (Or Andrew's dream :-))
Date: Tue, 12 Feb 2008 18:49:04 -0500	[thread overview]
Message-ID: <20080212234904.GB9063@mit.edu> (raw)
In-Reply-To: <20080212204813.GA21650@kroah.com>

On Tue, Feb 12, 2008 at 12:48:13PM -0800, Greg KH wrote:
> On Tue, Feb 12, 2008 at 11:55:45AM -0800, Linus Torvalds wrote:
> > > 
> > > Not it isn't.  To quote you a number of years ago:
> > > 	"Linux is evolution, not intelligent design"

I think this statement has been used unfortunately as a hard and fast
rule (which we all know how much Linus loves :-) to mean, in its most
extreme form, that we should *never* try to do some careful reflection
about careful API design, and that the extremes of "no interface
without an in-tree user" applies to (a) parameters in a function call
(heck, we can always sweep through all the in-tree users to add that
extra parameter later, and thats a *good* thing because it breaks
those evil out-of-tree drivers) and (b) to not even thinking if some
particular interface (that is not needed now but which reasonably will
be needed later) is even *possible* without doing a sweep of all of
the in-tree users of the interface.

Related to this syndrome is the assumption that measuring the rate of
changes in lines of code changed per second implies that any
development process which causes the number of lines of code changed
second, including frequent sweeps through the tree changing all
interfaces, is a *good* thing.

Yes, this is an extreme position, and I'm not accusing anyone of
holding the above in its entirety --- but I've seen aspects of all of
these from one developer or another.

We come to it from the attacking another strawman, which assumes that
*all* interfaces which don't have an in-tree are evil, and that
keeping old __deprecated interfaces for a long time is an evil which
causes intolerable pain, and that it's never worthwhile to try to
anticipate future expandibility into an interface because you will
inevitably get it wrong.

Clearly, we are right to mock Solaris for making claims that they will
never, ever, *ever* change an interface, not even one that goes back
sixteen years to Solaris 2.3.  But it doesn't follow the opposite
point of view, that constant mutability of kernel interfaces to make
sure that things are always perfect and pure and clean is the right
one either.

> > The examples are legion. The mammalian eye has the retina "backwards", 
> > with the blind spot appearing because the fundmanetal infrastructure (the 
> > optical nerves) actually being in *front* of the light sensor and needing 
> > a hole in the retina to get the information (and blood flow) to go to the 
> > brain!

Also, evolution also means that things like vestigal organs (like our
appendix) are tolerated.  So are things like clearly very badly
designed things, like human backs.  To the extent that we don't like
vestigal old __deprecated interfaces, and want things to be perfect,
we are actually straying into the realms where we want the sort of
things that you would get if you *did* have an intelligent designer
designing the human body from scratch.

So the "Linux is evolution, not intelligent design" quote is
unfortunately getting used to imply that no amount of intelligent
foresight is worthwhile, and I think that's unfortunate.  It implies
an extreme position which is not warranted.

> > > But they do happen about once or twice a kernel release, just by virtue
> > > of the way things need to happen.
> > 
> > And I violently disagree.
> > 
> > It should not be "once of twice a kernel release".
> > 
> > It should be "once or twice a year" that you hit a flag-day issue. The 
> > rest of the time you should be able to do it without breakage. It's 
> > doable. You just HAVEN'T EVEN TRIED, and seem to be actively against even 
> > doing so.
> 
> No, not at all.
> 
> I have tried, and successfully done this many times in the past.  The
> kobject change was one example: add a new function, migrate all users of
> a direct pointer over to that function, after that work is all done and
> in, change the structure and do the needed work afterward.  All is
> bisectable completly, with no big "flag day" needed.

Collectively, we need to try harder.

We can debate exactly where the right line is, in terms of whether
it's only "once or twice a kernel release", or "once or twice a year",
but clearly the current amount of interface changes and cross-tree
dependencies has been causing Andrew pain.  And to me, that means we
need to turn the knob back a quarter turn towards tolerating
__deprecated old interfaces a little bit more, and trying to get
interfaces right just a little bit more and try building in just a
little bit more future expandability, and to try just *little* bit
harder to preserve a *little* bit more stable API.

In other words, maybe we need to write a counterpoint to the
stable_api_nonsense.txt and call it unstable_api_nonsense.txt --- and
in it, we note that if we start burning out Andrew and he starts
getting really, REALLY grumpy --- and if especially we start making
Stephen (normally a very mild-mannered and not terribly excitable guy)
grumpy, that it's time that we try just a little bit harder to make
our API's a little bit more stable.  Suckers^H^H^H^H^H^H^H^H, err.,
dedicated release managers like like Andrew and Stephen are very
precious resources and we shouldn't be burning them out by assuming
that "stable_api_nonsense.txt" is a license to constantly churn our
internal API's, to the point where they start complaining.

					- Ted

  parent reply	other threads:[~2008-02-12 23:50 UTC|newest]

Thread overview: 215+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-12  1:02 Announce: Linux-next (Or Andrew's dream :-)) Stephen Rothwell
2008-02-12  1:36 ` James Bottomley
2008-02-12  2:23   ` Stephen Rothwell
2008-02-12  3:32     ` James Bottomley
2008-02-12  2:25 ` Stephen Rothwell
2008-02-13 12:53   ` Frank Seidel
2008-02-19  0:45     ` Frank Seidel
2008-02-13 20:24   ` Ann Davis
2008-02-13 20:57     ` Adrian Bunk
2008-02-12  4:21 ` Greg KH
2008-02-12  4:31   ` Arjan van de Ven
2008-02-12  4:43     ` Greg KH
2008-02-12  5:17       ` Arjan van de Ven
2008-02-12  5:53         ` Greg KH
2008-02-12  6:07           ` David Miller
2008-02-12 16:31             ` Jeff Garzik
2008-02-12 17:04               ` John W. Linville
2008-02-12 18:11                 ` Jeff Garzik
2008-02-13  0:12                 ` David Miller
2008-02-12 19:37               ` J. Bruce Fields
2008-02-12 20:07                 ` Linus Torvalds
2008-02-13  0:50                   ` David Miller
2008-02-13  1:31                     ` Linus Torvalds
2008-02-13  1:38                       ` David Miller
2008-02-13  1:57                         ` Linus Torvalds
2008-02-13  2:06                           ` Andrew Morton
2008-02-13  2:18                             ` Linus Torvalds
2008-02-13  2:20                             ` David Miller
2008-02-13  2:47                               ` Joel Becker
2008-02-13 15:06                                 ` John W. Linville
2008-02-13 16:45                                   ` Joel Becker
2008-02-13  4:25                       ` J. Bruce Fields
2008-02-13  5:43                         ` Linus Torvalds
2008-02-13 17:52                           ` J. Bruce Fields
2008-02-14 17:35                             ` Benny Halevy
2008-02-15 17:15                               ` J. Bruce Fields
2008-02-12 23:51               ` David Miller
2008-02-12 23:54                 ` Al Viro
2008-02-13  0:16                   ` J. Bruce Fields
2008-02-13  0:48                     ` Al Viro
2008-02-13  0:56                       ` J. Bruce Fields
2008-02-13  0:59                       ` Linus Torvalds
2008-02-13  1:25                         ` Al Viro
2008-02-12 15:07           ` James Bottomley
2008-02-12 15:32             ` Benny Halevy
2008-02-12 16:00               ` James Bottomley
2008-02-12  6:11         ` David Miller
2008-02-12  6:21           ` Harvey Harrison
2008-02-12 16:36           ` Jeff Garzik
2008-02-12 16:46             ` Benny Halevy
2008-02-12 17:03             ` James Bottomley
2008-02-12 17:09             ` Linus Torvalds
2008-02-12 17:38               ` Roland Dreier
2008-02-12 17:41               ` James Bottomley
2008-02-12 17:53                 ` Benny Halevy
2008-02-12 18:36                   ` Linus Torvalds
2008-02-12 19:25                     ` Benny Halevy
2008-02-12 18:00                 ` Linus Torvalds
2008-02-12 18:24                   ` James Bottomley
2008-02-12 18:48                     ` Linus Torvalds
2008-02-12 18:59                       ` Linus Torvalds
2008-02-12 19:19                         ` Greg KH
2008-02-13 10:05                           ` Russell King
2008-02-13 12:06                             ` Jeff Garzik
2008-02-13 12:19                               ` Russell King
2008-02-12 19:41                         ` Al Viro
2008-02-12 21:51                           ` Alan Cox
2008-02-12 22:17                             ` Andrew Morton
2008-02-12 22:20                               ` Alan Cox
2008-02-12 22:41                                 ` Al Viro
2008-02-12 23:01                                   ` Alan Cox
2008-02-12 23:27                                     ` Greg KH
2008-02-12 22:55                                 ` Greg KH
2008-02-12 22:59                                   ` Alan Cox
2008-02-12 23:26                                     ` Greg KH
2008-02-13 10:07                             ` Russell King
2008-02-13  0:36                         ` David Miller
2008-02-13  0:53                           ` Linus Torvalds
2008-02-13  1:25                             ` David Miller
2008-02-12 19:17                       ` James Bottomley
2008-02-13  0:33                       ` David Miller
2008-02-12 20:18                     ` Jiri Kosina
2008-02-12 21:00                       ` James Bottomley
2008-02-13  0:27                     ` David Miller
2008-02-17 12:42                     ` David Woodhouse
2008-02-12 17:48               ` Greg KH
2008-02-12 18:26                 ` Linus Torvalds
2008-02-12 19:15                   ` Greg KH
2008-02-12 19:46                     ` Al Viro
2008-02-12 20:50                       ` Greg KH
2008-02-12 21:08                         ` Al Viro
2008-02-12 21:20                           ` Greg KH
2008-02-12 21:36                             ` Linus Torvalds
2008-02-13 10:54                         ` Christoph Hellwig
2008-02-13 17:24                         ` Adrian Bunk
2008-02-12 19:55                     ` Linus Torvalds
2008-02-12 20:48                       ` Greg KH
2008-02-12 21:25                         ` Matthew Wilcox
2008-02-12 23:49                         ` Theodore Tso [this message]
2008-02-15 23:23                         ` Russell King
2008-02-15 23:37                           ` Andrew Morton
2008-02-15 23:47                             ` Randy Dunlap
2008-02-16  0:12                               ` Andrew Morton
2008-02-16  0:17                               ` Russell King
2008-02-16  0:25                                 ` Randy Dunlap
2008-02-13 17:12                       ` Roel Kluin
2008-02-13 18:08                         ` Alan Cox
2008-02-15 23:05                           ` Roel Kluin
2008-02-16  0:03                             ` Alan Cox
2008-02-13 18:09                         ` Linus Torvalds
2008-02-15 22:59                           ` Roel Kluin
2008-02-13  0:41                     ` David Miller
2008-02-13  0:47                       ` Andrew Morton
2008-02-13  1:23                         ` David Miller
2008-02-13  7:38                         ` Geert Uytterhoeven
2008-02-13  8:45                       ` distributed module configuration [Was: Announce: Linux-next (Or Andrew's dream :-))] Sam Ravnborg
2008-02-13  8:54                         ` distributed module configuration David Miller
2008-02-13  9:04                           ` Sam Ravnborg
2008-02-13  9:06                             ` David Miller
2008-02-13 10:09                             ` Giacomo A. Catenazzi
2008-02-17 15:51                           ` Pavel Machek
2008-02-14  0:56                         ` distributed module configuration [Was: Announce: Linux-next (Or Andrew's dream :-))] Roman Zippel
2008-02-14  8:48                           ` Geert Uytterhoeven
2008-02-14 22:38                           ` Sam Ravnborg
2008-02-13  0:31                   ` Announce: Linux-next (Or Andrew's dream :-)) David Miller
2008-02-12 18:48                 ` Jeff Garzik
2008-02-12 20:03               ` Russell King
2008-02-12 20:23                 ` Andrew Morton
2008-02-12 20:31                 ` Linus Torvalds
2008-02-13 17:53               ` Adrian Bunk
2008-02-12 23:58             ` David Miller
2008-02-13  0:29               ` Greg KH
2008-02-13  0:49                 ` Linus Torvalds
2008-02-13  1:24                   ` David Miller
2008-02-13  2:16                   ` Theodore Tso
2008-02-13 10:58                     ` Catalin Marinas
2008-02-13  6:16                   ` Greg KH
2008-02-13  7:28                     ` Geert Uytterhoeven
2008-02-16 11:16                       ` Thomas Gleixner
2008-02-13 10:36                     ` Theodore Tso
2008-02-13 17:55                       ` Greg KH
2008-02-13 10:48                     ` Catalin Marinas
2008-02-13  0:37               ` Andrew Morton
2008-02-13  1:16                 ` David Miller
2008-02-13  1:46                   ` Andrew Morton
2008-02-13  0:44               ` Linus Torvalds
2008-02-13  1:20                 ` David Miller
2008-02-13  1:41                   ` Linus Torvalds
2008-02-13  1:46                     ` David Miller
2008-02-13  2:25                   ` James Bottomley
2008-02-13  2:35                     ` Linus Torvalds
2008-02-13  3:00                       ` James Bottomley
2008-02-13  3:31                         ` Linus Torvalds
2008-02-13  3:48                           ` Linus Torvalds
2008-02-13  5:17                             ` Nicolas Pitre
2008-02-13  4:10                           ` James Bottomley
2008-02-13  5:14                           ` Nicolas Pitre
2008-02-13  4:19                         ` Paul Mundt
2008-02-13  4:52                   ` J. Bruce Fields
2008-02-12  4:45     ` Trond Myklebust
2008-02-12  5:11       ` Theodore Tso
2008-02-12  6:02         ` David Miller
2008-02-12  7:06           ` Arjan van de Ven
2008-02-12 22:44             ` Theodore Tso
2008-02-12  6:15         ` Andrew Morton
2008-02-12 11:57           ` Stephen Rothwell
2008-02-12 14:57             ` Greg KH
2008-02-14  8:14             ` Russell King
2008-02-14 12:22               ` Stephen Rothwell
2008-02-14 18:01                 ` Linus Torvalds
2008-02-14 18:32                   ` Gene Heskett
2008-02-14 20:32                     ` Greg KH
2008-02-14 20:39                       ` Gene Heskett
2008-02-15  6:44                       ` Valdis.Kletnieks
2008-02-15  6:29                     ` Valdis.Kletnieks
2008-02-15  9:26                       ` Gene Heskett
2008-02-15 14:52                         ` Valdis.Kletnieks
2008-02-15  1:11                   ` Ingo Molnar
2008-02-20 14:55                   ` Stephen Rothwell
2008-02-20 15:38                     ` Stefan Richter
2008-02-20 15:42                       ` Theodore Tso
2008-02-20 17:13                         ` Adrian Bunk
2008-02-21 13:22                           ` Theodore Tso
2008-02-12  5:07   ` Stephen Rothwell
2008-02-12  5:56     ` Greg KH
2008-02-12  6:10       ` Stephen Rothwell
2008-02-12 16:24   ` multiple drivers, single device (was Re: Announce: Linux-next (Or Andrew's dream :-))) Jeff Garzik
2008-02-12 16:42     ` Greg KH
2008-02-12 17:42       ` multiple drivers, single device Roland Dreier
2008-02-12 17:51         ` Greg KH
2008-02-12 18:08         ` Jeff Garzik
2008-02-12 17:56       ` multiple drivers, single device (was Re: Announce: Linux-next (Or Andrew's dream :-))) Jeff Garzik
2008-02-12 18:10         ` Greg KH
2008-02-12 18:31           ` Jeff Garzik
2008-02-12 18:30         ` Linus Torvalds
2008-02-12 21:38           ` Greg KH
2008-02-12 22:34   ` Announce: Linux-next (Or Andrew's dream :-)) Jan Engelhardt
2008-02-12 18:02 ` Jeff Garzik
2008-02-13  1:20 ` Randy Dunlap
2008-02-13  5:03 ` Kumar Gala
2008-02-14 23:22 ` Roland Dreier
2008-02-15  1:02   ` Stephen Rothwell
2008-02-16 15:14     ` James Bottomley
2008-02-17  5:25       ` Stephen Rothwell
2008-02-17 14:27         ` James Bottomley
2008-02-16  0:09 ` Russell King
2008-02-16  0:21   ` Andrew Morton
2008-02-16  0:31     ` Russell King
2008-02-16  0:45       ` Andrew Morton
2008-02-16  0:42     ` Alexey Dobriyan
2008-02-16  8:08       ` Russell King
2008-02-26  3:54   ` Stephen Rothwell
2008-02-29 12:45     ` Stephen Rothwell
2008-02-29 13:04       ` Adrian Bunk
2008-02-29 23:45         ` Stephen Rothwell

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=20080212234904.GB9063@mit.edu \
    --to=tytso@mit.edu \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@infradead.org \
    --cc=davem@davemloft.net \
    --cc=greg@kroah.com \
    --cc=jeff@garzik.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=sfr@canb.auug.org.au \
    --cc=torvalds@linux-foundation.org \
    /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