[dpdk-dev] Why nothing since 1.8.0?

Neil Horman nhorman at tuxdriver.com
Mon Jan 19 14:30:03 CET 2015


On Sun, Jan 18, 2015 at 09:48:33PM +0000, O'driscoll, Tim wrote:
> > -----Original Message-----
> > From: Neil Horman [mailto:nhorman at tuxdriver.com]
> > Sent: Sunday, January 18, 2015 6:25 PM
> > To: O'driscoll, Tim
> > Cc: Thomas Monjalon; dev at dpdk.org
> > Subject: Re: [dpdk-dev] Why nothing since 1.8.0?
> > 
> > On Sat, Jan 17, 2015 at 07:57:04PM +0000, O'driscoll, Tim wrote:
> > > I'm going to risk the wrath of the open source purists amongst you by top-
> > posting. The reason is that there has been lots of email on this subject, and I
> > want to summarise the key issue and clearly state our position on it.
> > Hoperfully nobody is offended by this!
> > >
> > Acutally, I am a bit upset by your doing this.  While top posting can be an
> > acceptible response form, doing so in an interleaved thread gives you the
> > opportunity to effectively rewrite the conversation on your own terms.
> > While
> > you might have summarized your position accurately in your mind, you've
> > discarded all the evidence that I presented in opposition.  I don't appreciate
> > that.  But we can rebuild from here, no worries.
> > 
> > > This thread has generated lots of debate, which is good, and there are a
> > number of items that I believe everybody agrees on (having a MAINTAINERS
> > file, better tools etc.). However, the key issue that we do not agree on is the
> > granularity of the repositories within DPDK.
> > >
> > No, thats not really the crux of the debate in my mind anymore, though that
> > is
> > certainly part of it, as it effects the convienience of developers to contribute
> > to the project.  More to the point, the area of disagreement here is the best,
> > most efficient way to integrate patches to various pieces of the dpdk that
> > balances developer convienience, effiency and transparency (I've not
> > ennumerated
> > that last part before, as I've not thought of the right word, and that may still
> > not be quite right, but more on it later).
> > 
> > > The current state is:
> > > - One master repository
> > > - A small number of sub-repositories, each with a separate
> > maintainer/SME, including: i40e, fm10k, bnx2x, docs, dts. These are used to
> > generate pull requests to the main repo.
> > >
> > No, this is not the current state.  The current state is:
> > - One master repository
> 
> We have a repository for docs, with a separate maintainer that was used to generate pull requests for 1.8. From our perspective that worked well.
> For i40e, 1.8 development was done in the main repository, and we agreed to transition to a separate repo for 2.0. 2.0 development is currently in progress.
> We haven't upstreamed anything for fm10k yet, but that will be done in its own repo from the start, for the 2.0 release.
> 
> > We have lots of cloned dpdk trees on dpdk.org, but there is no path from
> > them to
> > the master repository.  Nothing has been comitted to any of the subtrees,
> > despite having been open for a few months now.
> 
> The plan is to use the i40e and fm10k repos for 2.0 development, which is in progress.
> 
> >  I don't see any
> > documentation
> > indicating who the maintainer of each tree is, and so don't have the foggiest
> > idea who to contact if I want to get something merged to these trees.  They
> > aren't subtrees, they're just clones of the master repository.
> 
> A MAINTAINERS file to clarify responsibilities is a good idea.
> 
> > > You're proposing the following:
> > > - Remove the individual PMD repositories, and replace them with a single
> > repository containing all PMDs, plus parts of the core code that are closely
> > linked to the PMDs, with you as the maintainer and SMEs for each PMD.
> > >
> > Not necesarily me, mind you (though yes, I've volunteered).  I'm happy for
> > someone else to take on this role if they volunteer.  The point is not to have
> > a
> > separate repo to integrate patches for any one PMD (as theres no need, and
> > it
> > makes development harder).  I want one repository that I can use to target
> > development against all PMDs, just like we do with net/net-next in the linux
> > community.
> > 
> > > As I've said before, and as Venky has also explained in private email on this,
> > we do not agree with this proposed change. We believe it would be a
> > backward step, and would have an adverse impact on DPDK.
> > >
> > You've asserted that several times, but not once have you provided any
> > supporting evidence or data to back that assertion.  Conversely I've provided
> > several bits of evidence to support my assertion that using the linux
> > workflow
> > model would work perfectly well here and handle all our needs (which
> > include,
> > but are not limited to, yours).
> 
> The reason is to give as much control as possible to the people most familiar with the PMD code and the corresponding NIC hardware.
> 
> > > The key issue here is that we've deliberately tried to give as much control
> > as possible to those who are intimately familiar with a particular PMD and the
> > underlying hardware. In our view, that's just common sense. What you're
> > proposing is to take some of that control away, and give it to someone else
> > (in this case you) who isn't familiar with the details. We don't agree with that
> > approach.
> > >
> > Yes, you have proposed that.  The question is, why?  People intimately
> > familiar
> > with the code should be writing and reviewing code.  Why do they need the
> > responsibility for integration as well?  Thats really the question.  Answer
> > that, and perhaps we can make some process on this issue.  Tell me how one
> > of
> > the people most familiar with a given piece of hardware and the software
> > that
> > drives it having the added responsibility of handling the trivial operations of
> > SCM helps you, or anyone else?  I'll point out again here that there are 6 I40e
> > patches on the DPDK list, some as old as November 20th of last year.  4 have
> > been ACK'd, but none have been integrated, with no additional commentary
> > from
> > the experts who are tasked with the patch management role.  How is that
> > efficient, transparent or condusive to development?
> 
> We're doing a lot of work on i40e and fm10k at the moment. In both cases, somebody needs to fill the maintainer role. That could be someone familiar with the PMD code and NIC hardware, or it could be somebody without this depth of knowledge. The current situation is the first option. It's true that it doesn't have to be done that way, but it seems sensible to give as much control as possible to the people with the expertise in these areas. We just believe that this will allow for more efficient development as the maintainer will have a detailed understanding of what they're applying.
> 
> > > The arguments I've heard in favour of your proposal are summarised
> > below. Apologies for paraphrasing, and for any errors, but the email thread is
> > too big and too convoluted to address these all separately. I've also included
> > an explanation for each item to say why we don't believe they're sufficient to
> > justify your proposed change.
> > >
> > I thought we were doing just fine with the conversation.  The paraphrasing
> > here
> > is why I was upset by your top post.  You convieniently ignored all my
> > supporting evidence.
> > 
> > > 1. Your proposal is consistent with the Linux kernel, but current state is not.
> > > In both cases (current state and your proposal), the workflow is exactly the
> > same as the Linux kernel. The difference we're discussing is simply the
> > granularity of the repositories.
> > >
> > Thats simply not true.  My proposal is consistent with the linux kernel model,
> > but what you want in no way is.  The graunularity is diffferent as you note,
> > but
> > you're adding in this requirement whereby a developer for a given PMD
> > must be
> > the tree maintainer for a subtree solely for the purpose of maintaining that
> > PMD.  That in no way shape or form resembles the linux kernel model.  If you
> > wish to do that internally to Intel, thats great, and you have all the ability
> > to do that, but to mandate it as part of the community project is anathema to
> > the way the linux workflow works, and open source projects in general.
> 
> We're not mandating that at all. What we're saying is that this is the approach that's in place for fm10k and i40e, and that we don't agree with your proposal to change this. For other PMDs, the model could be different.
> 
> > > DPDK is much smaller than the kernel, so the granularity is naturally going
> > to be different. The kernel may combine drivers into a single repository due
> > to its size and complexity, but that doesn't mean we need to do the same for
> > DPDK.
> > >
> > Why?  You're right in the most general of senses, diffferent projects can
> > work
> > differently, but being different in one way (size/complexity), doesn't
> > mandate
> > that it be different in another way (workflow).  We can (and are) exploring
> > different ways to implement workflows here, but the question is one of
> > reason.
> > The kernel combines drivers into a single respository because its a natural
> > functional separation that allows Linus to divide the workload to
> > subordinates,
> > while still giving contributing developers a canonical place to go for their
> > development target needs.  Its efficient (As I calculated before in the
> > interleaved section below, Dave Miller integrates either from pull requests or
> > individual posts, over 1000 patches on average every 2 month release cycle),
> > fast (even though every patch goes to the mailing list, gets reviewed, and
> > acked), and convienient for all developers.
> > 
> > Conversely, the I40e driver has seen 114 patches in the last 6 month period
> > to
> > the DPDK.  What is it about dpdk PMD's that makes a process that is as
> > efficient, fast and transparent as the upstream kenrel's unacceptible to you?
> 
> I still believe the workflow and process are the same in both cases. In both cases there's a subtree to which a maintainer applies patches and then generates pull requests to the main repo. The difference in your proposal is the granularity of the subtree.
> 
> > > 2. Maintainer and SME are separate roles and should not be combined.
> > > We understand that they're separate roles. For the PMDs that we're
> > developing, the most efficient way for us to manage the work is to combine
> > these and have one of our SMEs act as maintainer as well. That's an internal
> > decision that suits the structure of our development team and the current
> > state of the i40e and fm10k PMDs. Others are obviously free to make their
> > own choices for PMDs that they're developing.
> > >
> > Thats a really interesting thing to say.  You made an internal decision,  but
> > this isn't an internal project.  This is a community project.  If you want an
> > internal tree to commit patches too, thats fine, you can and should do that
> > for
> > whatever internal workflow suits your needs, but before they get merged to
> > the
> > community project (which includes the I40e driver), they need to get posted
> > to
> > the community list to allow any and all an opportunity to review them (even
> > if
> > they choose not to, they deserve the opportunity). 
> 
> All of our work is posted to the mailing list and available to anybody in the community to review. That's been the case since the 1.7 release.
> 
> > It seems that, while you
> > haven't said it in so many words, you are looking for ways to accelerate that
> > process, and potentially cutting out the community in the process.
> 
> Absolutely not.
> 
> > Let me ask a question here: Do you intend to post all the I40e patches that
> > you
> > plan to commit to the I40e tree to the DPDK list?  Or do you plan to integrate
> > them to the tree using only internal review, and then send a pull request to
> > the
> > list?  If you are planning on doing the latter, that would explain your desires
> > to merge the tree maintainer and SME role, but would be a huge step
> > backwards
> > from all of the progress you've made toward making this project a true
> > community
> > project.  As Stephen indicates, what you're then doing is creating several
> > out-of-tree drivers, and that would be totally unacceptable.  You're of course
> > welcome to do so, but I would not accept any workflow in which changes to
> > code
> > did not have patches posted to the list.
> 
> As above, all of our work has been, and will continue to be, posted to the mailing list and is open to anybody in the community to review.
> 
> > > 3. A maintainer can handle a higher volume of patches than will be present
> > in any individual PMD.
> > > That's true, but it's also not relevant. Our goal is not to make the
> > SME/maintainer for i40e, fm10k etc. a full-time position. Our goal is to have
> > an expert in this position, so that we can move quickly and still ensure good
> > quality software.
> > >
> > Please re-read your above statement. I think you're contradicting yourself
> > 1) You agree that a tree maintainer can handle a higher volume of patches
> > than
> > any one PMD presents, implying that a tree maintainer can, when properly
> > focused, efficiently take the feedback of SME's and integrate many patches
> > quickly.
> > 
> > 2) You claim (1) is irellevant because because your goal is to put an expert in
> > the position of tree maintainer so that you can move more quickly.
> > 
> > If you agree that (1) allows for a fast, efficient and transparent workflow,
> > how
> > can you both claim it is both irrelevant and that you need a merged SME/tree
> > maintainer role to achieve the same goal?
> > 
> > Question: How exactly do you believe putting an SME in the role of tree
> > maintainer will improve code quality and make code integration faster?
> 
> I think Thomas is a good example here. Theoretically, someone in his role would not need any knowledge of DPDK, since they would just be fulfilling an SCM function. However, I believe his knowledge and understanding of DPDK have been crucial in building the community and getting the project to the stage it's at now. The same applies for i40e and fm10k maintainers. We believe that having experts in these roles is the most efficient way to make progress.
> 
> > > 4. We shouldn't give maintainer work to an SME as it detracts from their
> > other tasks.
> > > We don't anticipate a problem with workload for the people that we have
> > in these positions.
> > You're having that problem right now, you just refuse to acknoweldge it.  Let
> > me
> > present it for you:
> > http://dpdk.org/dev/patchwork/project/dpdk/list/?q=I40e
> > 
> > That shows the only 6 patches that have been posted for I40e since 1.8
> > released,
> > ranging dating back as far as November 20th.  These patches have been
> > sittting
> > on the list since then unacted upon.  If fact, taking a closer look, its a bit
> > worse than that.  The X710 patch in that list has been integrated, but a
> > version
> > different from the one in patchwork.  Its probably just an oversight, but the
> > fact remains, whoever is doing your subtree maintenence is focused on your
> > internal needs and is ignoring their community responsibilities.  Thats a
> > problem.
> 
> This is work in progress. We're confident that we'll have the necessary i40e changes in place for 2.0.
> 
> > > 5. There will be extra overhead for developers who want to implement
> > changes spanning multiple PMDs.
> > > That's true, but it's also something of a hypothetical argument. The people
> > who've spoken against your proposal on the mailing list are from Intel and
> > 6Wind, who are also the people contributing to most of these PMDs. I had a
> > quick scan of the commits to see if I could spot anything from another
> > contributor that might fall into this category, and I couldn't (admittedly it
> > wasn't an exhaustive search, which someone else is free to do if they want).
> > If this situation does arise, then Thomas has previously outlined how it can be
> > handled.
> > 
> > Its not a hypothetical argument at all.  We have this situation upstream every
> > time someone makes a patch that crosses subsystems, and its managed by
> > the
> > maintainers co-ordinating their efforts when merge time comes along.  Thats
> > why
> > its so important to find the right granularity for subtrees, so that extra
> > effort is minimized.
> > 
> > And yes, you're right, most of the contributors currently are from 6wind and
> > Intel.  The goal here is to spread that participation beyond just the two of
> > you.  If you don't have a tree-maintainer that is actively handling patches on
> > the list, getting things integrated in a timely fashion, no one is going to
> > bother participating.
> > 
> > As for handling it using the workaround thomas has proposed, I've made my
> > arguments to that effect already several times, but you've neglected to
> > summarize them here with your top post, so let me re-iterate:
> > Patch sets that cross subtrees are a challenge no matter how you slice them.
> > If
> > you have subtrees at a reasonable granularity, subtree maintainers can work
> > together to ensure that the upstream merge goes smoothly.  If you force a
> > tree
> > spanning patch to be done in the parent tree you will have merge work to do
> > for
> > each subtree that sends you a pull request.  Having a few subtree
> > maintainers
> > handle that work is preferable than having to do merge fixups in the main
> > tree.
> > The main tree should whenever possible have clean merges.
> 
> My comment was saying that we should give weight to the views of the people who are currently doing the work in these areas. These people are strongly of the opinion that it's better to continue with the current approach.
> 
> > > In terms of where we go from here, I'd suggest the following:
> > > - Thomas has already asked us about a maintainer for older Intel NICs,
> > which we're looking into. We may choose to have a single repository with a
> > single maintainer/SME for e1000/igb/ixgbe combined, which would limit the
> > overall number of repositories.
> > > - You could pursue a path of having a single repository for non-Intel NICs.
> > This would obviously need to be worked with those responsible (Stephen,
> > Sujith etc.).
> > > - As Thomas previously suggested, we should review this in future, possibly
> > after 2.0. Maybe you'll be proven right and we'll all have to apologise for
> > disagreeing!
> > 
> > It sounds like you've already made a decision.  Thats really disheartening.
> > You've gone to alot of effort to make this project more open, and I'd like to
> > encourage you further in that direction.  But your comments above really
> > make
> > me think that you're hoping to isolate your development efforts, which is a
> > step
> > in the wrong direction.
> 
> What I'm doing is stating our position on your proposal, and giving my suggestions for how we move forward. There's no decision made that I'm aware of, and we're not in a position to make a decision in isolation anyway.
> 
> I suspect this is something that we will never agree on. That's fine, as we all have different opinions, and diverse opinions make for a healthy community. In this situation, our view would be that we should continue with the current approach and review again in future, as Thomas has suggested.
> 
> 

I agree, we're not going to agree on this, and you've clearly already made your
decisions and gotten Thomas to agree, so I'm done wasting my time here.

Neil



More information about the dev mailing list