Re: [RFC] Splitting kernel headers and deprecating __KERNEL__

Linus Torvalds
2004-11-30T23:18:12Z

On Tue, 30 Nov 2004, Alexandre Oliva wrote:

> On Nov 30, 2004, Linus Torvalds <torvalds@osdl.org> wrote:
>
> > On Tue, 30 Nov 2004, Alexandre Oliva wrote:
>
> >> Then maybe this is the fundamental problem. As long as the kernel
> >> doesn't recognize that an ABI is a contract, rather than an
> >> imposition, kernel developers won't care.
>
> > That's a silly analogy. Worse, it's a very flawed analogy.
>
> > If you want to use a legal analogy, the ABI is not a contract, it's a
> > public _license_.
>
> I didn't mean to use a legal analogy. I meant contract in the
> software engineering sense. Sorry if that wasn't clear.

Then your definition of a "contract" is flawed or your world-view has
nothing to do with reality.

An ABI is not a contract. It's somebody exposing a certain set of
features. It does _not_ mean that the party that gets exposed has any say
wrt the features. At most he can hope that the exported set doesn't
shrink or change semantically, but let's face it, even that does happen.

The Linux kernel has been very very good about this exposure, in the sense
that we try very very hard not to break it. I think that's a good thing.
But that in no way makes anything a "contract".

It's the same thing with CPU vendors. You as a programmer, didn't get to
dictate what the CPU vendor implemented. You take it or leave it, and at
most you can make suggestions about things that might make the CPU vendor
sell more chips. The ISA is not a "contract" - it's just an interface that
was handed down to you. You didn't get to negotiate, you got to say "yes"
or "no".

Linus