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

Reply via email to