All of lore.kernel.org
 help / color / mirror / Atom feed
From: Helge Hafting <helge.hafting@aitel.hist.no>
To: Al Boldi <a1426z@gawab.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	Arjan van de Ven <arjan@infradead.org>, Greg KH <greg@kroah.com>,
	linux-kernel@vger.kernel.org
Subject: Re: Linux in a binary world... a doomsday scenario
Date: Thu, 15 Dec 2005 12:14:39 +0100	[thread overview]
Message-ID: <43A1501F.5070803@aitel.hist.no> (raw)
In-Reply-To: <200512151131.39216.a1426z@gawab.com>

Al Boldi wrote:

>Nick Piggin wrote:
>  
>
>>Al Boldi wrote:
>>    
>>
>>>Arjan van de Ven wrote:
>>>      
>>>
>>>>a stable api/abi for the linux kernel would take at least 2 years to
>>>>develop. The current API is not designed for stable-ness, a stable API
>>>>needs stricter separation between the layers and more opaque pointers
>>>>etc etc.
>>>>        
>>>>
>>>True.  But it would be time well spent.
>>>      
>>>
>>Who's time would be well spent?
>>
>>Not mine because I don't want a stable API. Not mine because I
>>don't use binary drivers and I don't care to encourage them.
>>[that is, unless you manage to convince me below ;)]
>>    
>>
>
>The fact that somebody may take advantage of a stable API should not lead us 
>to reject the idea per se.
>  
>
It is all about advantages and disadvantages.
Disadvantages of a stable API:
* It encourages binary-only drivers, while we prefer source drivers.
   Changing the API often and without warning is one way of
   hampering binary-only driver development without harming
   open-source drivers.
* A stable API isn't really possible.  There will be revisions due
   to new compilers, new processors, new needs.  So the only
   question is how often do we change.  Hanging onto an obsolete
   API too long will hamper _kernel_ development and performance.
   Example: smp changed a lot of things.  The old idea
   that cli/sti was a way of implementing a critical section had to go.

To argue for a stable API then, you need to come up
with advantages, and they have to outweigh the disadvantages too.

Do a stable API save us work?  No, because whoever changes the API
also fixes all in-kernel users of said API. Some API changes, like
using more or less register parameters, don't even need to fix API users
as the compiler does it all.

Outside users we don't care about at all, because they are all welcome
to get their driver in. (Assuming it is useful and the code quality is 
good...)

>>Anyone else is free to fork the kernel and develop their own
>>stable API for it.
>>    
>>
>
>That would be sad.
>
>The objective of a stable API would be to aid the collective effort and not 
>to divide it.
>  
>
Forks are not a problem. Anything useful in a fork will usually
be merged back sooner or later.  And think about the
"normal" development process:  If I were to write a driver,
I would get the kernel source, make my driver, then submit it.
In the meantime, I effectively have my own short-lived fork.

>>>>There is a price you pay for having such a rigid scheme (it arguably has
>>>>advantages too, those are mostly relevant in a closed source system tho)
>>>>is that it's a lot harder to implement improvements.
>>>>        
>>>>
>>>This is a common misconception.  What is true is that a closed system is
>>>forced to implement a stable api by nature.  In an OpenSource system you
>>>can just hack around, which may seem to speed your development cycle
>>>when in fact it inhibits it.
>>>      
>>>
>>How? I'm quite willing to listen, but throwing around words like 'guided
>>development' and 'scalability' doesn't do anything. How does the lack of a
>>stable API inhibit my kernel development work, exactly?
>>    
>>
>
>If you are working alone a stable API would be overkill.  But GNU/Linux is a 
>collective effort, where stability is paramount to aid scalability.
>  
>
This doesn't actually hold when the source is available for all
to get and update.  The source API doesn't change so often,
so it is time enough to develop a source driver without spending
all the time on adapting to the source API.  Once you get the driver
in, you no longer have to keep up. 

The binary api can change several times with every revision, with no
impact on open-source developers. So, no need to stabilize it.
Specs already says that a driver has to be compiled for the kernel
it is used with - a binary driver working with two releases (even
concecutive releases) are pure luck. So a binary vendor has to
at least compile for every release (and every supported platform).
If the source api changes too, then there is some programming
to do as well.  Both of these have a price, and there is the hope
that more will see the light - that they can support linux fully without
these costs by going open source.

