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

Eric W. Biederman
2006-03-06T02:18:03Z

Benjamin LaHaise <bcrl@kvack.org> writes:

> On Sun, Mar 05, 2006 at 05:12:48PM -0700, Eric W. Biederman wrote:
>> 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.
>
> I thought the decree / consensus was that You Can't Do That. Yes, some
> people want to, but that doesn't mean we should let them.

That is what I heard as well. However look at the topic of this
thread. Documenting various level of stability is the same as saying
something isn't stable. Which is the same as saying something is
going to break. So if we are going to break things on purpose we
should break them all of the time so dependencies don't build up. So
that it is almost impossible to use unstable interfaces.

>> 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.
>
> Why should it be merged into base then? If it's in the mainstream kernel,
> it needs to be reasonably solid (which has always been a precondition for
> merging patches, aiui).

I don't have a clue.

>> 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?
>
> There's a big difference between those interfaces that have had a decent
> amount of thought put into them and those which have not. Take ext2,
> which is a good example as it can still mount a filesystem made back in
> the early '90s today, yet it has undergone a huge amount of change. What
> was the secret? The superblock has a few flags for compatible and
> incompatible features.
>
> API design is not rocket science, it just requires effort. So long as we
> keep beating the drums about how important this is, people will learn and
> we will get better at catching these issues during review.

Agreed.

However history does show that most people get API design wrong, at
least the first time.

If we were good at getting it right sys_ioctl would not be a problem,
and quite possibly would never have come into being.

So the question is can we get good enough at review that we can live
with the few mistakes that make it through?

Eric