Re: Perf ABI (was: Re: [lttng-dev] [PATCH 09/11] sched: export task_prio to GPL modules)

Ted Ts'o
2011-12-25T17:46:37Z

On Fri, Dec 23, 2011 at 01:16:41PM -0500, Mathieu Desnoyers wrote:
>
> (note that ABI to control the tracer and ABI to transport data could
> share the same version numbering if the control tools and transport
> tools happen to reside in the same user-level packages)

Being able to control the tracer but then not being able to look at
the trace output is useless. So they might as well be the same
thing....

> - The trace data format
> - Both versioned _and_ self-described.
> Self-description of the event/field layout allows the same tools to
> understand traces gathered on different kernel versions, on different
> architectures, with different tracer configurations.
> Versioning on top of the self-described trace format allows changes
> to what the trace self-description can express.

So there are two ways to do this. One is to make changes be backwards
compatible, so that the trace data format only breaks if you use the
new feature; if it doesn't you encode things the old fashioned way.
The other way of doing things is to randomly break users whenever the
tracing developers decide to add some random new feature, regardless
of whether or not a partiuclar user finds that new feature to be
useful.

The first is acceptable. The second, IMHO, is not. Linus has said
quite strongly that WE DO NOT BREAK USERSPACE. Period.

Regards,

- Ted