>>
>>I've got a fairly good idea of what work I'm doing, and what I'm planning
>>to do, long term goals, projects, etc. What would be the key differences
>>with "non-GNU/OpenSource" development that would make you say they are not
>>unguided by nature?
>>    
>>
>
>The same goes for OpenSource in general, but GNU/OpenSource has a larger 
>community and therefore is in greater need of a stable API.
>  
>
A large community may find some kind of stability useful, the
line does not have to be drawn at the binary api level though.
The source API is much more stable than the binary API.  And
source changes is usually only withing some subsytem.
I.e. a change in the pci driver API don't affect filesystem drivers
and so on.

>  
>
>>> A stable API contributes to a guided
>>>development that is scalable.  Scalability is what leads you to new
>>>heights, or else could you imagine how ugly it would be to send this
>>>message using asm?
>>>      
>>>
>>Let's not bother with bad analogies and stick to facts. Do you know how
>>many people work on the Linux kernel? And how rapidly the source tree
>>changes? Estimates of how many bugs we have? Comparitive numbers from
>>projects with stable APIs? That would be very interesting.
>>    
>>
>
>You got me here!  It's really common sense as in:
>stability breeds scalability, and instability breeds chaos.
>  
>
This saying doesn't necessarily apply to an API in a open-source
project.  Especially not when talking about an internal API.
The kernel has an external binary API that is stable, it is
the syscall interface.

>Arjan van de Ven wrote:
>  
>
>>I think Linux proves you wrong (and a bit of a troll to be honest ;)
>>    
>>
>
>No troll! Just being IMHO. I hope that's OK?
>
>Of course, if your aim is not to be scalable then please ignore this message 
>as it will not have any meaning.
>  
>
Another option is that your assumption about "stability as a requirement
for scalability" is wrong at least in case of the kernel.  The kernel
development scales very well so far.  I can't see any delays caused by
developers trying to keep up with a change in binary APIs.  Well,
except a handful of closed source vendors, but that is more or less
intentional.  If they get tired, they can hand in their source.

Helge Hafting

  parent reply	other threads:[~2005-12-15 11:10 UTC|newest]

Thread overview: 259+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-14 21:13 Linux in a binary world... a doomsday scenario Al Boldi
2005-12-14 21:27 ` Arjan van de Ven
2005-12-15  4:49   ` Al Boldi
2005-12-15  5:24     ` Nick Piggin
2005-12-15  8:31       ` Al Boldi
2005-12-15  8:53         ` Arjan van de Ven
2005-12-15  9:24         ` Nick Piggin
2005-12-15  9:35         ` Sean
2005-12-15  9:35           ` Sean
2005-12-15 11:14         ` Helge Hafting [this message]
2005-12-15 18:29           ` Al Boldi
2005-12-15 19:01             ` Dmitry Torokhov
2005-12-15 19:06             ` Lee Revell
2005-12-15 19:09             ` Al Viro
2005-12-16  2:09             ` Nick Piggin
2005-12-19 10:57             ` Helge Hafting
2005-12-19 15:19               ` Al Boldi
2005-12-15  5:39     ` Kyle Moffett
2005-12-15  7:11     ` Arjan van de Ven
2005-12-15  9:11 ` Bernd Petrovitsch
     [not found] <5jMcG-5mY-19@gated-at.bofh.it>
     [not found] ` <5jWON-3xQ-29@gated-at.bofh.it>
     [not found]   ` <5jZk7-7iD-19@gated-at.bofh.it>
     [not found]     ` <5k6bw-AI-19@gated-at.bofh.it>
2005-12-16  6:57       ` Bodo Eggert
  -- strict thread matches above, loose matches on Subject: below --
2005-12-13 23:54 art
2005-12-13 22:59 mreuther
2005-12-13 23:05 ` Bernd Petrovitsch
     [not found] <20051208083941.B233113E51@rhn.tartu-labor>
