On ABI stability in open source software
I recently noted that I was the number #4 reviewer of code in the DPDK 21.11 LTS
release. This is a direct result of my role as DPDK ABI mantainer, responsible
for ensuring that DPDK releases remain backward compatible.
I found it a funny thing that I am seen to be doing more work on the LTS
releases, but the reality is that I do way more work on the minor releases.
Stable ABI's are like that, there ends up being way more work between major
releases ensuring that the minor releases remain compatible with the stable ABI.
In minor releases, you spend more time reviewing patches for potential gotcha's,
parsing libabigail warnings, providing advice, suggesting work-arounds and the
like. On the other hand, in the major LTS releases, a new ABI is declared, so
backward compatibility is less of an issue but you still need to ensure that APIs
are designed in a way that is easier to support over the long term.
Lots of developers use the LTS releases as an opportunity to contribute patches
that change the ABI, as there is no requirement to be backward compatible in the
LTS release, something that is harder on minor releases. So the net-net is that
there is a larger volume of patches on the LTS releases, but less work overall.
So what's the benefit for users, is it worth all the effort? … absolutely.
What it means for consumers of DPDK is that it is easier to upgrade to newer
versions. They get all the benefits of bug fixes and new features when they
ugrade, without the headache of breaking their code.
I wrote a fairly comprehensive introduction to ABIs and why they are important,
over on the DPDK blog, it is a 10 minute read but a great introduction to ABIs
if you are unfamiliar with them. I also chaired a panel discussion and
co-presented with Stephen Hemminger on the subject at DPDK Userspace 2019.
Finally after one year of stable DPDK ABIs, I wrote a followup article showing
how successful the community had become at stabilizing the ABI, and produced a
neat ascii video demonstrating ABI stability in action.