All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas@monjalon.net>
To: "Burakov, Anatoly" <anatoly.burakov@intel.com>
Cc: techboard@dpdk.org, Ray Kinsella <mdr@ashroe.eu>,
	Bruce Richardson <bruce.richardson@intel.com>,
	dev@dpdk.org, Kevin Traynor <ktraynor@redhat.com>
Subject: Re: [dpdk-dev] [dpdk-techboard]  DPDK ABI/API Stability
Date: Sun, 07 Apr 2019 11:48:48 +0200	[thread overview]
Message-ID: <7166381.CkH77a7QuE@xps> (raw)
In-Reply-To: <455a61b4-891d-eaaf-d784-2be884bcacbd@intel.com>

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 :-)



  reply	other threads:[~2019-04-07  9:48 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-03 15:42 DPDK ABI/API Stability Ray Kinsella
2019-04-03 19:53 ` Luca Boccassi
2019-04-04  9:29 ` Burakov, Anatoly
2019-04-04 10:54   ` [dpdk-techboard] " Bruce Richardson
2019-04-04 12:02     ` Luca Boccassi
2019-04-04 13:05       ` Ray Kinsella
2019-04-04 13:10         ` Bruce Richardson
2019-04-05 13:25           ` [dpdk-dev] " Ray Kinsella
2019-04-07  9:37             ` Thomas Monjalon
2019-04-04 13:21         ` Luca Boccassi
2019-04-04 12:52     ` Ray Kinsella
2019-04-04 14:07       ` Burakov, Anatoly
2019-04-07  9:48         ` Thomas Monjalon [this message]
2019-04-08  9:04           ` [dpdk-dev] " Ray Kinsella
2019-04-08 10:15             ` Burakov, Anatoly
2019-04-08 13:00               ` Ray Kinsella
2019-04-08 13:38                 ` Burakov, Anatoly
2019-04-08 13:58                   ` David Marchand
2019-04-08 14:02                     ` Burakov, Anatoly
2019-04-08 14:38                       ` David Marchand
2019-04-08 15:13                         ` Stephen Hemminger
2019-04-08 15:49                         ` Burakov, Anatoly
2019-04-10  8:35                           ` David Marchand
2019-04-08 15:50                         ` Burakov, Anatoly
2019-04-09  9:42                   ` Ray Kinsella
2019-04-14  0:42             ` Neil Horman
2019-04-15  9:10               ` Bruce Richardson
2019-04-04 15:51     ` Stephen Hemminger
2019-04-04 16:37       ` Burakov, Anatoly
2019-04-04 16:56     ` Kevin Traynor
2019-04-04 19:08       ` Wiles, Keith
2019-04-04 20:13         ` Kevin Traynor
2019-04-05 13:30           ` [dpdk-dev] " Ray Kinsella
2019-04-05 13:29         ` Ray Kinsella
2019-04-04  9:47 ` Kevin Traynor
2019-04-04 13:16   ` Ray Kinsella
2019-04-10  5:14 ` [dpdk-dev] " Honnappa Nagarahalli
2019-04-10  9:03   ` [dpdk-dev] [dpdk-techboard] " Bruce Richardson
2019-04-10  9:43   ` [dpdk-dev] " Luca Boccassi

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=7166381.CkH77a7QuE@xps \
    --to=thomas@monjalon.net \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ktraynor@redhat.com \
    --cc=mdr@ashroe.eu \
    --cc=techboard@dpdk.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.