Re: [RFC] Add kernel<->userspace ABI stability documentation

Eric W. Biederman
2006-03-06T00:14:15Z

Benjamin LaHaise <bcrl@kvack.org> writes:

> On Sun, Mar 05, 2006 at 09:17:59AM -0700, Eric W. Biederman wrote:
>> So if we go down this path can we make this functional Documentation?
>>
>> In particular can we have per process/per interface kinds of flags that
>> allow access to experimental subsystems?
>
> Sounds fragile. It doesn't help the real problem that APIs need to be well
> designed.

Yes. But it does sure stick out like a sore thumb in a patch or when
you try to use it. Especially if you do something evil like require
user space to pass in a hash of the kernel code implementing the
interface. So even the smallest changes of the implementation break
user space.

>> If the developer has to jump through an extra hoop to use an interface
>> we have clearly documented this is unsupported and will change in the
>> future. Anything else can be easy to miss.
>
> At this point if it ends up anywhere near the tools people need to use on
> a regular basis, it will not have accomplished anything. APIs should be
> reasonably stable, often extensible, by the time they hit the kernel. The
> problem with any sort of 'experimental' API is that it probably means the
> code is not ready to be in the kernel. Wrapping it up in flags doesn't
> stop people from using it and tieing code to the interface; not shipping
> code that isn't fully baked does.

I don't know all of the answers. But if we are going to document something
is half backed, let have the code behave like the interface is half backed
and at least try to keep it out of the hands of most applications.

To a large extent I agree that we should have fully backed interfaces in
the stable kernel. Is that always possible? How often do things not show
up until they are being used in the real world? Is it possible to
find those things out in experimental branches?

Eric