From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 40044A32A4 for ; Fri, 25 Oct 2019 18:29:02 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DF34F1E4E2; Fri, 25 Oct 2019 18:29:01 +0200 (CEST) Received: from relay0205.mxlogin.com (relay0205.mxlogin.com [199.181.239.205]) by dpdk.org (Postfix) with ESMTP id 166011E4E0 for ; Fri, 25 Oct 2019 18:29:01 +0200 (CEST) Received: from filter004.mxroute.com (unknown [116.203.155.46]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay0205.mxlogin.com (Postfix) with ESMTPS id 0C98ECCB0305; Fri, 25 Oct 2019 11:29:00 -0500 (CDT) Received: from galaxy.mxroute.com (unknown [23.92.70.113]) by filter004.mxroute.com (Postfix) with ESMTPS id DE9573E9FE; Fri, 25 Oct 2019 16:28:52 +0000 (UTC) Received: from [192.198.151.44] (helo=localhost) by galaxy.mxroute.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1iO2H6-0000bq-UY; Fri, 25 Oct 2019 12:17:17 -0400 From: Ray Kinsella 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 Date: Fri, 25 Oct 2019 17:28:36 +0100 Message-Id: <1572020920-5700-1-git-send-email-mdr@ashroe.eu> X-Mailer: git-send-email 2.7.4 X-AuthUser: mdr@ashroe.eu Subject: [dpdk-dev] [PATCH v7 0/4] doc: changes to abi policy introducing major abi versions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" TL;DR abbreviation: A major ABI version that all DPDK releases during an agreed 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, released aligned with the LTS release and maintained for one year through subsequent releases. The intention is that the one year abi support period, will then be reviewed after the initial year with the intention of lengthening the 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. v7 * PNGs are now SVG. Some additional clarifications. Fixed typos and grammatical errors. (as suggested by Thomas Monjalon and David Marchand) 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.svg | 1059 ++++++++++++++++++++ doc/guides/contributing/img/what_is_an_abi.svg | 382 +++++++ 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 | 5 +- 10 files changed, 2294 insertions(+), 605 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.svg create mode 100644 doc/guides/contributing/img/what_is_an_abi.svg delete mode 100644 doc/guides/contributing/versioning.rst -- 2.7.4