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 71377A0096 for ; Sun, 7 Apr 2019 11:48:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C2A972BC9; Sun, 7 Apr 2019 11:48:52 +0200 (CEST) Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by dpdk.org (Postfix) with ESMTP id E32955A; Sun, 7 Apr 2019 11:48:51 +0200 (CEST) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 7011421E90; Sun, 7 Apr 2019 05:48:51 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sun, 07 Apr 2019 05:48:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding:content-type; s=mesmtp; bh=RvaSG2OvNBVz5UjrXk6L6uETfJvA2TWQqpEyj7209Oo=; b=gyrVqhXFaQj3 u+gJJUDHwMov1+M8votbzcWw5NCDx70PrfqRgveWJ7XC71z9c2hBOc4+h4o/7CAP onNLsVTU9rfeCwKTwO/gsL9auhOdy5PQDvZYAcNICamKC64lu3z/M5+7fJ/6Fl3X KgSa304ppSBn4NXKYRPg4hGbed42PEA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; bh=RvaSG2OvNBVz5UjrXk6L6uETfJvA2TWQqpEyj7209 Oo=; b=r3MMk9d40iASWQ/DapdsVJhN2vuAja54o6/h5jPdG7oDD6LYo6OeZhzq0 N3D5JxWSYaqw/oXTujYAmbdXZssHOCujYfJP56V6nTkjXO0Iwix82e2VuGgfoUjp QihxL/jLFujELF1ysWJgSIFES7j7fNeFJ0KEjVlFif5CUUoD27ISKFIwHjxZCQDo tSf9rdndsJZWU9gRzg+MU1iknhCdwlUuL+my4jcCnEM9uspYjmGPmQUDf7+WXB+E bOd67Trsq0t1SH16kvGTCc5MIjK1geKV1tH6E++hmciXyGC0hQzdd9q7xtLKd2GF 3vX5d7JoJwdX3DypejOKIboFUgKtw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduuddruddugddvtdculddtuddrgedutddrtddtmd cutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefhvffufffkjghfggfgtgesthfuredttddtvden ucfhrhhomhepvfhhohhmrghsucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrg hlohhnrdhnvghtqeenucfkphepjeejrddufeegrddvtdefrddukeegnecurfgrrhgrmhep mhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtnecuvehluhhsth gvrhfuihiivgeptd X-ME-Proxy: Received: from xps.localnet (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id D4FA210316; Sun, 7 Apr 2019 05:48:49 -0400 (EDT) From: Thomas Monjalon To: "Burakov, Anatoly" Cc: techboard@dpdk.org, Ray Kinsella , Bruce Richardson , dev@dpdk.org, Kevin Traynor Date: Sun, 07 Apr 2019 11:48:48 +0200 Message-ID: <7166381.CkH77a7QuE@xps> In-Reply-To: <455a61b4-891d-eaaf-d784-2be884bcacbd@intel.com> References: <455a61b4-891d-eaaf-d784-2be884bcacbd@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [dpdk-techboard] 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: <20190407094848.AiXw_rnRaenNh2kXqQeBAbq_qDo6tq6gnfn3DI-AGN4@z> 04/04/2019 16:07, Burakov, Anatoly: > On 04-Apr-19 1:52 PM, Ray Kinsella wrote: > > On 04/04/2019 11:54, Bruce Richardson wrote: > >> On Thu, Apr 04, 2019 at 10:29:19AM +0100, Burakov, Anatoly wrote: > >>> On 03-Apr-19 4:42 PM, Ray Kinsella wrote: > >> Actually, I think we *do* need to constrain the pace of development for the > >> sake of ABI stability. At this stage DPDK has been around for quite a > >> number of years and so should be considered a fairly mature project - it > >> should just start acting like it. > > > > I 100% agree. > > > > If you break your users stuff regularly enough, they will eventually > > start looking around for an alternative that doesn't break their stuff > > quiet so regularly. > > > > We often use the pace of innovation in DPDK as justification for ABI/API > > breakages, but that approach is a real rarity among the Open Source > > community. I can't think of any mature project off-hand that share's it. > > > > I would ask is Linux any less innovative because they offer a stable API > > and have an absolute commitment to never breaking userspace? Would Linux > > have ever been as popular as it is today it they broke userspace every > > quarter? > > > > They reality is that they (Linux) find workarounds and compromise > > because there is an uber-maintainer Linus who had a strong ethos from > > the start not to break their users stuff - we need the same ethos in DPDK. > > > >> > >> Now, in terms of features like the memory rework, that is indeed a case > >> that there was no alternative other than a massive ABI break. However, for > >> that rework there was a strong need for improvement in that area that we > >> can make the case for an ABI break to support it - and it is of a scale > >> that nothing other than an ABI change would do. For other areas and > >> examples, I doubt there are many in the last couple of years that are of > >> that scale. > > > > I would also be inclined to agree with Bruce's points on memory rework > > was somewhat of an outlier, we don't see many like it. > >> My thoughts on the matter are: > >> 1. I think we really need to do work to start hiding more of our data > >> structures - like what Stephen's latest RFC does. This hiding should reduce > >> the scope for ABI breaks. > >> 2. Once done, I think we should commit to having an ABI break only in the > >> rarest of circumstances, and only with very large justification. I want us > >> to get to the point where DPDK releases can immediately be picked up by all > >> linux distros and rolled out because they are ABI compatible. > > > > The work that Anatoly describes removing APIs that exposed internal > > structures and Stephen H's RFC similarly are good examples of the kind > > of work required to prepare for this change. We need to take a good look > > at the API and reduce the number of unnecessary internal structures > > exposed. > > > > I never expected it going to to be a big bang - but is a definite > > direction we need to move towards over the next few release. > > ...in this case, we have to think long and hard about the fabled EAL > rework/split, and in general *specifying* what is it that we want to > support, and the use cases that we want to target. Right now there is a > huge mountain of technical debt and kludges and workarounds that has > accumulated over the years, and it exists precisely because "every > change breaks someone's workflow". > > For example, just in memory subsystem alone, we have legacy mem, because > some use cases require huge amounts of contiguous memory, and not > everyone is using VFIO; there's all of the 32-bit related workarounds > and hacks; there's the single-file-segments stuff that could have been > the default if not for the fact that we support kernels that don't > support fallocate(); there are two different ways of doing in-memory > mode, because not all kernels support memfd's; there is a gargantuan > pile of workarounds (and "known issues", and just code in general) all > over the DPDK codebase just to support our multiprocess model and all of > the various warts that come with it. > > In fact, i would even go as far as to say that *most* of EAL ABI breaks > have been due to the fact that we store data in shared memory because of > multiprocess - so there is simply no way we can change these internal > data structures without ABI breaks, because even if they're not exposed > through user-facing API, they are still exposed by virtue of secondary > processes basically having an ABI contract with primary process instances. > > So, if we are to cement our core API - we have to make a concrete effort > to specify what goes and what stays, if we want it to be maintainable. > The DPDK 1.0 specification, if you will :) "DPDK 1.0 specification", that's a great project name :-)