From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 3C067A0679 for ; Wed, 3 Apr 2019 17:42:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2EB561B4B0; Wed, 3 Apr 2019 17:42:24 +0200 (CEST) Received: from relay0104.mxlogin.com (relay0104.mxlogin.com [199.181.239.104]) by dpdk.org (Postfix) with ESMTP id 9F59A1B4A6; Wed, 3 Apr 2019 17:42:22 +0200 (CEST) Received: from filter002.mxroute.com (unknown [94.130.183.33]) by relay0104.mxlogin.com (Postfix) with ESMTP id C5F48CBC00DA; Wed, 3 Apr 2019 10:42:21 -0500 (CDT) Received: from localhost (unknown [23.92.70.113]) by filter002.mxroute.com (Postfix) with ESMTPS id 05FF23F036; Wed, 3 Apr 2019 15:42:21 +0000 (UTC) Received: from jfdmzpr05-ext.jf.intel.com ([134.134.139.74]) by localhost with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.89) (envelope-from ) id 1hBi2Z-0002Yl-Sq; Wed, 03 Apr 2019 11:43:04 -0400 To: dev@dpdk.org, Kevin Traynor , "techboard@dpdk.org" From: Ray Kinsella Openpgp: preference=signencrypt Autocrypt: addr=mdr@ashroe.eu; keydata= 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 Message-ID: Date: Wed, 3 Apr 2019 16:42:16 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-AuthUser: mdr@ashroe.eu Subject: [dpdk-dev] DPDK ABI/API Stability 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" Message-ID: <20190403154216.XaXFGv5qwP8_UZpTrUIl3mAwy4_onYGLv560mxiQlG8@z> Hi folks, Recently I started a discussion with the DPDK Technical Board on DPDK ABI/API stability. This was born out informal feedback I had received from a number of users of DPDK about ABI churn. In turn this feedback then prompted an ABI analysis of DPDK using tools from abi-laboratory. https://abi-laboratory.pro/index.php?view=timeline&l=dpdk I guess the short story is that DPDK ABI hasn't really settled down as the project has matured. If you take a look at the “Backward Compat.” column which measures ABI compatibility compared to the previous releases, you will see significant churn in the ABI over successive releases since v16.04. Now compare DPDK to GStreamer as an example of a very mature project with a similar intent, a framework for building applications, and which enjoys a very stable API. https://abi-laboratory.pro/index.php?view=timeline&l=gstreamer The DPDK ABI churn has the following affects for users:- 1. The churn obliges users of DPDK to commit to a constant re-integration and re-validation effort for new versions of DPDK. This effort from their perspective may not add value to their consuming project, particular if they are only updating to "stay current". 2. The churn encourages users of DPDK to slip versions, putting off reintegration to later, building up technical debt and causing their projects to miss support for new hardware or features. 3. It makes DPDK different to almost every other system library and framework that an operating systems might ship. This makes DPDK trickier to dynamically link against, package and maintain for OS maintainers. In order to address this issue, I have put together the minimal set of concrete proposals below for discussion at the Technical Board next Wednesday. I wanted to share this, as these might not yet be the right proposals, however I am putting them out there for feedback to start the discussion. Thanks, Ray K Experimental API 1. APIs designated as experimental are not considered part of the ABI and may change without warning at any time. 2. APIs designated as experimental must be marked depreciated for a least one quarterly release before removal. 3. APIs designated as experimental will no longer automatically graduate to core after one release, they may stay experimental until their author and the maintainer agree that graduation is appropriate. Core API (non-experimental API) 4. APIs designated as core must be depreciated for a least two years before removal, to facilitate the continued compatibility with LTS releases. A final removal notice will be published to the DPDK Mailing List, and if there are no strong objections only then an API may be removed. 5. APIs designated as core may be changed as follows:- 5.a The change proposer must demonstrated that the change has a supporting use case and could not be achieved in any other way. 5.b ABI version compatibility must be retained, as described below. Shared Libraries 6. DPDK will move to shared libraries & dynamic linking by default, to accommodate greater use of ABI versioning by DPDK consumers. ABI Versioning 7. New quarterly releases of DPDK will remain ABI compatible with the most recent DPDK LTS release. (e.g. DPDK 19.08 will remain ABI compatible with DPDK LTS 18.11). 8. New DPDK LTS releases will remain ABI compatible with the previous two DPDK LTS releases. (e.g. DPDK 20.11 will be ABI compatible with DPDK 19.11 and DPDK 18.11, DPDK 21.11 will be ABI compatible with DPDK 20.11 and DPDK 19.11 etc) 8. & 9. will be achieved with ABI symbol versioning.