2005-12-08 17:13 ` Kasper Sandberg
2005-12-08 15:49 AW: " dirk
2005-12-08 16:14 ` Diego Calleja
2005-12-08 20:28   ` Horst von Brand
2005-12-08 10:27 Nicolas Mailhot
2005-12-09 15:59 ` Dirk Steuwer
2005-12-07 21:06 Salyzyn, Mark
2005-12-12 14:45 ` Andrea Arcangeli
2005-12-13  8:25 ` Helge Hafting
2005-12-13  9:44   ` Bernd Petrovitsch
2005-12-13 12:14     ` Alan Cox
2005-12-14  8:59     ` Helge Hafting
2005-12-14  9:14       ` Bernd Petrovitsch
2005-12-13 17:02   ` Gene Heskett
2005-12-14  8:48     ` Helge Hafting
2005-12-06 14:23 Aimo Asiakas
2005-12-06 14:36 ` Arjan van de Ven
2005-12-06 15:31 ` Pekka Enberg
2005-12-05 10:52 Arjan van de Ven
2005-12-05 11:39 ` Dave Airlie
2005-12-05 13:55   ` Xavier Bestel
2005-12-08 14:27   ` Graham Murray
2005-12-05 12:18 ` William Lee Irwin III
2005-12-05 13:07   ` Pekka Enberg
2005-12-05 18:44     ` Alistair John Strachan
2005-12-05 19:47       ` Gene Heskett
2005-12-06 10:51       ` Luke-Jr
2005-12-06 12:29         ` Ralf Baechle
2005-12-07  0:01       ` William Lee Irwin III
2005-12-06 17:03     ` Jon Masters
2005-12-06  1:18   ` Andrea Arcangeli
2005-12-05 14:31     ` Brian Gerst
2005-12-06  3:08       ` Andrea Arcangeli
2005-12-05 16:23         ` Brian Gerst
2005-12-06 18:42           ` David Woodhouse
2005-12-06 19:23             ` Alan Cox
2005-12-06 21:33               ` Jeff Garzik
2005-12-06 22:25               ` David Woodhouse
2005-12-06 22:49                 ` Alan Cox
2005-12-06 23:03                   ` David Woodhouse
2005-12-06 23:25                 ` Andrew Grover
2005-12-07  0:56                   ` David Woodhouse
2005-12-06 10:42         ` Sander
     [not found]         ` <f0cc38560512060307m2ccc6db8xd9180c2a1a926c5c@mail.gmail.com>
2005-12-06 11:44           ` Arjan van de Ven
2005-12-06  1:43             ` Brian Gerst
2005-12-06 14:09               ` linux-os (Dick Johnson)
2005-12-14 16:33                 ` Eric W. Biederman
2005-12-14 17:01                   ` linux-os (Dick Johnson)
2005-12-14 17:20                     ` Eric W. Biederman
2005-12-14 18:51                       ` linux-os (Dick Johnson)
2005-12-06 14:13               ` Rudolf Randal
2005-12-06 14:49               ` Arjan van de Ven
2005-12-06 21:39                 ` Nicolas Mailhot
2005-12-08  0:58                   ` Kasper Sandberg
2005-12-08  2:24                     ` Diego Calleja
2005-12-08  6:21                       ` Zwane Mwaikambo
2005-12-08 12:31                         ` Diego Calleja
2005-12-08 12:39                           ` Arjan van de Ven
2005-12-08 13:01                             ` Matan Peled
2005-12-08 16:55                           ` Kasper Sandberg
2005-12-08 19:32                     ` Horst von Brand
2005-12-08 21:10                       ` linux-os (Dick Johnson)
2005-12-09  6:12                         ` Ben Greear
2005-12-07  7:02                 ` Luke-Jr
2005-12-07  7:03                   ` Arjan van de Ven
2005-12-06 15:16               ` Andrea Arcangeli
2005-12-06 15:30               ` Florian Weimer
2005-12-06 15:49                 ` Paweł Sikora
2005-12-06 19:00                   ` Tomasz Torcz
2005-12-06 19:11                     ` Paweł Sikora
2005-12-06 19:34                       ` Tomasz Torcz
2005-12-06 20:29                       ` Dave Jones
2005-12-06 23:25                         ` Bernd Petrovitsch
2005-12-06 19:13               ` Jeff Garzik
2005-12-06 19:37                 ` Lee Revell
2005-12-06 19:41                   ` Jeff Garzik
2005-12-06 19:55                     ` Lee Revell
2005-12-06 20:25                       ` Alan Cox
2005-12-06 21:55                         ` Dave Airlie
2005-12-06 22:44                       ` Florian Weimer
2005-12-06 22:56                         ` Andrea Arcangeli
2005-12-06 23:17                         ` Lee Revell
2005-12-06 21:00               ` Francois Romieu
2005-12-08  1:04                 ` Kasper Sandberg
     [not found]             ` <6f6293f10512060404x57cfb97dqaa469f2701cd2528@mail.gmail.com>
2005-12-06 12:11               ` Arjan van de Ven
2005-12-06 15:09               ` Andrea Arcangeli
2005-12-06  9:07       ` Dirk Steuwer
2005-12-06 10:46         ` Sander
2005-12-06 16:41           ` Dirk Steuwer
2005-12-06 18:48             ` Lee Revell
2005-12-06 21:35               ` Grahame White
2005-12-07  8:09                 ` Dirk Steuwer
2005-12-07 12:47                   ` Lars Marowsky-Bree
2005-12-07  0:45             ` Horst von Brand
2005-12-09  5:49         ` Miles Bader
2005-12-09  9:49           ` Felix Oxley
2005-12-09  9:53             ` Bernd Petrovitsch
2005-12-06 15:17       ` Pavel Machek
2005-12-13  2:00         ` Rob Landley
2005-12-13  7:56           ` Arjan van de Ven
2005-12-13  9:07             ` Rob Landley
2005-12-13 10:18               ` Felix Oxley
2005-12-07 15:06       ` Rik van Riel
2005-12-08  7:14       ` Andrew McGregor
2005-12-06  8:29     ` Arjan van de Ven
2005-12-07 18:39       ` Rik van Riel
2005-12-07 18:44         ` Randy.Dunlap
2005-12-07 18:55           ` Arjan van de Ven
2005-12-07 19:53             ` Geert Uytterhoeven
2005-12-07 20:22               ` Gerrit Huizenga
2005-12-07 20:30                 ` Arjan van de Ven
2005-12-07 20:56                   ` Andrea Arcangeli
2005-12-07 21:02                 ` Dave Jones
2005-12-07 21:30                   ` Gerrit Huizenga
2005-12-07 21:38                     ` David S. Miller
2005-12-07 21:47                       ` Andrew Walrond
2005-12-07 21:53                       ` Gerrit Huizenga
2005-12-12 17:52                       ` Ric Wheeler
2005-12-13  8:17                         ` Andrew Walrond
2005-12-07 20:16             ` Andrea Arcangeli
2005-12-07 20:19               ` Arjan van de Ven
2005-12-07 20:40                 ` Andrea Arcangeli
2005-12-08 13:23                   ` Dirk Steuwer
2005-12-08 14:03                     ` Diego Calleja
2005-12-08 18:44                 ` Dave Neuer
2005-12-07 20:51               ` Rik van Riel
2005-12-07 19:34           ` Lee Revell
2005-12-07 23:17           ` Horst von Brand
2005-12-09  6:17             ` Ben Greear
2005-12-08 10:58           ` Sander
2005-12-06 12:26     ` Denis Vlasenko
2005-12-06 15:36       ` Hannu Savolainen
2005-12-06 18:51         ` Lee Revell
2005-12-06 20:26           ` Hannu Savolainen
2005-12-07 15:18         ` Avi Kivity
2005-12-07 20:10       ` Geert Uytterhoeven
     [not found]         ` <f0cc38560512071322m1d370589vd9f8a7684fa2ee1d@mail.gmail.com>
