From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 2C3B712A8 for ; Sun, 18 Jan 2015 22:48:37 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP; 18 Jan 2015 13:43:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,862,1389772800"; d="scan'208";a="442048338" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by FMSMGA003.fm.intel.com with ESMTP; 18 Jan 2015 13:35:24 -0800 Received: from irsmsx102.ger.corp.intel.com ([169.254.2.28]) by IRSMSX106.ger.corp.intel.com ([169.254.8.94]) with mapi id 14.03.0195.001; Sun, 18 Jan 2015 21:48:33 +0000 From: "O'driscoll, Tim" To: Neil Horman Thread-Topic: [dpdk-dev] Why nothing since 1.8.0? Thread-Index: AQHQMDgkRICerg8+NU+uGsyD3xhjm5zAGjKAgAB5GwCAAANIgIAAWrAAgAA2YQCAAEhygIAAF++AgAAuIsCAAUKzgIABxIRwgAF6XACAABMFsA== Date: Sun, 18 Jan 2015 21:48:33 +0000 Message-ID: <26FA93C7ED1EAA44AB77D62FBE1D27BA54CA4FD5@IRSMSX102.ger.corp.intel.com> References: <20150114122352.63ef79eb@urahara> <1717148.0lUn7GOqmp@xps13> <20150115130616.GA22455@hmsreliant.think-freely.org> <12253538.YOLaLVcskf@xps13> <20150115185112.GC22455@hmsreliant.think-freely.org> <26FA93C7ED1EAA44AB77D62FBE1D27BA54C9978E@IRSMSX102.ger.corp.intel.com> <20150116165119.GC27496@hmsreliant.think-freely.org> <26FA93C7ED1EAA44AB77D62FBE1D27BA54CA4BCC@IRSMSX102.ger.corp.intel.com> <20150118182508.GA21891@hmsreliant.think-freely.org> In-Reply-To: <20150118182508.GA21891@hmsreliant.think-freely.org> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] Why nothing since 1.8.0? X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jan 2015 21:48:38 -0000 > -----Original Message----- > From: Neil Horman [mailto:nhorman@tuxdriver.com] > Sent: Sunday, January 18, 2015 6:25 PM > To: O'driscoll, Tim > Cc: Thomas Monjalon; dev@dpdk.org > Subject: Re: [dpdk-dev] Why nothing since 1.8.0? >=20 > 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 t= op- > 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 appre= ciate > that. But we can rebuild from here, no worries. >=20 > > 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 th= at > is > certainly part of it, as it effects the convienience of developers to con= tribute > 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 tha= t > 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 ma= y still > not be quite right, but more on it later). >=20 > > 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 pro= gress. 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 i= n progress. > I don't see any > documentation > indicating who the maintainer of each tree is, and so don't have the fogg= iest > idea who to contact if I want to get something merged to these trees. Th= ey > 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 singl= e > repository containing all PMDs, plus parts of the core code that are clos= ely > 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 fo= r > 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, an= d > it > makes development harder). I want one repository that I can use to targe= t > development against all PMDs, just like we do with net/net-next in the li= nux > community. >=20 > > As I've said before, and as Venky has also explained in private email o= n 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 prov= ided > 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 famili= ar with the PMD code and the corresponding NIC hardware. > > The key issue here is that we've deliberately tried to give as much con= trol > as possible to those who are intimately familiar with a particular PMD an= d 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 el= se > (in this case you) who isn't familiar with the details. We don't agree wi= th 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. Answ= er > that, and perhaps we can make some process on this issue. Tell me how on= e > 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 operati= ons 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 h= ave > 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, s= omebody needs to fill the maintainer role. That could be someone familiar w= ith the PMD code and NIC hardware, or it could be somebody without this dep= th 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 jus= t believe that this will allow for more efficient development as the mainta= iner 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 thre= ad is > too big and too convoluted to address these all separately. I've also inc= luded > an explanation for each item to say why we don't believe they're sufficie= nt to > justify your proposed change. > > > I thought we were doing just fine with the conversation. The paraphrasin= g > here > is why I was upset by your top post. You convieniently ignored all my > supporting evidence. >=20 > > 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 exactl= y 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 m= odel, > but what you want in no way is. The graunularity is diffferent as you no= te, > 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 t= hat > 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 ab= ility > to do that, but to mandate it as part of the community project is anathem= a 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 appr= oach 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 g= oing > 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) explori= ng > different ways to implement workflows here, but the question is one of > reason. > The kernel combines drivers into a single respository because its a natur= al > functional separation that allows Linus to divide the workload to > subordinates, > while still giving contributing developers a canonical place to go for th= eir > development target needs. Its efficient (As I calculated before in the > interleaved section below, Dave Miller integrates either from pull reques= ts or > individual posts, over 1000 patches on average every 2 month release cycl= e), > fast (even though every patch goes to the mailing list, gets reviewed, an= d > acked), and convienient for all developers. >=20 > Conversely, the I40e driver has seen 114 patches in the last 6 month peri= od > 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 bot= h cases there's a subtree to which a maintainer applies patches and then ge= nerates 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 combin= e > these and have one of our SMEs act as maintainer as well. That's an inter= nal > 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 wan= t an > internal tree to commit patches too, thats fine, you can and should do th= at > for > whatever internal workflow suits your needs, but before they get merged t= o > the > community project (which includes the I40e driver), they need to get post= ed > to > the community list to allow any and all an opportunity to review them (ev= en > if > they choose not to, they deserve the opportunity).=20 All of our work is posted to the mailing list and available to anybody in t= he 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 th= at > you > plan to commit to the I40e tree to the DPDK list? Or do you plan to inte= grate > 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 d= esires > 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 severa= l > out-of-tree drivers, and that would be totally unacceptable. You're of c= ourse > 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 pres= ent > 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 yoursel= f > 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 patche= s > quickly. >=20 > 2) You claim (1) is irellevant because because your goal is to put an exp= ert in > the position of tree maintainer so that you can move more quickly. >=20 > If you agree that (1) allows for a fast, efficient and transparent workfl= ow, > how > can you both claim it is both irrelevant and that you need a merged SME/t= ree > maintainer role to achieve the same goal? >=20 > 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 w= ould not need any knowledge of DPDK, since they would just be fulfilling an= SCM function. However, I believe his knowledge and understanding of DPDK h= ave been crucial in building the community and getting the project to the s= tage it's at now. The same applies for i40e and fm10k maintainers. We belie= ve that having experts in these roles is the most efficient way to make pro= gress. > > 4. We shouldn't give maintainer work to an SME as it detracts from thei= r > 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=3DI40e >=20 > 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 you= r > 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 i40= e 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 pe= ople > who've spoken against your proposal on the mailing list are from Intel an= d > 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 (admittedl= y it > wasn't an exhaustive search, which someone else is free to do if they wan= t). > If this situation does arise, then Thomas has previously outlined how it = can be > handled. >=20 > 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. Tha= ts > why > its so important to find the right granularity for subtrees, so that extr= a > effort is minimized. >=20 > 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 patch= es on > the list, getting things integrated in a timely fashion, no one is going = to > bother participating. >=20 > 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 th= em. > If > you have subtrees at a reasonable granularity, subtree maintainers can wo= rk > 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 N= ICs. > This would obviously need to be worked with those responsible (Stephen, > Sujith etc.). > > - As Thomas previously suggested, we should review this in future, poss= ibly > after 2.0. Maybe you'll be proven right and we'll all have to apologise f= or > disagreeing! >=20 > It sounds like you've already made a decision. Thats really disheartenin= g. > You've gone to alot of effort to make this project more open, and I'd lik= e 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 sugg= estions 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 commu= nity. In this situation, our view would be that we should continue with the= current approach and review again in future, as Thomas has suggested. > Neil >=20 >=20 > > > -----Original Message----- > > > From: Neil Horman [mailto:nhorman@tuxdriver.com] > > > Sent: Friday, January 16, 2015 4:51 PM > > > To: O'driscoll, Tim > > > Cc: Thomas Monjalon; dev@dpdk.org > > > Subject: Re: [dpdk-dev] Why nothing since 1.8.0? > > > > > > On Thu, Jan 15, 2015 at 09:55:00PM +0000, O'driscoll, Tim wrote: > > > > > -----Original Message----- > > > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Neil Horman > > > > > Sent: Thursday, January 15, 2015 6:51 PM > > > > > To: Thomas Monjalon > > > > > Cc: dev@dpdk.org > > > > > Subject: Re: [dpdk-dev] Why nothing since 1.8.0? > > > > > > > > > > On Thu, Jan 15, 2015 at 06:25:33PM +0100, Thomas Monjalon wrote: > > > > > > 2015-01-15 08:06, Neil Horman: > > > > > > > On Thu, Jan 15, 2015 at 10:51:38AM +0100, Thomas Monjalon > wrote: > > > > > > > > 2015-01-15 04:27, Ouyang, Changchun: > > > > > > > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of > Zhang, > > > Helin > > > > > > > > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of > Neil > > > > > Horman > > > > > > > > > > > On Wed, Jan 14, 2015 at 12:23:52PM -0800, Stephen > > > Hemminger > > > > > wrote: > > > > > > > > > > > > Ok, so 1.8.0 came out almost a month ago and none o= f > the > > > > > patches > > > > > > > > > > > > that were deferred waiting for the release got merg= ed > since > > > > > then. > > > > > > > > > > > > Last commit in git is the 1.8.0 release. > > > > > > > > > > > > > > > > > > > > > > > > Where is the post-merge window bundle, where are th= e > > > later > > > > > commits? > > > > > > > > > > > > Lots of patches are sitting rotting in patchwork... > > > > > > > > > > > > > > > > > > > > > > +1, I've had the same questions. > > > > > > > > > > > Neil > > > > > > > > > > > > > > > > > > > > +1, Some patch set might be ready for being merged. > > > > > > > > > > > > > > > > > > +1, the earlier some patches are merged into mainline, a= nd > the > > > easier > > > > > those > > > > > > > > > sequent patch sets can resolve their conflicts. > > > > > > > > > > > > > > > > +1, there are some patches which are properly reviewed > > > > > > > > > > > > > > > > Reminder: sub-tree to manage specific part of DPDK can be > open on > > > > > request > > > > > > > > > > > > > > Ok, I think what you're saying here is you're too busy to han= dle all > the > > > > > patches > > > > > > > comming in at the moment. As such I'd like to propose a sub-= tree > > > > > encompassing > > > > > > > all the pmds in DPDK. I would envision that including all th= e acutal > > > pmd's > > > > > in > > > > > > > the tree, as well as the infrastructure that is used to inter= face > them to > > > the > > > > > > > core (i.e. the ethdev/rte_ether library). I'll gladly mainta= in the > patch > > > pool > > > > > > > and send you pull requests. > > > > > > > > > > > > The list of PMDs is increasing: > > > > > > librte_pmd_af_packet > > > > > > librte_pmd_bond > > > > > > librte_pmd_e1000 > > > > > > librte_pmd_enic > > > > > > librte_pmd_i40e > > > > > > librte_pmd_ixgbe > > > > > > librte_pmd_pcap > > > > > > librte_pmd_ring > > > > > > librte_pmd_virtio > > > > > > librte_pmd_vmxnet3 > > > > > > librte_pmd_xenvirt > > > > > > There is already some sub-trees for bnx2x, fm10k and i40e: > > > > > > http://dpdk.org/browse/ > > > > > > > > > > > Yes, and I've mentioned before that that is an absolutely silly w= ay to > > > break > > > > > out > > > > > subtrees. You have to find a balance of workload distribution an= d > > > developer > > > > > convienience. > > > > > > > > > > I also note that these are problematic because you're not merging > > > anything > > > > > from them. Is it your intention to keep bnx2 and fm10k separate i= n > > > > > perpituity? > > > > > If so, thats a real problem, because then we effectively just hav= e > several > > > out > > > > > of tree drivers, and thats just unacceptible. > > > > > > > > > > > > If you could set me up with a login to dpdk.org, I'd apprecia= te it. > > > > > > > > > > > > It is preferred to have 1 sub-tree per module. > > > > > > What do you think of managing contributions for af_packet and/o= r > > > virtio? > > > > > > It would make sense as virtio is a RedHat technology. > > > > > > Maybe it could include vhost lib and example. > > > > > > > > > > > No, for reasons I've mentioned before. If you take each pmd/libr= ary > and > > > > > create > > > > > a subtree for it, you've created the most fine grained control of > subtrees > > > you > > > > > could ask for, but you've created a nighmare of a burden on > developers > > > who > > > > > want > > > > > to update any code, especially if they have patches that hit mult= iple > > > trees. > > > > > > > > > > Look at some of the stats in the dpdk tree: > > > > > > > > > > Library Commits between 1.7.0 and 1.8.0 > > > > > librte_acl 5 > > > > > librte_cfgfile 0 > > > > > librte_cmdline 4 > > > > > librte_compat 0 > > > > > librte_distributor 5 > > > > > librte_eal 125 > > > > > librte_ether 31 > > > > > librte_hash 1 > > > > > librte_ip_frag 5 > > > > > librte_ivshmem 0 > > > > > librte_kni 2 > > > > > librte_kvargs 0 > > > > > librte_lpm 1 > > > > > librte_malloc 1 > > > > > librte_mbuf 39 > > > > > librte_mempool 4 > > > > > librte_meter 0 > > > > > librte_net 4 > > > > > librte_pipeline 0 > > > > > librte_pmd_af_packet 4 > > > > > librte_pmd_bond 20 > > > > > librte_pmd_e1000 21 > > > > > librte_pmd_enic 12 > > > > > librte_pmd_i40e 90 > > > > > librte_pmd_ixgbe 83 > > > > > librte_pmd_pcap 4 > > > > > librte_pmd_ring 0 > > > > > librte_pmd_virtio 21 > > > > > librte_pmd_vmxnet3 21 > > > > > librte_pmd_xenvirt 6 > > > > > librte_port 6 > > > > > librte_power 3 > > > > > librte_ring 2 > > > > > librte_sched 1 > > > > > librte_table 7 > > > > > librte_timer 0 > > > > > librte_vhost 30 > > > > > > > > > > If you look at all of the pmds in the dpdk tree, we're talking ab= out > ~300 > > > > > patches per release. If you look at the net-next tree for the li= nux > kernel, > > > > > Dave Miller merged 569 patches on his own (based on the following > > > > > command: > > > > > git log --pretty=3Dformat:%H v3.17..v3.18 -- drivers/net/ethernet= / > > > net/core/ | > > > > > wc > > > > > -l) > > > > > > > > > > And that doesn't account for the ~500 patches that come in via pu= ll > > > request > > > > > from > > > > > the wireless subtree. Nor does it account for the merge window f= or > net- > > > > > next > > > > > being 2 months instead of dpdk's 6 months. Theres no need in any > way > > > for > > > > > 12 > > > > > maintainers to be twiddling their thumbs waiting on ~20 patches e= ach, > > > and > > > > > for > > > > > that split, you've forced developers to potentially develop patch= es > > > against 12 > > > > > trees (12 being the current number of PMD's that are in the dpdk)= . > > > > > > > > > > The right answer here is balance. Let me split out the pmd's and > ethernet > > > > > infrastructure libraries to a subtree. I'll pull in patches post= ed > regarding > > > > > pmd's and librte_ether/ip_frag etc, and send you a pull requests = after > > > each > > > > > release so you get all the latest bits, and then pulls for stabil= ization on > > > each > > > > > -rc. I can manage 300 patches without issue, and that takes a loa= d off > your > > > > > shoulders. I'll get fm10k integrated, as well as bnx2. That giv= es us a > single > > > > > alternate tree for developers to go to for pmd and pmd infrastruc= ture > > > > > updates. > > > > > Its a win-win. > > > > > > > > > > Regards > > > > > Neil > > > > > > > > I agree with Thomas on this. The approach we've been taking for PMD= s > for > > > newer Intel NICs is to have a separate sub-repository with a maintain= er > > > who's an expert in the area. This offloads some work from Thomas, > ensures > > > that the maintainer is very familiar with the PMD code and the > corresponding > > > hardware, > > > As I mentioned to you in a private note, you're convoluting two roles= into > a > > > single one here to the detriment of both: > > > > > > 1) A tree maintainer is a machine, who is responsible for the mechani= cm > of > > > SCM > > > and tree maintenence. They are responsible for merging patches, > making > > > sure > > > that merged patches make it to their upstream tree, ensuring conflict= s > get > > > resolved, and above all, making sure that SME's review patches before > they > > > get > > > merged > > > > > > 2) An SME (subject matter expert), is just that, someone who is > intimately > > > familiar with the hardware and software of a certain bit of a project= . > Their > > > only responsibility is to ensure that proposed changes are legitimate= and > > > safe. > > > They review patches within their purview and provide acks to the tree > > > maintainer. > > > > > > When you merge these roles, you take the person most responsible for > the > > > stability of their code, and distract them with 1000 patch management > > > operations, and from the work of developing new code for their area o= f > > > expertise. > > > > > > The separation of these roles has evolved in several communities > because of > > > exactly the above. Linus knows alot about the kernel, but he's never > opened > > > the > > > I40e datasheet, and he doesn't have to because he trusts Dave M to > ensure > > > that > > > code in his pull requests is legitimate. Dave in turn relies on some= one at > > > Intel to ack every I40e patch on the list before he merges it. He do= es > exactly > > > the same thing with every single other sub-component as listed in the > > > MAINTAINERS file. Thats how he is able to manage twice as many > patches as > > > the > > > dpdk can in half the amount of time. If its efficiency you're after,= thats > the > > > route to go. Please don't ignore all that evolutionary refinement. > > > > > > > > > >and doesn't involve too much additional work for the developers > involved > > > (as you said, there isn't a huge volume of commits for any individual > PMD). > > > Patch volume isn't where the additional effort comes in. Its in the > > > determination of what tree to develop against. > > > > > > Lets take an example. I'm doing work on the I40e card, so I have to = look > to > > > see > > > if theres a separate tree for it. I figure out there is, so I have t= o clone > > > that tree, and develop a patch against it. So far so good. > > > > > > A few days later I notice a bug in the pcap pmd, so I want to write a= patch > to > > > fix it. If we carry your model out to the point where each pmd has i= ts > own > > > subtree, I have to go find that new tree, and clone it as well (or ad= d a new > > > remote to my existing tree), pull those changes, branch from the prop= er > > > master, > > > and continue my work). > > > > > > If later I find a bug in the virtio pmd, I have to repeat the above p= rocess > > > again, cloning a new tree, or adding a new remote for that drivers tr= ee. > > > > > > It doesn't sound like alot when you're just sitting in a room talking= about > it, > > > but for the developers actually working on the code, its a significan= t > > > inconvienience, since it means that any pmd you want to touch require= s > you > > > to go > > > through this lookup process, ensuring your branching from the right > master > > > branch in the proper tree. > > > > > > Conversely, if you put all pmds in a single subtree, it doesn't matte= r what > > > pmd a person is working on, they only have to clone the pmd subtree, > and > > > they're > > > good to go. > > > > > > > > > > We have this in place for i40e now, and will be applying this to fm= 10k, > which > > > hasn't been upstreamed yet but will be in time for the 2.0 release. B= ased > on > > > our experiences with those, we may well look at extending the model t= o > > > include PMDs for other Intel NICs, and possibly other libraries, as w= ell. > > > > > > > You really haven't. You have an i40e tree, but you have dozens of I4= 0e > > > patches > > > on the list, and all of them thus far have been integrated into the m= ain > tree. > > > Ditto with the bnx2x tree and others that have been separated. Pleas= e > > > remember > > > subject matter expert !=3D repo maintainer. The roles can be, and sh= ould > be, > > > separeated. > > > > > > > As you said, there's a balance to be struck, and too many subtrees = may > > > become unmanageable. With respect to your concern about developers > > > having to potentially develop patches against multiple subtrees, this= has > > > never been raised as a concern by any of our development team. Is the= re > > > any historical data on the number of changes that would fall into thi= s > > > category so we can see if it's a real problem or not? > > > Look at the linux kernel if you want historical data on where the bal= ance > is. > > > Major subsystems has become the natural breaking point for subtree > > > maintenence. > > > Every net driver goes through Millers net or net-next tree. All scsi > updates > > > go > > > through Bottomleys scsi tree. FCoE changes used go through what used > to > > > be Rob > > > Loves FCoE tree. It just makes sense. I'm sure there isn't recorded= data > to > > > show anything more granular than that because no one ever seriously > > > considered > > > breaking out all 301 network drivers into their own subtree, because = its > > > obviously unmanageable at that scale. Even taken all as a single unit= (as > > > the kernel does for network drivers), a single maintainer can still h= andle > the > > > patch volume with the right subject matter experts doing timely revie= ws. > > > > > > > > > The point of this very long message is that maintainers !=3D repos. = Just > > > because > > > you're a subject matter expert in a given bit of hardware/pmd, in no = way > > > means > > > you need to be responsible for patch merging/maintenence. Doing so > just > > > makes > > > everything harder. > > > > > > Neil > > > >