[dpdk-dev] On DPDK ABI policy

Panu Matilainen pmatilai at redhat.com
Thu Apr 7 13:51:35 CEST 2016


[ change of subject since this is about ABI policy, not namespacing ]

On 04/07/2016 01:16 PM, Marc Sune wrote:
>
>
> 2016-04-07 11:33 GMT+02:00 Panu Matilainen <pmatilai at redhat.com
> <mailto:pmatilai at redhat.com>>:
>
>     On 04/07/2016 12:18 PM, Thomas Monjalon wrote:
>
>         Thank you everyone for the feedbacks.
>
>         2016-04-05 15:56, Thomas Monjalon:
>
>             The goal of this email is to get some feedback on how
>             important it is
>             to fix the DPDK namespace.
>
>
>         Everybody agree every symbols must be prefixed. Checking and
>         fixing the
>         namespace consistency will be in the roadmap.
>
>         It seems most of you agree renaming would be a nice improvement
>         but not
>         so important.
>         The main drawback is the induced backporting pain, even if we have
>         some scripts to convert the patches to the old namespace.
>         Note: the backports can be in DPDK itself or in the applications.
>
>             If there is enough agreement that we should do something, I
>             suggest to
>             introduce the "dpdk_" prefix slowly and live with both
>             "rte_" and "dpdk_"
>             during some time.
>             We could start using the new prefix for the new APIs
>             (example: crypto)
>             or when there is a significant API break (example: mempool).
>
>
>         The slow change has been clearly rejected in favor of a complete
>         change
>         in one patch.
>         The timing was also discussed as it could impact the pending
>         patches.
>         So it would be done at the end or the beginning of a release.
>         Marc suggests to do it for 16.04 as the numbering scheme has
>         changed.
>
>
>     Just noting that it cannot be done in 16.04 because the ABI policy
>     requires a deprecation cycle of at least one major release for every
>     breakage. And we're discussing a total 100% breakage of everything
>     here, even if its just a simple rename.
>
>
> I keep not understanding the ABI policy, and particularly why ABI
> changes have to be announced once cycle before _if_ there is already at
> least one ABI change proposed. DPDK applications will have to recompile
> anyway.

The point is to allow API/ABI consumers to assess in advance what sort 
of pains can they expect when moving their applications from one version 
to another. Otherwise all sorts of massive changes could ride the wave 
of whatever "change 16bit struct member to 32bit" trivialities that are 
nevertheless ABI breaks.

There have already been quite a few exceptions to the rule when the ABI 
is already being broken, so its not entirely rigid. Another point that 
migth warrant some tweaking to the policy is the "core" libraries 
depending on each other so an ABI break in any one of them forces 
recompile of everything anyway.

> This aspect of the policy only slows down DPDK development and it

One could also think that slowing down development and forcing people to 
think ahead are not entirely unintentional or unwanted side-effects :)

Look at the latest librte_vhost initiative to remove unnecessarily 
exposed structs to avoid having to deal with ABI breakages all the time: 
the policy is effectively encouraging people into better library design.

> pollutes the repository with commits announcing ABI changes that are
> irrelevant after 2 cycles, as (code) diffs show that already (not
> mentioning NEXT_ABI complexity and extra LOCs).

Fully agreed on NEXT_ABI, I never liked it at all.

> Maintaining LTS releases, and enforcing bug fixing in old LTS first,
> upstreaming bugfixes is to me a much better approach to solve backwards
> compatibility issues.

LTS releases could help the situation somewhat, but then again people 
tend to still want those new fancy things backported (you know, have the 
cake and eat it too) but that can't be done because of ABI breakage, so 
they're forced to run the latest version anyway.

> But this is probably another discussion.

Yup, changed subject to avoid mixing it up with the namespace discussion 
too much.

	- Panu -



More information about the dev mailing list