2005-12-08 12:19           ` Geert Uytterhoeven
2005-12-06 17:23     ` Jon Masters
2005-12-05 17:18 ` Jeff Garzik
2005-12-05 17:29   ` Jan-Benedict Glaw
2005-12-05 22:52     ` Bernd Petrovitsch
2005-12-06  6:28     ` Rob Landley
2005-12-05 18:26 ` Andrew Walrond
2005-12-05 18:34   ` Arjan van de Ven
2005-12-05 19:41     ` jmerkey
2005-12-06 16:27     ` Simon Oosthoek
2005-12-06 18:50       ` Luke-Jr
2005-12-08  8:14         ` Helge Hafting
2005-12-08 11:30           ` Luke-Jr
2005-12-12 11:27             ` Helge Hafting
2005-12-08 13:48           ` Nix
2005-12-12 12:01             ` Helge Hafting
2005-12-12 19:46               ` Nix
2005-12-13  8:10                 ` Helge Hafting
2005-12-13 22:21                   ` Nix
2005-12-14  8:14                     ` Helge Hafting
2005-12-16  7:38                       ` Nix
2005-12-05 21:19   ` David Woodhouse
2005-12-05 21:24     ` Arjan van de Ven
2005-12-05 21:54       ` David Woodhouse
2005-12-05 23:56         ` Tim Bird
2005-12-06  0:10           ` Dave Airlie
2005-12-06  0:23             ` Tim Bird
2005-12-06  0:26               ` Tim Bird
2005-12-06  4:08               ` Greg KH
2005-12-06  6:07                 ` Willy Tarreau
2005-12-06  7:06                   ` Neil Brown
2005-12-06  8:13                   ` David Woodhouse
2005-12-06  9:10                     ` Bernd Petrovitsch
2005-12-06 16:47                   ` Greg KH
2005-12-06  7:58                 ` Coywolf Qi Hunt
2005-12-06 16:11                   ` Greg KH
2005-12-07  1:38                     ` Coywolf Qi Hunt
2005-12-07  2:40                       ` Greg KH
2005-12-07  3:23                         ` Coywolf Qi Hunt
2005-12-07  5:29                           ` Greg KH
2005-12-07 18:57                           ` Horst von Brand
2005-12-06 18:56                   ` Luke-Jr
2005-12-07  1:42                     ` Coywolf Qi Hunt
2005-12-07  2:06                       ` Wed, 7 Dec 2005 03:06:35 +0100
2005-12-07  5:25                         ` Jeff Garzik
2005-12-06  4:18               ` Al Viro
2005-12-06  2:22             ` Gene Heskett
2005-12-06  3:56               ` Zwane Mwaikambo
2005-12-06  4:27                 ` Gene Heskett
2005-12-06 18:33                 ` Jesper Juhl
2005-12-06 19:12                   ` Zwane Mwaikambo
2005-12-06 19:15                     ` Jesper Juhl
2005-12-08 21:49                 ` Rob Landley
2005-12-10  2:38                   ` Lee Revell
2005-12-10  5:51                 ` Luke-Jr
2005-12-06 11:38               ` Jean-Christian de Rivaz
2005-12-06 19:12                 ` Jesper Juhl
2005-12-06 21:13                   ` Jon Masters
2005-12-06  0:14           ` Bernd Petrovitsch
2005-12-06  0:34           ` David Woodhouse
2005-12-06  0:53           ` Andrea Arcangeli
2005-12-06  1:20             ` Tim Bird
2005-12-06  1:35               ` Andrea Arcangeli
2005-12-06  1:55                 ` Jeff Garzik
2005-12-06  9:16               ` Xavier Bestel
2005-12-06  9:26               ` Bernd Petrovitsch
2005-12-06  9:56                 ` David Woodhouse
2005-12-06 10:09                   ` Jeff Garzik
2005-12-06 14:50                   ` Andrea Arcangeli
2005-12-06 15:25                     ` David Woodhouse
2005-12-06 19:58                       ` Alan Cox
2005-12-06 19:20                     ` Jeff Garzik
2005-12-06  4:12           ` Greg KH
2005-12-06  4:18             ` Michael Poole
2005-12-06 17:21               ` Benjamin LaHaise
2005-12-07 12:39                 ` Helge Hafting
2005-12-07 12:41                   ` Christoph Hellwig
2005-12-07 14:25               ` Rik van Riel
2005-12-07 15:56                 ` Michael Poole
2005-12-06 18:19             ` Theodore Ts'o
2005-12-06 19:27               ` Alan Cox
2005-12-06 19:38                 ` Theodore Ts'o
2005-12-06 20:18                   ` Alan Cox
2005-12-06 20:53                     ` Theodore Ts'o
2005-12-07 14:30           ` Rik van Riel
2005-12-05 23:24 ` Matthieu CASTET
2005-12-06 13:28   ` Ralf Baechle
2005-12-06  2:58 ` Andre Hedrick
2005-12-06 13:13 ` Rudolf Randal
2005-12-06 15:09   ` Mark Lord
2005-12-06 16:16 ` Jon Smirl
2005-12-06 16:32   ` Florian Weimer
2005-12-07 12:44     ` Helge Hafting
2005-12-07 12:49       ` Alan Cox
2005-12-07 16:15       ` Jon Smirl
2005-12-07 12:55     ` Lars Marowsky-Bree
2005-12-07 21:46   ` Chase Venters
2005-12-07 23:07     ` Alan Cox
2005-12-07 23:41       ` Jon Smirl
2005-12-07 23:59         ` Chase Venters
2005-12-08  8:24           ` Helge Hafting

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=43A1501F.5070803@aitel.hist.no \
    --to=helge.hafting@aitel.hist.no \
    --cc=a1426z@gawab.com \
    --cc=arjan@infradead.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.au \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.