From: Ray Kinsella <mdr@ashroe.eu>
To: dev@dpdk.org
Cc: mdr@ashroe.eu, thomas@monjalon.net, stephen@networkplumber.org,
bruce.richardson@intel.com, ferruh.yigit@intel.com,
konstantin.ananyev@intel.com, jerinj@marvell.com,
olivier.matz@6wind.com, nhorman@tuxdriver.com,
maxime.coquelin@redhat.com, john.mcnamara@intel.com,
marko.kovacevic@intel.com, hemant.agrawal@nxp.com,
ktraynor@redhat.com, aconole@redhat.com
Subject: [dpdk-dev] [PATCH v6 0/4] doc: changes to abi policy introducing major abi versions
Date: Fri, 27 Sep 2019 17:54:39 +0100 [thread overview]
Message-ID: <1569603283-1857-1-git-send-email-mdr@ashroe.eu> (raw)
TL;DR abbreviation:
A major ABI version that all DPDK releases during a one year period
support. ABI versioning is managed at a project-level, in place of library-level
management. ABI changes to add new features are permitted, as long as ABI
compatibility with the major ABI version is maintained.
Detail:
This patch introduces major ABI versions, supported for one year and released
aligned with the LTS release. This ABI version is then supported by all
subsequent releases within that one year period. The intention is that the one
year support period, will then be reviewed after the initial year with the
intention of lengthing the support period for the next ABI version.
ABI changes that preserve ABI compatibility with the major ABI version are
permitted in subsequent releases. ABI changes, follow similar approval rules as
before with the additional gate of now requiring technical board approval. The
merging and release of ABI breaking changes would now be pushed to the
declaration of the next major ABI version.
This change encourages developers to maintain ABI compatibility with the major
ABI version, by promoting a permissive culture around those changes that
preserve ABI compatibility. This approach begins to align DPDK with those
projects that declare major ABI versions (e.g. version 2.x, 3.x) and support
those versions for some period, typically two years or more.
To provide an example of how this might work in practice:
* DPDK v20 is declared as the supported ABI version for one year, aligned with
the DPDK v19.11 (LTS) release. All library sonames are updated to reflect the
new ABI version, e.g. librte_eal.so.20, librte_acl.so.20...
* DPDK v20.02 .. v20.08 releases are ABI compatible with the DPDK v20 ABI. ABI
changes are permitted from DPDK v20.02 onwards, with the condition that ABI
compatibility with DPDK v20 is preserved.
* DPDK v21 is declared as the new supported ABI version for two years, aligned
with the DPDK v20.11 (LTS) release. The DPDK v20 ABI is now depreciated,
library sonames are updated to v21 and ABI compatibility breaking changes may
be introduced.
v6
* Added figure to abi_policy.rst, comparing and contrasting the DPDK abi and
api. (as suggested by Aaron Conole)
v5
* Added figure to abi_policy.rst, mapping abi versions and abi compatibility to
DPDK releases. (as suggested by Neil Horman)
v4
* Removed changes to stable.rst, fixed typos and clarified the ABI policy
"warning".
v3
* Added myself as the maintainer of the ABI policy.
* Updated the policy and versioning guides to use the year of the LTS+1 (e.g.
v20), as the abi major version number.
v2
* Restructured the patch into 3 patches:
1. Splits the original versioning document into an ABI policy document
and ABI versioning document.
2. Add changes to the policy document introducing major ABI versions.
3. Fixes up the versioning document in light of major ABI versioning.
* Reduces the initial ABI stability from two years to one year, with a review
after the first year.
* Adds detail around ABI version handling for experimental libraries.
* Adds detail around chain of responsility for removing deprecated symbols.
Ray Kinsella (4):
doc: separate versioning.rst into version and policy
doc: changes to abi policy introducing major abi versions
doc: updates to versioning guide for abi versions
doc: add maintainer for abi policy
MAINTAINERS | 4 +
doc/guides/contributing/abi_policy.rst | 322 +++++++++++
doc/guides/contributing/abi_versioning.rst | 515 ++++++++++++++++++
.../contributing/img/abi_stability_policy.png | Bin 0 -> 61277 bytes
doc/guides/contributing/img/what_is_an_abi.png | Bin 0 -> 151683 bytes
doc/guides/contributing/index.rst | 3 +-
doc/guides/contributing/patches.rst | 6 +-
doc/guides/contributing/stable.rst | 12 +-
doc/guides/contributing/versioning.rst | 591 ---------------------
doc/guides/rel_notes/deprecation.rst | 2 +-
10 files changed, 851 insertions(+), 604 deletions(-)
create mode 100644 doc/guides/contributing/abi_policy.rst
create mode 100644 doc/guides/contributing/abi_versioning.rst
create mode 100644 doc/guides/contributing/img/abi_stability_policy.png
create mode 100644 doc/guides/contributing/img/what_is_an_abi.png
delete mode 100644 doc/guides/contributing/versioning.rst
--
2.7.4
next reply other threads:[~2019-09-27 16:54 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-27 16:54 Ray Kinsella [this message]
2019-09-27 16:54 ` [dpdk-dev] [PATCH v6 1/4] doc: separate versioning.rst into version and policy Ray Kinsella
2019-10-01 12:50 ` Hemant Agrawal
2019-10-01 13:19 ` Ray Kinsella
2019-10-21 9:53 ` Thomas Monjalon
2019-10-25 11:36 ` Ray Kinsella
2019-09-27 16:54 ` [dpdk-dev] [PATCH v6 2/4] doc: changes to abi policy introducing major abi versions Ray Kinsella
2019-10-15 15:11 ` David Marchand
2019-10-25 11:43 ` Ray Kinsella
2019-10-24 0:43 ` Thomas Monjalon
2019-10-25 9:10 ` Ray Kinsella
2019-10-28 10:02 ` Thomas Monjalon
2019-10-25 12:45 ` Ray Kinsella
2019-09-27 16:54 ` [dpdk-dev] [PATCH v6 3/4] doc: updates to versioning guide for " Ray Kinsella
2019-09-27 16:54 ` [dpdk-dev] [PATCH v6 4/4] doc: add maintainer for abi policy Ray Kinsella
2019-10-21 9:50 ` [dpdk-dev] [PATCH v6 0/4] doc: changes to abi policy introducing major abi versions Thomas Monjalon
2019-10-21 10:10 ` Ray Kinsella
2019-10-21 14:38 ` Thomas Monjalon
2019-10-22 8:12 ` Ray Kinsella
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1569603283-1857-1-git-send-email-mdr@ashroe.eu \
--to=mdr@ashroe.eu \
--cc=aconole@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=hemant.agrawal@nxp.com \
--cc=jerinj@marvell.com \
--cc=john.mcnamara@intel.com \
--cc=konstantin.ananyev@intel.com \
--cc=ktraynor@redhat.com \
--cc=marko.kovacevic@intel.com \
--cc=maxime.coquelin@redhat.com \
--cc=nhorman@tuxdriver.com \
--cc=olivier.matz@6wind.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).