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