* Re: [dpdk-dev] Beyond DPDK 2.0 @ 2015-04-30 21:31 Wiles, Keith 2015-04-30 21:38 ` Wiles, Keith 0 siblings, 1 reply; 58+ messages in thread From: Wiles, Keith @ 2015-04-30 21:31 UTC (permalink / raw) To: dev (I snipped out the content here only because it had been snipped a lot already) Sorry, if I am highjacking the thread. I believe the DPDK community would benefit from moving to GitHub as the primary DPDK site. http://github.com I believe the DPDK community can benefit from being at a very well know world wide site. GitHub seems to have the most eyes of any of the open source Git repos today and it appears they have more then twice as many developers. GitHub has a number of features I see as some good additions to our community using the GitHub organization account type. The cost for an organization account is $0 as long as we do not need more then 5 private repos. 10 private repos is $25/month and had other plans for more. I do not see us needing more then 5 private repos today and the only reason I can see having a private repo is to do some prep work on the repo before making public. Every contributor would need to create a GitHub personal account, which is at no cost unless you need more then 5 private repos. In both accounts you can have unlimited public repos. https://help.github.com/articles/where-can-i-find-open-source-projects-to-w ork-on/ http://www.sitepoint.com/using-git-open-source-projects/ - Adding more committers can lead to a security problems for 6Wind (I assume). - 6Wind appearing to own DPDK.org is not a good message to the community. - Not assuming 6Wind¹s dpdk.org site will disappear only where the community stores the master repos and how the community interacts with the master. - Permission and access levels in dpdk.org is only one level and we can benefit from having 4 levels and teams as well. - The patch process today suffers from timely reviews, which will not be fixed by moving. - GitHub has a per pull request discussions area, which gives a clean way to review all discussions on a specific change. - The current patch model is clone dpdk.org/modify/commit/send patch set - The model with GitHub is fork on GitHub/modify/commit/send pull request - The patchwork web site is reasonable, but has some draw backs in maintaining the site. - GitHub manages the patches via pull requests and can be easily seen via a web browser. - The down side is you do have to use a web browser to do some work, but the everyday work would be done as it is today. - I think we all have a web browser now :-) - GitHub has team support and gives a group better control plus collaboration is much easier as we have a external location to work. - Most companies have some pretty high security level and being to collaborate between two or more companies is very difficult if one company is hosting the repo behind a firewall. - Using GitHub and teams would make collaboration a lot easier or collaboration between two or more user accounts as well. - GitHub has a Web Page system, which can be customized for the community needs via a public or private repo. - We still need a dpdk.org email list I believe as I did not find one at GitHub. - We can also forward GitHub emails to the list. - I believe you can reply to an email from GitHub and the email will get appended to the discussion thread. As most do not like to read long emails :-) I will stop here and add one more thing. I have create a sandbox on GitHub for anyone to play with using GitHub. You will need to create a GitHub account and an email me your account name to add you to the organization site as a contributor. The GitHub site is not a fork of dpdk.org only a sandbox to play with how GitHub can help the community to gain more developers in a clean manner. Regards ++Keith ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-30 21:31 [dpdk-dev] Beyond DPDK 2.0 Wiles, Keith @ 2015-04-30 21:38 ` Wiles, Keith 0 siblings, 0 replies; 58+ messages in thread From: Wiles, Keith @ 2015-04-30 21:38 UTC (permalink / raw) To: Wiles, Keith, dev Darn forgot the site link, below. On 4/30/15, 4:31 PM, "Wiles, Keith" <keith.wiles@intel.com> wrote: > >(I snipped out the content here only because it had been snipped a lot >already) > >Sorry, if I am highjacking the thread. > >I believe the DPDK community would benefit from moving to GitHub as the >primary DPDK site. http://github.com > >I believe the DPDK community can benefit from being at a very well know >world wide site. GitHub seems to have the most eyes of any of the open >source Git repos today and it appears they have more then twice as many >developers. GitHub has a number of features I see as some good additions >to >our community using the GitHub organization account type. > >The cost for an organization account is $0 as long as we do not need more >then 5 private repos. 10 private repos is $25/month and has other plans >for more. I do not see us needing more then 5 private repos today and the >only reason I can see having a private repo is to do some prep work on the >repo before making public. Every contributor would need to create a GitHub >personal account, which is at no cost unless you need more then 5 private >repos. In both accounts you can have unlimited public repos. > >https://help.github.com/articles/where-can-i-find-open-source-projects-to- >w >ork-on/ > >http://www.sitepoint.com/using-git-open-source-projects/ > >- Adding more committers can lead to a security problems for 6Wind (I >assume). >- 6Wind appearing to own DPDK.org is not a good message to the community. > - Not assuming 6Wind¹s dpdk.org site will disappear only where the >community stores the master repos and how the community interacts with the >master. >- Permission and access levels in dpdk.org is only one level and we can >benefit from having 4 levels and teams as well. >- The patch process today suffers from timely reviews, which will not be >fixed by moving. > - GitHub has a per pull request discussions area, which gives a clean >way to >review all discussions on a specific change. > - The current patch model is clone dpdk.org/modify/commit/send patch >set > - The model with GitHub is fork on GitHub/modify/commit/send pull >request >- The patchwork web site is reasonable, but has some draw backs in >maintaining the site. > - GitHub manages the patches via pull requests and can be easily seen >via a web browser. > - The down side is you do have to use a web browser to do some work, but >the everyday work would be done as it is today. > - I think we all have a web browser now :-) >- GitHub has team support and gives a group better control plus >collaboration is much easier as we have a external location to work. > - Most companies have some pretty high security level and being to >collaborate between two or more companies is very difficult if one company >is hosting the repo behind a firewall. > - Using GitHub and teams would make collaboration a lot easier or >collaboration between two or more user accounts as well. >- GitHub has a Web Page system, which can be customized for the community >needs via a public or private repo. >- We still need a dpdk.org email list I believe as I did not find one at >GitHub. > - We can also forward GitHub emails to the list. > - I believe you can reply to an email from GitHub and the email will get >appended to the discussion thread. > >As most do not like to read long emails :-) I will stop here and add one >more thing. > >I have create a sandbox on GitHub for anyone to play with using GitHub. >You will need to create a GitHub account and an email me your account name >to add you to the organization site as a contributor. > >The GitHub site is not a fork of dpdk.org only a sandbox to play with how >GitHub can help the community to gain more developers in a clean manner. https://github.com/dpdk-org >Regards >++Keith > > > > > ^ permalink raw reply [flat|nested] 58+ messages in thread
* [dpdk-dev] Beyond DPDK 2.0 @ 2015-04-16 10:38 O'Driscoll, Tim 2015-04-22 15:11 ` O'Driscoll, Tim 2015-04-24 7:47 ` Luke Gorrie 0 siblings, 2 replies; 58+ messages in thread From: O'Driscoll, Tim @ 2015-04-16 10:38 UTC (permalink / raw) To: dev Following the launch of DPDK by Intel as an internal development project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK RPM packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to prepare for future releases after DPDK 2.0 by starting a discussion on its evolution. Anyone is welcome to join this initiative. Since then, the project has grown significantly: - The number of commits and mailing list posts has increased steadily. - Support has been added for a wide range of new NICs (Mellanox support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). - DPDK is now supported on multiple architectures (IBM Power support in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or applied). While this is great progress, we need to make sure that the project is structured in a way that enables it to continue to grow. To achieve this, 6WIND, Red Hat and Intel would like to start a discussion about the future of the project, so that we can agree and establish processes that satisfy the needs of the current and future DPDK community. We're very interested in hearing the views of everybody in the community. In addition to debate on the mailing list, we'll also schedule community calls to discuss this. Project Goals ------------- Some topics to be considered for the DPDK project include: - Project Charter: The charter of the DPDK project should be clearly defined, and should explain the limits of DPDK (what it does and does not cover). This does not mean that we would be stuck with a singular charter for all time, but the direction and intent of the project should be well understood. - Project Contributions: We want to continue to grow the size and diversity of the DPDK contributor community. - Project Presence: Maximise the impact of the DPDK project by ensuring that it has a strong brand and industry perception. Growing awareness of DPDK as a project is important to growing the community and giving people confidence in using DPDK as part of their product offerings. - Project Process: The project needs a clear decision making process to resolve issues that don't reach a conclusion on the mailing list. References to Open Source Projects ---------------------------------- Governance structures for open source projects vary widely. For reference, below are some examples with links to their governance info. Some are home grown, while others avail of the infrastructure provided by organisations such as the Linux Foundation. Some are more formal, while others are more lightweight. Each approach has its advantages and disadvantages. DPDK (http://dpdk.org/): - Maintainers are listed in http://dpdk.org/browse/dpdk/tree/MAINTAINERS - Process for contributing is outlined in the "Contribute by sending patches" section of http://dpdk.org/dev Open vSwitch (http://openvswitch.org/): - Committer Grant/Revocation: http://openvswitch.org/development/committer-grant-revocation/ - Committer Responsibilities: http://openvswitch.org/development/committer-responsibilities/ OpenStack (http://www.openstack.org/): - Governance Model: http://www.openstack.org/foundation/ - Technical Committee: http://www.openstack.org/foundation/tech-committee/ - Board of Directors: http://www.openstack.org/foundation/board-of-directors/ - User Committee: http://www.openstack.org/foundation/user-committee/ OpenDaylight (http://www.opendaylight.org/): - Linux Foundation - Governance: http://www.opendaylight.org/project/governance - Technical Steering Committee: http://www.opendaylight.org/project/governance/tsc - Board of Directors: http://www.opendaylight.org/project/board-members CloudStack (http://cloudstack.apache.org/): - Apache Foundation - Project Management Committee & Committers: http://cloudstack.apache.org/who.html - The Apache Way: http://theapacheway.com/ QEMU (http://wiki.qemu.org/Main_Page): - Structure: http://wiki.qemu.org/Contribute/StartHere - Process: http://wiki.qemu.org/Contribute/SubmitAPatch U-Boot (http://www.denx.de/wiki/U-Boot/): - Maintainers: http://www.denx.de/wiki/U-Boot/Custodians - Process: http://www.denx.de/wiki/U-Boot/DevelopmentProcess - Guidelines: http://www.denx.de/wiki/U-Boot/Patches Thank you ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-16 10:38 O'Driscoll, Tim @ 2015-04-22 15:11 ` O'Driscoll, Tim 2015-04-22 15:33 ` Stephen Hemminger 2015-05-07 14:02 ` Avi Kivity 2015-04-24 7:47 ` Luke Gorrie 1 sibling, 2 replies; 58+ messages in thread From: O'Driscoll, Tim @ 2015-04-22 15:11 UTC (permalink / raw) To: 'dev@dpdk.org' Does anybody have any input or comments on this? > -----Original Message----- > From: O'Driscoll, Tim > Sent: Thursday, April 16, 2015 11:39 AM > To: dev@dpdk.org > Subject: Beyond DPDK 2.0 > > Following the launch of DPDK by Intel as an internal development > project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK RPM > packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to > prepare for future releases after DPDK 2.0 by starting a discussion on > its evolution. Anyone is welcome to join this initiative. > > Since then, the project has grown significantly: > - The number of commits and mailing list posts has increased > steadily. > - Support has been added for a wide range of new NICs (Mellanox > support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). > - DPDK is now supported on multiple architectures (IBM Power support > in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or > applied). > > While this is great progress, we need to make sure that the project is > structured in a way that enables it to continue to grow. To achieve > this, 6WIND, Red Hat and Intel would like to start a discussion about > the future of the project, so that we can agree and establish processes > that satisfy the needs of the current and future DPDK community. > > We're very interested in hearing the views of everybody in the > community. In addition to debate on the mailing list, we'll also > schedule community calls to discuss this. > > > Project Goals > ------------- > > Some topics to be considered for the DPDK project include: > - Project Charter: The charter of the DPDK project should be clearly > defined, and should explain the limits of DPDK (what it does and does > not cover). This does not mean that we would be stuck with a singular > charter for all time, but the direction and intent of the project should > be well understood. > - Project Contributions: We want to continue to grow the size and > diversity of the DPDK contributor community. > - Project Presence: Maximise the impact of the DPDK project by > ensuring that it has a strong brand and industry perception. Growing > awareness of DPDK as a project is important to growing the community and > giving people confidence in using DPDK as part of their product > offerings. > - Project Process: The project needs a clear decision making process > to resolve issues that don't reach a conclusion on the mailing list. > > > References to Open Source Projects > ---------------------------------- > > Governance structures for open source projects vary widely. For > reference, below are some examples with links to their governance info. > Some are home grown, while others avail of the infrastructure provided > by organisations such as the Linux Foundation. Some are more formal, > while others are more lightweight. Each approach has its advantages and > disadvantages. > > DPDK (http://dpdk.org/): > - Maintainers are listed in http://dpdk.org/browse/dpdk/tree/MAINTAINERS > - Process for contributing is outlined in the "Contribute by sending > patches" section of http://dpdk.org/dev > > Open vSwitch (http://openvswitch.org/): > - Committer Grant/Revocation: > http://openvswitch.org/development/committer-grant-revocation/ > - Committer Responsibilities: > http://openvswitch.org/development/committer-responsibilities/ > > OpenStack (http://www.openstack.org/): > - Governance Model: http://www.openstack.org/foundation/ > - Technical Committee: http://www.openstack.org/foundation/tech- > committee/ > - Board of Directors: http://www.openstack.org/foundation/board-of- > directors/ > - User Committee: http://www.openstack.org/foundation/user-committee/ > > OpenDaylight (http://www.opendaylight.org/): > - Linux Foundation > - Governance: http://www.opendaylight.org/project/governance > - Technical Steering Committee: > http://www.opendaylight.org/project/governance/tsc > - Board of Directors: http://www.opendaylight.org/project/board-members > > CloudStack (http://cloudstack.apache.org/): > - Apache Foundation > - Project Management Committee & Committers: > http://cloudstack.apache.org/who.html > - The Apache Way: http://theapacheway.com/ > > QEMU (http://wiki.qemu.org/Main_Page): > - Structure: http://wiki.qemu.org/Contribute/StartHere > - Process: http://wiki.qemu.org/Contribute/SubmitAPatch > > U-Boot (http://www.denx.de/wiki/U-Boot/): > - Maintainers: http://www.denx.de/wiki/U-Boot/Custodians > - Process: http://www.denx.de/wiki/U-Boot/DevelopmentProcess > - Guidelines: http://www.denx.de/wiki/U-Boot/Patches > > > Thank you ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-22 15:11 ` O'Driscoll, Tim @ 2015-04-22 15:33 ` Stephen Hemminger 2015-04-23 11:36 ` O'Driscoll, Tim 2015-05-07 14:02 ` Avi Kivity 1 sibling, 1 reply; 58+ messages in thread From: Stephen Hemminger @ 2015-04-22 15:33 UTC (permalink / raw) To: O'Driscoll, Tim; +Cc: dev This does a good job of stating the need for action without getting into the details. Perhaps this would be better resolved by some more interactive discussion. I know it is hard to all get together, but there needs to be more some more creative and focused thought on this. A phone conference is just not enough. Alternatively, propose some options and vote, but I don't think we have things defined enough for that yet. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-22 15:33 ` Stephen Hemminger @ 2015-04-23 11:36 ` O'Driscoll, Tim 2015-04-24 21:02 ` Dave Neary 0 siblings, 1 reply; 58+ messages in thread From: O'Driscoll, Tim @ 2015-04-23 11:36 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > > This does a good job of stating the need for action without getting into the details. > Perhaps this would be better resolved by some more interactive discussion. > I know it is hard to all get together, but there needs to be more some more creative and focused > thought on this. A phone conference is just not enough. I agree. It's difficult to know the best way to progress it. We were hoping that there would be some debate on the mailing list first, and then we'd have one or more calls to discuss it. We can try holding a call on this anyway, but the risk is that nobody has anything to say. Maybe that's something we should try anyway though. I can set something up. > Alternatively, propose some options and vote, but I don't think we have things defined > enough for that yet. We tried to keep the initial communication neutral and avoid suggesting solutions to give others a chance to comment. At a very high level, there seem to be 3 possible approaches though: 1. Do nothing. The project is increasing in size, and the releases are getting delivered according to the roadmap, so one option is to continue as we are. 2. Add a more formal governance structure to dpdk.org. This might involve putting in place a Technical Steering Committee to give long-term technical direction to the project, and to resolve any differences of opinion that don't reach a conclusion on the mailing list. 3. Transition the project to an organization such as the Linux Foundation, and use their help to implement a more formal governance structure. This would probably involve a TSC, and possibly also a governing board and the creation of some form of centralized marketing/branding/promotional budget for the project. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-23 11:36 ` O'Driscoll, Tim @ 2015-04-24 21:02 ` Dave Neary 0 siblings, 0 replies; 58+ messages in thread From: Dave Neary @ 2015-04-24 21:02 UTC (permalink / raw) To: O'Driscoll, Tim, Stephen Hemminger; +Cc: dev Hi Tim, On 04/23/2015 07:36 AM, O'Driscoll, Tim wrote: >> Alternatively, propose some options and vote, but I don't think we have things defined >> enough for that yet. > > We tried to keep the initial communication neutral and avoid suggesting solutions to give others a chance to comment. At a very high level, there seem to be 3 possible approaches though: > > 1. Do nothing. The project is increasing in size, and the releases are getting delivered according to the roadmap, so one option is to continue as we are. > > 2. Add a more formal governance structure to dpdk.org. This might involve putting in place a Technical Steering Committee to give long-term technical direction to the project, and to resolve any differences of opinion that don't reach a conclusion on the mailing list. > > 3. Transition the project to an organization such as the Linux Foundation, and use their help to implement a more formal governance structure. This would probably involve a TSC, and possibly also a governing board and the creation of some form of centralized marketing/branding/promotional budget for the project. I see at least one other option, which is to document the process for becoming a maintainer/core reviewer (whatever terminology we choose), and move from a single project lead to multiple committers. This would allow the project to scale, reducing average review time and removing bottlenecks, but would avoid the potential for "design by committee" which a TSC would bring, and also avoid the operational and cost overhead of a formal foundation. This will not address the issue of how the project's scope, priorities and roadmap are defined, but will definitely help with both the scaling of project contributions and the diversity of the project. The MAINTAINERS file: http://dpdk.org/browse/dpdk/tree/MAINTAINERS is an awesome step in the right direction by clearly defining where people maintain a module. Regards, Dave. -- Dave Neary - NFV/SDN Community Strategy Open Source and Standards, Red Hat - http://community.redhat.com Ph: +1-978-399-2182 / Cell: +1-978-799-3338 ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-22 15:11 ` O'Driscoll, Tim 2015-04-22 15:33 ` Stephen Hemminger @ 2015-05-07 14:02 ` Avi Kivity 2015-05-07 14:34 ` Ivan Boule ` (2 more replies) 1 sibling, 3 replies; 58+ messages in thread From: Avi Kivity @ 2015-05-07 14:02 UTC (permalink / raw) To: O'Driscoll, Tim; +Cc: dev On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim <tim.o'driscoll@intel.com> wrote: > Does anybody have any input or comments on this? > > > > -----Original Message----- > > From: O'Driscoll, Tim > > Sent: Thursday, April 16, 2015 11:39 AM > > To: dev@dpdk.org > > Subject: Beyond DPDK 2.0 > > > > Following the launch of DPDK by Intel as an internal development > > project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK RPM > > packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to > > prepare for future releases after DPDK 2.0 by starting a discussion on > > its evolution. Anyone is welcome to join this initiative. > > > > Since then, the project has grown significantly: > > - The number of commits and mailing list posts has increased > > steadily. > > - Support has been added for a wide range of new NICs (Mellanox > > support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). > > - DPDK is now supported on multiple architectures (IBM Power support > > in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or > > applied). > > > > While this is great progress, we need to make sure that the project is > > structured in a way that enables it to continue to grow. To achieve > > this, 6WIND, Red Hat and Intel would like to start a discussion about > > the future of the project, so that we can agree and establish processes > > that satisfy the needs of the current and future DPDK community. > > > > We're very interested in hearing the views of everybody in the > > community. In addition to debate on the mailing list, we'll also > > schedule community calls to discuss this. > > > > > > Project Goals > > ------------- > > > > Some topics to be considered for the DPDK project include: > > - Project Charter: The charter of the DPDK project should be clearly > > defined, and should explain the limits of DPDK (what it does and does > > not cover). This does not mean that we would be stuck with a singular > > charter for all time, but the direction and intent of the project should > > be well understood. > One problem we've seen with dpdk is that it is a framework, not a library: it wants to create threads, manage memory, and generally take over. This is a problem for us, as we are writing a framework (seastar, [1]) and need to create threads, manage memory, and generally take over ourselves. Perhaps dpdk can be split into two layers, a library layer that only provides mechanisms, and a framework layer that glues together those mechanisms and applies a policy, trading in generality for ease of use. [1] http://seastar-project.org ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 14:02 ` Avi Kivity @ 2015-05-07 14:34 ` Ivan Boule 2015-05-07 15:27 ` Wiles, Keith 2015-05-07 15:34 ` Luke Gorrie 2 siblings, 0 replies; 58+ messages in thread From: Ivan Boule @ 2015-05-07 14:34 UTC (permalink / raw) To: Avi Kivity, O'Driscoll, Tim; +Cc: dev Hi Avi, On 05/07/2015 04:02 PM, Avi Kivity wrote: > On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim <tim.o'driscoll@intel.com> > wrote: > >> Does anybody have any input or comments on this? >> >> >>> -----Original Message----- >>> From: O'Driscoll, Tim >>> Sent: Thursday, April 16, 2015 11:39 AM >>> To: dev@dpdk.org >>> Subject: Beyond DPDK 2.0 >>> >>> Following the launch of DPDK by Intel as an internal development >>> project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK RPM >>> packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >>> prepare for future releases after DPDK 2.0 by starting a discussion on >>> its evolution. Anyone is welcome to join this initiative. >>> >>> Since then, the project has grown significantly: >>> - The number of commits and mailing list posts has increased >>> steadily. >>> - Support has been added for a wide range of new NICs (Mellanox >>> support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >>> - DPDK is now supported on multiple architectures (IBM Power support >>> in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or >>> applied). >>> >>> While this is great progress, we need to make sure that the project is >>> structured in a way that enables it to continue to grow. To achieve >>> this, 6WIND, Red Hat and Intel would like to start a discussion about >>> the future of the project, so that we can agree and establish processes >>> that satisfy the needs of the current and future DPDK community. >>> >>> We're very interested in hearing the views of everybody in the >>> community. In addition to debate on the mailing list, we'll also >>> schedule community calls to discuss this. >>> >>> >>> Project Goals >>> ------------- >>> >>> Some topics to be considered for the DPDK project include: >>> - Project Charter: The charter of the DPDK project should be clearly >>> defined, and should explain the limits of DPDK (what it does and does >>> not cover). This does not mean that we would be stuck with a singular >>> charter for all time, but the direction and intent of the project should >>> be well understood. >> > > > One problem we've seen with dpdk is that it is a framework, not a library: > it wants to create threads, manage memory, and generally take over. This > is a problem for us, as we are writing a framework (seastar, [1]) and need > to create threads, manage memory, and generally take over ourselves. > > Perhaps dpdk can be split into two layers, a library layer that only > provides mechanisms, and a framework layer that glues together those > mechanisms and applies a policy, trading in generality for ease of use. > > [1] http://seastar-project.org > I fully agree with this analysis/proposal. And I think that: - the associated modifications should be done ASAP, - the underlying design rules that this proposal refers to should drive the design and review of new DPDK features. Regards, Ivan ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 14:02 ` Avi Kivity 2015-05-07 14:34 ` Ivan Boule @ 2015-05-07 15:27 ` Wiles, Keith 2015-05-07 15:33 ` Avi Kivity 2015-05-07 15:33 ` Avi Kivity 2015-05-07 15:34 ` Luke Gorrie 2 siblings, 2 replies; 58+ messages in thread From: Wiles, Keith @ 2015-05-07 15:27 UTC (permalink / raw) To: Avi Kivity, O'Driscoll, Tim; +Cc: dev On 5/7/15, 7:02 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim ><tim.o'driscoll@intel.com> >wrote: > >> Does anybody have any input or comments on this? >> >> >> > -----Original Message----- >> > From: O'Driscoll, Tim >> > Sent: Thursday, April 16, 2015 11:39 AM >> > To: dev@dpdk.org >> > Subject: Beyond DPDK 2.0 >> > >> > Following the launch of DPDK by Intel as an internal development >> > project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK >>RPM >> > packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >> > prepare for future releases after DPDK 2.0 by starting a discussion on >> > its evolution. Anyone is welcome to join this initiative. >> > >> > Since then, the project has grown significantly: >> > - The number of commits and mailing list posts has increased >> > steadily. >> > - Support has been added for a wide range of new NICs (Mellanox >> > support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >> > - DPDK is now supported on multiple architectures (IBM Power >>support >> > in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or >> > applied). >> > >> > While this is great progress, we need to make sure that the project is >> > structured in a way that enables it to continue to grow. To achieve >> > this, 6WIND, Red Hat and Intel would like to start a discussion about >> > the future of the project, so that we can agree and establish >>processes >> > that satisfy the needs of the current and future DPDK community. >> > >> > We're very interested in hearing the views of everybody in the >> > community. In addition to debate on the mailing list, we'll also >> > schedule community calls to discuss this. >> > >> > >> > Project Goals >> > ------------- >> > >> > Some topics to be considered for the DPDK project include: >> > - Project Charter: The charter of the DPDK project should be >>clearly >> > defined, and should explain the limits of DPDK (what it does and does >> > not cover). This does not mean that we would be stuck with a singular >> > charter for all time, but the direction and intent of the project >>should >> > be well understood. >> > > >One problem we've seen with dpdk is that it is a framework, not a library: >it wants to create threads, manage memory, and generally take over. This >is a problem for us, as we are writing a framework (seastar, [1]) and need >to create threads, manage memory, and generally take over ourselves. > >Perhaps dpdk can be split into two layers, a library layer that only >provides mechanisms, and a framework layer that glues together those >mechanisms and applies a policy, trading in generality for ease of use. The DPDK system is somewhat divided now between the EAL, PMDS and utility functions like malloc/rings/Š The problem I see is the PMDs need a framework to be usable and the EAL plus the ethdev layers provide that support today. Setting up and initializing the DPDK system is pretty clean just call the EAL init routines along with the pool creates and the basic configs for the PMDs/hardware. Once the system is inited one can create new threads and not requiring anyone to use DPDK launch routines. Maybe I am not understanding your needs can you explain more? > >[1] http://seastar-project.org ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 15:27 ` Wiles, Keith @ 2015-05-07 15:33 ` Avi Kivity 2015-05-07 15:33 ` Avi Kivity 1 sibling, 0 replies; 58+ messages in thread From: Avi Kivity @ 2015-05-07 15:33 UTC (permalink / raw) To: Wiles, Keith, O'Driscoll, Tim; +Cc: dev On 05/07/2015 06:27 PM, Wiles, Keith wrote: > > On 5/7/15, 7:02 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: > >> On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim >> <tim.o'driscoll@intel.com> >> wrote: >> >>> Does anybody have any input or comments on this? >>> >>> >>>> -----Original Message----- >>>> From: O'Driscoll, Tim >>>> Sent: Thursday, April 16, 2015 11:39 AM >>>> To: dev@dpdk.org >>>> Subject: Beyond DPDK 2.0 >>>> >>>> Following the launch of DPDK by Intel as an internal development >>>> project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK >>> RPM >>>> packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >>>> prepare for future releases after DPDK 2.0 by starting a discussion on >>>> its evolution. Anyone is welcome to join this initiative. >>>> >>>> Since then, the project has grown significantly: >>>> - The number of commits and mailing list posts has increased >>>> steadily. >>>> - Support has been added for a wide range of new NICs (Mellanox >>>> support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >>>> - DPDK is now supported on multiple architectures (IBM Power >>> support >>>> in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or >>>> applied). >>>> >>>> While this is great progress, we need to make sure that the project is >>>> structured in a way that enables it to continue to grow. To achieve >>>> this, 6WIND, Red Hat and Intel would like to start a discussion about >>>> the future of the project, so that we can agree and establish >>> processes >>>> that satisfy the needs of the current and future DPDK community. >>>> >>>> We're very interested in hearing the views of everybody in the >>>> community. In addition to debate on the mailing list, we'll also >>>> schedule community calls to discuss this. >>>> >>>> >>>> Project Goals >>>> ------------- >>>> >>>> Some topics to be considered for the DPDK project include: >>>> - Project Charter: The charter of the DPDK project should be >>> clearly >>>> defined, and should explain the limits of DPDK (what it does and does >>>> not cover). This does not mean that we would be stuck with a singular >>>> charter for all time, but the direction and intent of the project >>> should >>>> be well understood. >> >> One problem we've seen with dpdk is that it is a framework, not a library: >> it wants to create threads, manage memory, and generally take over. This >> is a problem for us, as we are writing a framework (seastar, [1]) and need >> to create threads, manage memory, and generally take over ourselves. >> >> Perhaps dpdk can be split into two layers, a library layer that only >> provides mechanisms, and a framework layer that glues together those >> mechanisms and applies a policy, trading in generality for ease of use. > The DPDK system is somewhat divided now between the EAL, PMDS and utility > functions like malloc/rings/Š > > The problem I see is the PMDs need a framework to be usable and the EAL > plus the ethdev layers provide that support today. Setting up and > initializing the DPDK system is pretty clean just call the EAL init > routines along with the pool creates and the basic configs for the > PMDs/hardware. Once the system is inited one can create new threads and > not requiring anyone to use DPDK launch routines. Maybe I am not > understanding your needs can you explain more? An initialization routine that accepts argc/argv can hardly be called clean. In seastar, we have our own malloc() (since seastar is sharded we can provide a faster thread-unsafe malloc implementation). We also have our own threading, and since dpdk is an optional component in seastar, dpdk support requires code duplication. I would like to launch my own threads, pin them where I like, and call PMD drivers to send and receive packets. Practically everything else that dpdk does gets in my way, including mbuf pools. I'd much prefer to allocate mbufs myself. >> [1] http://seastar-project.org ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 15:27 ` Wiles, Keith 2015-05-07 15:33 ` Avi Kivity @ 2015-05-07 15:33 ` Avi Kivity 2015-05-07 15:49 ` Wiles, Keith 1 sibling, 1 reply; 58+ messages in thread From: Avi Kivity @ 2015-05-07 15:33 UTC (permalink / raw) To: Wiles, Keith, O'Driscoll, Tim; +Cc: dev On 05/07/2015 06:27 PM, Wiles, Keith wrote: > > On 5/7/15, 7:02 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: > >> On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim >> <tim.o'driscoll@intel.com> >> wrote: >> >>> Does anybody have any input or comments on this? >>> >>> >>>> -----Original Message----- >>>> From: O'Driscoll, Tim >>>> Sent: Thursday, April 16, 2015 11:39 AM >>>> To: dev@dpdk.org >>>> Subject: Beyond DPDK 2.0 >>>> >>>> Following the launch of DPDK by Intel as an internal development >>>> project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK >>> RPM >>>> packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >>>> prepare for future releases after DPDK 2.0 by starting a discussion on >>>> its evolution. Anyone is welcome to join this initiative. >>>> >>>> Since then, the project has grown significantly: >>>> - The number of commits and mailing list posts has increased >>>> steadily. >>>> - Support has been added for a wide range of new NICs (Mellanox >>>> support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >>>> - DPDK is now supported on multiple architectures (IBM Power >>> support >>>> in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or >>>> applied). >>>> >>>> While this is great progress, we need to make sure that the project is >>>> structured in a way that enables it to continue to grow. To achieve >>>> this, 6WIND, Red Hat and Intel would like to start a discussion about >>>> the future of the project, so that we can agree and establish >>> processes >>>> that satisfy the needs of the current and future DPDK community. >>>> >>>> We're very interested in hearing the views of everybody in the >>>> community. In addition to debate on the mailing list, we'll also >>>> schedule community calls to discuss this. >>>> >>>> >>>> Project Goals >>>> ------------- >>>> >>>> Some topics to be considered for the DPDK project include: >>>> - Project Charter: The charter of the DPDK project should be >>> clearly >>>> defined, and should explain the limits of DPDK (what it does and does >>>> not cover). This does not mean that we would be stuck with a singular >>>> charter for all time, but the direction and intent of the project >>> should >>>> be well understood. >> >> One problem we've seen with dpdk is that it is a framework, not a library: >> it wants to create threads, manage memory, and generally take over. This >> is a problem for us, as we are writing a framework (seastar, [1]) and need >> to create threads, manage memory, and generally take over ourselves. >> >> Perhaps dpdk can be split into two layers, a library layer that only >> provides mechanisms, and a framework layer that glues together those >> mechanisms and applies a policy, trading in generality for ease of use. > The DPDK system is somewhat divided now between the EAL, PMDS and utility > functions like malloc/rings/Š > > The problem I see is the PMDs need a framework to be usable and the EAL > plus the ethdev layers provide that support today. Setting up and > initializing the DPDK system is pretty clean just call the EAL init > routines along with the pool creates and the basic configs for the > PMDs/hardware. Once the system is inited one can create new threads and > not requiring anyone to use DPDK launch routines. Maybe I am not > understanding your needs can you explain more? An initialization routine that accepts argc/argv can hardly be called clean. In seastar, we have our own malloc() (since seastar is sharded we can provide a faster thread-unsafe malloc implementation). We also have our own threading, and since dpdk is an optional component in seastar, dpdk support requires code duplication. I would like to launch my own threads, pin them where I like, and call PMD drivers to send and receive packets. Practically everything else that dpdk does gets in my way, including mbuf pools. I'd much prefer to allocate mbufs myself. >> [1] http://seastar-project.org ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 15:33 ` Avi Kivity @ 2015-05-07 15:49 ` Wiles, Keith 2015-05-07 16:05 ` Avi Kivity 0 siblings, 1 reply; 58+ messages in thread From: Wiles, Keith @ 2015-05-07 15:49 UTC (permalink / raw) To: Avi Kivity, O'Driscoll, Tim; +Cc: dev On 5/7/15, 8:33 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >On 05/07/2015 06:27 PM, Wiles, Keith wrote: >> >> On 5/7/15, 7:02 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >> >>> On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim >>> <tim.o'driscoll@intel.com> >>> wrote: >>> >>>> Does anybody have any input or comments on this? >>>> >>>> >>>>> -----Original Message----- >>>>> From: O'Driscoll, Tim >>>>> Sent: Thursday, April 16, 2015 11:39 AM >>>>> To: dev@dpdk.org >>>>> Subject: Beyond DPDK 2.0 >>>>> >>>>> Following the launch of DPDK by Intel as an internal development >>>>> project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK >>>> RPM >>>>> packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >>>>> prepare for future releases after DPDK 2.0 by starting a discussion >>>>>on >>>>> its evolution. Anyone is welcome to join this initiative. >>>>> >>>>> Since then, the project has grown significantly: >>>>> - The number of commits and mailing list posts has increased >>>>> steadily. >>>>> - Support has been added for a wide range of new NICs (Mellanox >>>>> support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >>>>> - DPDK is now supported on multiple architectures (IBM Power >>>> support >>>>> in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or >>>>> applied). >>>>> >>>>> While this is great progress, we need to make sure that the project >>>>>is >>>>> structured in a way that enables it to continue to grow. To achieve >>>>> this, 6WIND, Red Hat and Intel would like to start a discussion about >>>>> the future of the project, so that we can agree and establish >>>> processes >>>>> that satisfy the needs of the current and future DPDK community. >>>>> >>>>> We're very interested in hearing the views of everybody in the >>>>> community. In addition to debate on the mailing list, we'll also >>>>> schedule community calls to discuss this. >>>>> >>>>> >>>>> Project Goals >>>>> ------------- >>>>> >>>>> Some topics to be considered for the DPDK project include: >>>>> - Project Charter: The charter of the DPDK project should be >>>> clearly >>>>> defined, and should explain the limits of DPDK (what it does and does >>>>> not cover). This does not mean that we would be stuck with a singular >>>>> charter for all time, but the direction and intent of the project >>>> should >>>>> be well understood. >>> >>> One problem we've seen with dpdk is that it is a framework, not a >>>library: >>> it wants to create threads, manage memory, and generally take over. >>>This >>> is a problem for us, as we are writing a framework (seastar, [1]) and >>>need >>> to create threads, manage memory, and generally take over ourselves. >>> >>> Perhaps dpdk can be split into two layers, a library layer that only >>> provides mechanisms, and a framework layer that glues together those >>> mechanisms and applies a policy, trading in generality for ease of use. >> The DPDK system is somewhat divided now between the EAL, PMDS and >>utility >> functions like malloc/rings/Š >> >> The problem I see is the PMDs need a framework to be usable and the EAL >> plus the ethdev layers provide that support today. Setting up and >> initializing the DPDK system is pretty clean just call the EAL init >> routines along with the pool creates and the basic configs for the >> PMDs/hardware. Once the system is inited one can create new threads and >> not requiring anyone to use DPDK launch routines. Maybe I am not >> understanding your needs can you explain more? > >An initialization routine that accepts argc/argv can hardly be called >clean. You want a config file or structure initialization design? If that is the case you can contribute that support as another way to initialize DPDK. > >In seastar, we have our own malloc() (since seastar is sharded we can >provide a faster thread-unsafe malloc implementation). We also have our >own threading, and since dpdk is an optional component in seastar, dpdk >support requires code duplication. DPDK replies one the huge page support for allocation to get the performance, do you also not require huge page support. The malloc system in DPDK can be used as a replacement for the standard malloc if that works for your needs. Also after DPDK inits you can use your own malloc and any other tools you want to use. I do not see a lot of duplicate code here IMO. I guess if you are installing into a very small memory system then yes it could be a problem, but DPDK is was not designed to run in a system with limited memory. > >I would like to launch my own threads, pin them where I like, and call >PMD drivers to send and receive packets. Practically everything else >that dpdk does gets in my way, including mbuf pools. I'd much prefer to >allocate mbufs myself. You do not need to use the lauching of threads in the EAL and can supply your own, right? Regards, ++Keith > > >>> [1] http://seastar-project.org > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 15:49 ` Wiles, Keith @ 2015-05-07 16:05 ` Avi Kivity 2015-05-08 4:16 ` Wiles, Keith 0 siblings, 1 reply; 58+ messages in thread From: Avi Kivity @ 2015-05-07 16:05 UTC (permalink / raw) To: Wiles, Keith, O'Driscoll, Tim; +Cc: dev On 05/07/2015 06:49 PM, Wiles, Keith wrote: > > On 5/7/15, 8:33 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: > >> On 05/07/2015 06:27 PM, Wiles, Keith wrote: >>> On 5/7/15, 7:02 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >>> >>>> On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim >>>> <tim.o'driscoll@intel.com> >>>> wrote: >>>> >>>>> Does anybody have any input or comments on this? >>>>> >>>>> >>>>>> -----Original Message----- >>>>>> From: O'Driscoll, Tim >>>>>> Sent: Thursday, April 16, 2015 11:39 AM >>>>>> To: dev@dpdk.org >>>>>> Subject: Beyond DPDK 2.0 >>>>>> >>>>>> Following the launch of DPDK by Intel as an internal development >>>>>> project, the launch of dpdk.org by 6WIND in 2013, and the first DPDK >>>>> RPM >>>>>> packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >>>>>> prepare for future releases after DPDK 2.0 by starting a discussion >>>>>> on >>>>>> its evolution. Anyone is welcome to join this initiative. >>>>>> >>>>>> Since then, the project has grown significantly: >>>>>> - The number of commits and mailing list posts has increased >>>>>> steadily. >>>>>> - Support has been added for a wide range of new NICs (Mellanox >>>>>> support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >>>>>> - DPDK is now supported on multiple architectures (IBM Power >>>>> support >>>>>> in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed or >>>>>> applied). >>>>>> >>>>>> While this is great progress, we need to make sure that the project >>>>>> is >>>>>> structured in a way that enables it to continue to grow. To achieve >>>>>> this, 6WIND, Red Hat and Intel would like to start a discussion about >>>>>> the future of the project, so that we can agree and establish >>>>> processes >>>>>> that satisfy the needs of the current and future DPDK community. >>>>>> >>>>>> We're very interested in hearing the views of everybody in the >>>>>> community. In addition to debate on the mailing list, we'll also >>>>>> schedule community calls to discuss this. >>>>>> >>>>>> >>>>>> Project Goals >>>>>> ------------- >>>>>> >>>>>> Some topics to be considered for the DPDK project include: >>>>>> - Project Charter: The charter of the DPDK project should be >>>>> clearly >>>>>> defined, and should explain the limits of DPDK (what it does and does >>>>>> not cover). This does not mean that we would be stuck with a singular >>>>>> charter for all time, but the direction and intent of the project >>>>> should >>>>>> be well understood. >>>> One problem we've seen with dpdk is that it is a framework, not a >>>> library: >>>> it wants to create threads, manage memory, and generally take over. >>>> This >>>> is a problem for us, as we are writing a framework (seastar, [1]) and >>>> need >>>> to create threads, manage memory, and generally take over ourselves. >>>> >>>> Perhaps dpdk can be split into two layers, a library layer that only >>>> provides mechanisms, and a framework layer that glues together those >>>> mechanisms and applies a policy, trading in generality for ease of use. >>> The DPDK system is somewhat divided now between the EAL, PMDS and >>> utility >>> functions like malloc/rings/Š >>> >>> The problem I see is the PMDs need a framework to be usable and the EAL >>> plus the ethdev layers provide that support today. Setting up and >>> initializing the DPDK system is pretty clean just call the EAL init >>> routines along with the pool creates and the basic configs for the >>> PMDs/hardware. Once the system is inited one can create new threads and >>> not requiring anyone to use DPDK launch routines. Maybe I am not >>> understanding your needs can you explain more? >> An initialization routine that accepts argc/argv can hardly be called >> clean. > You want a config file or structure initialization design? If that is the > case you can contribute that support as another way to initialize DPDK. A config file would be even worse. But we are discussing why dpdk-as-a-framework is detrimental, not new ways for me to contribute. >> In seastar, we have our own malloc() (since seastar is sharded we can >> provide a faster thread-unsafe malloc implementation). We also have our >> own threading, and since dpdk is an optional component in seastar, dpdk >> support requires code duplication. > DPDK replies one the huge page support for allocation to get the > performance, do you also not require huge page support. Sorry, is this a question? Please rephrase. > The malloc system > in DPDK can be used as a replacement for the standard malloc if that works > for your needs. Also after DPDK inits you can use your own malloc and any > other tools you want to use. How is memory partitioned between dpdk and my application? If I underallocate dpdk memory, something bad will happen. If I overallocate dpdk memory, then I am depriving my application of this memory. A common pool means I do not overallocate or underallocate, but since dpdk insists on managing its own pools, I can't do this. > I do not see a lot of duplicate code here > IMO. I guess if you are installing into a very small memory system then > yes it could be a problem, but DPDK is was not designed to run in a system > with limited memory. I am not talking about duplicate code, but about duplicate functionality, done slightly differently. I want to use dpdk in the same way as I use every other library, by calling its initialization routine and then calling its functions. In this scenario, the library is passive, only reacting to my calls. The way dpdk works now is actively, taking over resources, creating thread, and calling my code instead of the other way round. > >> I would like to launch my own threads, pin them where I like, and call >> PMD drivers to send and receive packets. Practically everything else >> that dpdk does gets in my way, including mbuf pools. I'd much prefer to >> allocate mbufs myself. > You do not need to use the lauching of threads in the EAL and can supply > your own, right? Right. > Regards, > ++Keith >> >>>> [1] http://seastar-project.org ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 16:05 ` Avi Kivity @ 2015-05-08 4:16 ` Wiles, Keith 2015-05-08 5:29 ` Luke Gorrie 2015-05-08 10:26 ` Hobywan Kenoby 0 siblings, 2 replies; 58+ messages in thread From: Wiles, Keith @ 2015-05-08 4:16 UTC (permalink / raw) To: Avi Kivity, O'Driscoll, Tim; +Cc: dev On 5/7/15, 9:05 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >On 05/07/2015 06:49 PM, Wiles, Keith wrote: >> >> On 5/7/15, 8:33 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >> >>> On 05/07/2015 06:27 PM, Wiles, Keith wrote: >>>> On 5/7/15, 7:02 AM, "Avi Kivity" <avi@cloudius-systems.com> wrote: >>>> >>>>> On Wed, Apr 22, 2015 at 6:11 PM, O'Driscoll, Tim >>>>> <tim.o'driscoll@intel.com> >>>>> wrote: >>>>> >>>>>> Does anybody have any input or comments on this? >>>>>> >>>>>> >>>>>>> -----Original Message----- >>>>>>> From: O'Driscoll, Tim >>>>>>> Sent: Thursday, April 16, 2015 11:39 AM >>>>>>> To: dev@dpdk.org >>>>>>> Subject: Beyond DPDK 2.0 >>>>>>> >>>>>>> Following the launch of DPDK by Intel as an internal development >>>>>>> project, the launch of dpdk.org by 6WIND in 2013, and the first >>>>>>>DPDK >>>>>> RPM >>>>>>> packages for Fedora in 2014, 6WIND, Red Hat and Intel would like to >>>>>>> prepare for future releases after DPDK 2.0 by starting a discussion >>>>>>> on >>>>>>> its evolution. Anyone is welcome to join this initiative. >>>>>>> >>>>>>> Since then, the project has grown significantly: >>>>>>> - The number of commits and mailing list posts has increased >>>>>>> steadily. >>>>>>> - Support has been added for a wide range of new NICs (Mellanox >>>>>>> support submitted by 6WIND, Cisco VIC, Intel i40e and fm10k etc.). >>>>>>> - DPDK is now supported on multiple architectures (IBM Power >>>>>> support >>>>>>> in DPDK 1.8, Tile support submitted by EZchip but not yet reviewed >>>>>>>or >>>>>>> applied). >>>>>>> >>>>>>> While this is great progress, we need to make sure that the project >>>>>>> is >>>>>>> structured in a way that enables it to continue to grow. To achieve >>>>>>> this, 6WIND, Red Hat and Intel would like to start a discussion >>>>>>>about >>>>>>> the future of the project, so that we can agree and establish >>>>>> processes >>>>>>> that satisfy the needs of the current and future DPDK community. >>>>>>> >>>>>>> We're very interested in hearing the views of everybody in the >>>>>>> community. In addition to debate on the mailing list, we'll also >>>>>>> schedule community calls to discuss this. >>>>>>> >>>>>>> >>>>>>> Project Goals >>>>>>> ------------- >>>>>>> >>>>>>> Some topics to be considered for the DPDK project include: >>>>>>> - Project Charter: The charter of the DPDK project should be >>>>>> clearly >>>>>>> defined, and should explain the limits of DPDK (what it does and >>>>>>>does >>>>>>> not cover). This does not mean that we would be stuck with a >>>>>>>singular >>>>>>> charter for all time, but the direction and intent of the project >>>>>> should >>>>>>> be well understood. >>>>> One problem we've seen with dpdk is that it is a framework, not a >>>>> library: >>>>> it wants to create threads, manage memory, and generally take over. >>>>> This >>>>> is a problem for us, as we are writing a framework (seastar, [1]) and >>>>> need >>>>> to create threads, manage memory, and generally take over ourselves. >>>>> >>>>> Perhaps dpdk can be split into two layers, a library layer that only >>>>> provides mechanisms, and a framework layer that glues together those >>>>> mechanisms and applies a policy, trading in generality for ease of >>>>>use. >>>> The DPDK system is somewhat divided now between the EAL, PMDS and >>>> utility >>>> functions like malloc/rings/Š >>>> >>>> The problem I see is the PMDs need a framework to be usable and the >>>>EAL >>>> plus the ethdev layers provide that support today. Setting up and >>>> initializing the DPDK system is pretty clean just call the EAL init >>>> routines along with the pool creates and the basic configs for the >>>> PMDs/hardware. Once the system is inited one can create new threads >>>>and >>>> not requiring anyone to use DPDK launch routines. Maybe I am not >>>> understanding your needs can you explain more? >>> An initialization routine that accepts argc/argv can hardly be called >>> clean. >> You want a config file or structure initialization design? If that is >>the >> case you can contribute that support as another way to initialize DPDK. > >A config file would be even worse. But we are discussing why >dpdk-as-a-framework is detrimental, not new ways for me to contribute. In a way you stated argc/argv was not a clean, I was only suggesting (more I was asking) what you would like to see? The contribute part was just an example of how you or anyone can help make DPDK better. I wanted to understand why argc/argv was not a clan way for your needs. > >>> In seastar, we have our own malloc() (since seastar is sharded we can >>> provide a faster thread-unsafe malloc implementation). We also have >>>our >>> own threading, and since dpdk is an optional component in seastar, dpdk >>> support requires code duplication. >> DPDK replies one the huge page support for allocation to get the >> performance, do you also not require huge page support. > >Sorry, is this a question? Please rephrase. Sorry, auto correct got me and trying to answer quickly before a meeting. DPDK uses huge pages to get the best performance and is tied into the MBUFS and memory allocation. You can turn off huge page support in DPDK, but your performance will drop. The MBUF support is also a very critical performance designed structure and is used by the PMDs along with just about everything else in DPDK. The PMDs or drivers would not be useful without DPDK MBUFS IMO and huge page support. The huge page support can be written by someone, but the allocation routines for MBUFS/Pools is designed to give the best performance for DPDK, which makes PMDs and MBUFS required IMO. Trying to split DPDK up into just library parts you can use independently is going to be hard IMHO. Like any complex system the functions/features are required to be used together to get the best performance. Can you help me understand which parts of DPDK you would like to split out and use? > >> The malloc system >> in DPDK can be used as a replacement for the standard malloc if that >>works >> for your needs. Also after DPDK inits you can use your own malloc and >>any >> other tools you want to use. > >How is memory partitioned between dpdk and my application? If I >underallocate dpdk memory, something bad will happen. If I overallocate >dpdk memory, then I am depriving my application of this memory. A >common pool means I do not overallocate or underallocate, but since dpdk >insists on managing its own pools, I can't do this. I believe you can define 'malloc' as rte_malloc and use only DPDK memory allocation for your application, but it does take some extra steps to get it working. At least that is what I was told today and if you want to investigate doing something like that let me know and I will get more details. I do not know your application and can not say if that type of change would help. Using only one type of memory allocation or heap is the right way to go as you stated. > >> I do not see a lot of duplicate code here >> IMO. I guess if you are installing into a very small memory system then >> yes it could be a problem, but DPDK is was not designed to run in a >>system >> with limited memory. > >I am not talking about duplicate code, but about duplicate >functionality, done slightly differently. I want to use dpdk in the >same way as I use every other library, by calling its initialization >routine and then calling its functions. In this scenario, the library >is passive, only reacting to my calls. The way dpdk works now is >actively, taking over resources, creating thread, and calling my code >instead of the other way round. Sounds like you want something like libc, but DPDK is a system like a user space OS more then it is a collection of functions that are independent like strlen, strcpy, memcpy, printf or ... Some parts of DPDK are independent and can be used as you suggest, but the real performance sections are tied together. I would like to understand what parts of DPDK you need to be standalone or different. Maybe if you give some examples we could possible figure out how to make DPDK more reasonable for your projects. > >> >>> I would like to launch my own threads, pin them where I like, and call >>> PMD drivers to send and receive packets. Practically everything else >>> that dpdk does gets in my way, including mbuf pools. I'd much prefer >>>to >>> allocate mbufs myself. >> You do not need to use the lauching of threads in the EAL and can supply >> your own, right? > >Right. > >> Regards, >> ++Keith >>> >>>>> [1] http://seastar-project.org > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 4:16 ` Wiles, Keith @ 2015-05-08 5:29 ` Luke Gorrie 2015-05-08 9:06 ` Bruce Richardson 2015-05-08 14:44 ` Wiles, Keith 2015-05-08 10:26 ` Hobywan Kenoby 1 sibling, 2 replies; 58+ messages in thread From: Luke Gorrie @ 2015-05-08 5:29 UTC (permalink / raw) To: Wiles, Keith; +Cc: dev On 8 May 2015 at 06:16, Wiles, Keith <keith.wiles@intel.com> wrote: > The PMDs or drivers would not be useful without DPDK MBUFS IMO > Surprisingly perhaps, I would find them very useful. To me there are two parts to a driver: the hardware setup and the transmit/receive. The hardware setup is complex and generic. You have to read a thousand-page data sheet and then write code to initialize the hardware, setup queues, enable promisc/multicast, enable features you want like vmdq or flow director, and so on. You need to accumulate workarounds for hard-to-test problems like cards being discovered with unsuitable values in their EEPROM. There is not much intellectual value in this code being written more than once. I would like to see this hardware setup code shared between many projects. That code does not depend on a specific mbuf struct. Sharing could be done with an embeddable PMD library, with a bifurcated driver in the kernel, with the SR-IOV PF/VF model, or surely other ways too. These all have limited applicability today. The transmit/receive part, on the other hand, seems very application-dependent. This part depends on the specific mbuf struct and the way you are developing your application around it. You will need to write code to suit your design for using scatter/gather, allowed sizes of individual buffers, the granularity at which you are keeping track of checksum validity, how you use TSO/LRO, how you use interrupts, how you batch work together, and so on. This is easy or hard depending on how simple or complex the application is. I am not so interested in sharing this code. I think that different applications will legitimately have different designs - including mbuf structs - and they all need code that suits their own design. I think there is a lot of value in people being creative in these areas and trying different things. So while Avi might only mean that he wants to allocate the bytes for his mbufs himself, on our side we want to design our own mbuf struct. The cost of that today is to write our own device drivers from scratch but for now that seems justified. Going forward if there were a simpler mechanism that reduced our workload and gave us access to more hardware - libixgbe, libi40e, etc - that would be extremely interesting to us. I suppose that another background question is whether the DPDK community are chiefly concerned with advancing DPDK as a platform and a brand or are broadly keen to develop and share code that is useful in diverse networking projects. (Is this whole discussion off-topic for dpdk-devel?) This is one of the many reasons why I would love to use parts of DPDK but do not want to use all of it. (We also allocate our HugeTLBs differently, etc, because we have different priorities.) ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 5:29 ` Luke Gorrie @ 2015-05-08 9:06 ` Bruce Richardson 2015-05-08 9:32 ` Luke Gorrie 2015-05-08 14:44 ` Wiles, Keith 1 sibling, 1 reply; 58+ messages in thread From: Bruce Richardson @ 2015-05-08 9:06 UTC (permalink / raw) To: Luke Gorrie; +Cc: dev On Fri, May 08, 2015 at 07:29:39AM +0200, Luke Gorrie wrote: > On 8 May 2015 at 06:16, Wiles, Keith <keith.wiles@intel.com> wrote: > > > The PMDs or drivers would not be useful without DPDK MBUFS IMO > > > > Surprisingly perhaps, I would find them very useful. > > To me there are two parts to a driver: the hardware setup and the > transmit/receive. > > The hardware setup is complex and generic. You have to read a thousand-page > data sheet and then write code to initialize the hardware, setup queues, > enable promisc/multicast, enable features you want like vmdq or flow > director, and so on. You need to accumulate workarounds for hard-to-test > problems like cards being discovered with unsuitable values in their > EEPROM. There is not much intellectual value in this code being written > more than once. For the Intel NIC drivers, the hardware setup part used in DPDK is based off the other Intel drivers for other OS's. The code you are interested in should therefore be contained within the subfolders off each individual PMD. As you point out below, the mbuf specific part is only present in the files in the top-level PMD folder with the DPDK-specific RX/TX and queue setup routines. Regards, /Bruce > > I would like to see this hardware setup code shared between many projects. > That code does not depend on a specific mbuf struct. Sharing could be done > with an embeddable PMD library, with a bifurcated driver in the kernel, > with the SR-IOV PF/VF model, or surely other ways too. These all have > limited applicability today. > > The transmit/receive part, on the other hand, seems very > application-dependent. This part depends on the specific mbuf struct and > the way you are developing your application around it. You will need to > write code to suit your design for using scatter/gather, allowed sizes of > individual buffers, the granularity at which you are keeping track of > checksum validity, how you use TSO/LRO, how you use interrupts, how you > batch work together, and so on. This is easy or hard depending on how > simple or complex the application is. > > I am not so interested in sharing this code. I think that different > applications will legitimately have different designs - including mbuf > structs - and they all need code that suits their own design. I think there > is a lot of value in people being creative in these areas and trying > different things. > > So while Avi might only mean that he wants to allocate the bytes for his > mbufs himself, on our side we want to design our own mbuf struct. The cost > of that today is to write our own device drivers from scratch but for now > that seems justified. Going forward if there were a simpler mechanism that > reduced our workload and gave us access to more hardware - libixgbe, > libi40e, etc - that would be extremely interesting to us. > > I suppose that another background question is whether the DPDK community > are chiefly concerned with advancing DPDK as a platform and a brand or are > broadly keen to develop and share code that is useful in diverse networking > projects. (Is this whole discussion off-topic for dpdk-devel?) > > This is one of the many reasons why I would love to use parts of DPDK but > do not want to use all of it. (We also allocate our HugeTLBs differently, > etc, because we have different priorities.) ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 9:06 ` Bruce Richardson @ 2015-05-08 9:32 ` Luke Gorrie 2015-05-08 9:42 ` Bruce Richardson 0 siblings, 1 reply; 58+ messages in thread From: Luke Gorrie @ 2015-05-08 9:32 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev Hi Bruce, On 8 May 2015 at 11:06, Bruce Richardson <bruce.richardson@intel.com> wrote: > For the Intel NIC drivers, the hardware setup part used in DPDK is based > off > the other Intel drivers for other OS's. The code you are interested in > should > therefore be contained within the subfolders off each individual PMD. As > you point > out below, the mbuf specific part is only present in the files in the > top-level > PMD folder with the DPDK-specific RX/TX and queue setup routines. Interesting! How could one embed these Intel drivers (igb, ixgbe, i40e, ...) into new programs? If there is documentation, a platform-agnostic master repository, etc, that would be really interesting. I have the impression as an outsider that the various incarnations of these drivers (Linux, FreeBSD, DPDK) are loosely synchronized forks maintained at considerable effort by each project. If there is actually a common core that is easy to adopt, I am interested! (If dpdk-devel is the wrong mailing list for this discussion then perhaps you could reply with Cc: to a more suitable one and I will subscribe there.) Cheers, -Luke ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 9:32 ` Luke Gorrie @ 2015-05-08 9:42 ` Bruce Richardson 2015-05-08 10:02 ` Luke Gorrie 0 siblings, 1 reply; 58+ messages in thread From: Bruce Richardson @ 2015-05-08 9:42 UTC (permalink / raw) To: Luke Gorrie; +Cc: dev On Fri, May 08, 2015 at 11:32:04AM +0200, Luke Gorrie wrote: > Hi Bruce, > > On 8 May 2015 at 11:06, Bruce Richardson <bruce.richardson@intel.com> wrote: > > > For the Intel NIC drivers, the hardware setup part used in DPDK is based > > off > > the other Intel drivers for other OS's. The code you are interested in > > should > > therefore be contained within the subfolders off each individual PMD. As > > you point > > out below, the mbuf specific part is only present in the files in the > > top-level > > PMD folder with the DPDK-specific RX/TX and queue setup routines. > > > Interesting! > > How could one embed these Intel drivers (igb, ixgbe, i40e, ...) into new > programs? > > If there is documentation, a platform-agnostic master repository, etc, that > would be really interesting. > > I have the impression as an outsider that the various incarnations of these > drivers (Linux, FreeBSD, DPDK) are loosely synchronized forks maintained at > considerable effort by each project. If there is actually a common core > that is easy to adopt, I am interested! > > (If dpdk-devel is the wrong mailing list for this discussion then perhaps > you could reply with Cc: to a more suitable one and I will subscribe there.) > > Cheers, > -Luke The code in those directories is "common" code that is maintained by Intel - which is why you see repeated comments about not modifying it for DPDK. It is just contained in it's own subfolder in each DPDK driver for easier updating off the internal Intel baseline. /Bruce ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 9:42 ` Bruce Richardson @ 2015-05-08 10:02 ` Luke Gorrie 0 siblings, 0 replies; 58+ messages in thread From: Luke Gorrie @ 2015-05-08 10:02 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev On 8 May 2015 at 11:42, Bruce Richardson <bruce.richardson@intel.com> wrote: > The code in those directories is "common" code that is maintained by Intel > - > which is why you see repeated comments about not modifying it for DPDK. It > is > just contained in it's own subfolder in each DPDK driver for easier > updating > off the internal Intel baseline. > Thanks for pointing this out to me, Bruce. Food for thought. Cheers, -Luke ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 5:29 ` Luke Gorrie 2015-05-08 9:06 ` Bruce Richardson @ 2015-05-08 14:44 ` Wiles, Keith 2015-05-08 16:16 ` Stephen Hemminger 1 sibling, 1 reply; 58+ messages in thread From: Wiles, Keith @ 2015-05-08 14:44 UTC (permalink / raw) To: Luke Gorrie; +Cc: dev Hi Luke, On 5/7/15, 10:29 PM, "Luke Gorrie" <luke@snabb.co> wrote: >On 8 May 2015 at 06:16, Wiles, Keith <keith.wiles@intel.com> wrote: > >The PMDs or drivers would not be useful without DPDK MBUFS IMO > > > > > >Surprisingly perhaps, I would find them very useful. > > >To me there are two parts to a driver: the hardware setup and the >transmit/receive. > > >The hardware setup is complex and generic. You have to read a >thousand-page data sheet and then write code to initialize the hardware, >setup queues, enable promisc/multicast, enable features you want like >vmdq or flow director, and so on. You need to accumulate > workarounds for hard-to-test problems like cards being discovered with >unsuitable values in their EEPROM. There is not much intellectual value >in this code being written more than once. > > >I would like to see this hardware setup code shared between many >projects. That code does not depend on a specific mbuf struct. Sharing >could be done with an embeddable PMD library, with a bifurcated driver in >the kernel, with the SR-IOV PF/VF model, or > surely other ways too. These all have limited applicability today. > > >The transmit/receive part, on the other hand, seems very >application-dependent. This part depends on the specific mbuf struct and >the way you are developing your application around it. You will need to >write code to suit your design for using scatter/gather, > allowed sizes of individual buffers, the granularity at which you are >keeping track of checksum validity, how you use TSO/LRO, how you use >interrupts, how you batch work together, and so on. This is easy or hard >depending on how simple or complex the application > is. > > >I am not so interested in sharing this code. I think that different >applications will legitimately have different designs - including mbuf >structs - and they all need code that suits their own design. I think >there is a lot of value in people being creative > in these areas and trying different things. > > >So while Avi might only mean that he wants to allocate the bytes for his >mbufs himself, on our side we want to design our own mbuf struct. The >cost of that today is to write our own device drivers from scratch but >for now that seems justified. Going forward > if there were a simpler mechanism that reduced our workload and gave us >access to more hardware - libixgbe, libi40e, etc - that would be >extremely interesting to us. I think I see your point about hardware setup and handling packets from the rings as it would be nice to allow others to utilize those parts of the code. The drivers (I believe) are mostly from FreeBSD and changed to be our PMDs, which to me they are fairly generic in some cases. I will have a look at the drivers when I get back home. In the past I have written drivers using the your suggestion around we have a upper and lower layer the lower layer is all hardware specific and the upper layer is all around the network stack interface. My point is we should be able to split the two and possible provide you the lower layer APIs in a cleaner way. > > > >I suppose that another background question is whether the DPDK community >are chiefly concerned with advancing DPDK as a platform and a brand or >are broadly keen to develop and share code that is useful in diverse >networking projects. (Is this whole discussion > off-topic for dpdk-devel?) I would suggested you are correct DPDK as platform is more how it started and is going, but it does not mean we can not move is a slightly different direction to help other access the parts which are more generic. Regards, ++Keith > > >This is one of the many reasons why I would love to use parts of DPDK but >do not want to use all of it. (We also allocate our HugeTLBs differently, >etc, because we have different priorities.) > > > > > > > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 14:44 ` Wiles, Keith @ 2015-05-08 16:16 ` Stephen Hemminger 0 siblings, 0 replies; 58+ messages in thread From: Stephen Hemminger @ 2015-05-08 16:16 UTC (permalink / raw) To: Wiles, Keith; +Cc: dev On Fri, 8 May 2015 14:44:17 +0000 "Wiles, Keith" <keith.wiles@intel.com> wrote: > Hi Luke, > > On 5/7/15, 10:29 PM, "Luke Gorrie" <luke@snabb.co> wrote: > > >On 8 May 2015 at 06:16, Wiles, Keith <keith.wiles@intel.com> wrote: > > > >The PMDs or drivers would not be useful without DPDK MBUFS IMO > > > > > > > > > > > >Surprisingly perhaps, I would find them very useful. > > > > > >To me there are two parts to a driver: the hardware setup and the > >transmit/receive. > > > > > >The hardware setup is complex and generic. You have to read a > >thousand-page data sheet and then write code to initialize the hardware, > >setup queues, enable promisc/multicast, enable features you want like > >vmdq or flow director, and so on. You need to accumulate > > workarounds for hard-to-test problems like cards being discovered with > >unsuitable values in their EEPROM. There is not much intellectual value > >in this code being written more than once. > > > > > >I would like to see this hardware setup code shared between many > >projects. That code does not depend on a specific mbuf struct. Sharing > >could be done with an embeddable PMD library, with a bifurcated driver in > >the kernel, with the SR-IOV PF/VF model, or > > surely other ways too. These all have limited applicability today. > > > > > >The transmit/receive part, on the other hand, seems very > >application-dependent. This part depends on the specific mbuf struct and > >the way you are developing your application around it. You will need to > >write code to suit your design for using scatter/gather, > > allowed sizes of individual buffers, the granularity at which you are > >keeping track of checksum validity, how you use TSO/LRO, how you use > >interrupts, how you batch work together, and so on. This is easy or hard > >depending on how simple or complex the application > > is. > > > > > >I am not so interested in sharing this code. I think that different > >applications will legitimately have different designs - including mbuf > >structs - and they all need code that suits their own design. I think > >there is a lot of value in people being creative > > in these areas and trying different things. > > > > > >So while Avi might only mean that he wants to allocate the bytes for his > >mbufs himself, on our side we want to design our own mbuf struct. The > >cost of that today is to write our own device drivers from scratch but > >for now that seems justified. Going forward > > if there were a simpler mechanism that reduced our workload and gave us > >access to more hardware - libixgbe, libi40e, etc - that would be > >extremely interesting to us. > > I think I see your point about hardware setup and handling packets from > the rings as it would be nice to allow others to utilize those parts of > the code. The drivers (I believe) are mostly from FreeBSD and changed to > be our PMDs, which to me they are fairly generic in some cases. I will > have a look at the drivers when I get back home. In the past I have > written drivers using the your suggestion around we have a upper and lower > layer the lower layer is all hardware specific and the upper layer is all > around the network stack interface. My point is we should be able to split > the two and possible provide you the lower layer APIs in a cleaner way. The point is this is BSD code, you can do with it what you will. But the DPDK community doesn't have to care about changes breaking your proprietary application. That is the problem with the whole concept of making DPDK drivers a separate component. It makes them immutable and unmaintainable. Developers don't want to be responsible for code that is used outside its original scope. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 4:16 ` Wiles, Keith 2015-05-08 5:29 ` Luke Gorrie @ 2015-05-08 10:26 ` Hobywan Kenoby 2015-05-08 13:31 ` Neil Horman 1 sibling, 1 reply; 58+ messages in thread From: Hobywan Kenoby @ 2015-05-08 10:26 UTC (permalink / raw) To: Wiles, Keith, Avi Kivity, O'Driscoll, Tim; +Cc: dev > Sounds like you want something like libc, but DPDK is a system like a user > space OS more then it is a collection of functions that are independent > like strlen, strcpy, memcpy, printf or ... Some parts of DPDK are > independent and can be used as you suggest, but the real performance > sections are tied together. > > >> Regards, > >> ++Keith This is indeed quite a statement. DPDK is not just a bunch of NIC drivers, but "a user space OS" (DPDK 1.0 had a baremetal boot: why did it disappeared?). Why Linux or Windows do not integrate DPDK concepts to catch up performance wise? Is it something so deep like the "Big Kernel Lock" that took so many years to get rid of? My assumption is that all current kernels have been built with one implicit hypothesis: the memory is much faster than cpu. This is the opposite today. DPDK internal structure has been adapted to the new paradigm where the TLBs, the memory bandwidth are the scarce resources to manage. So I guess Linux and Windows will not be able to integrate DPDK concepts for performance anytime soon, if ever... Reading the list carefully, I expect disk block PMDs (and block framework?) to come next. Beyond DPDK 2.0: is it time to accept the fact that DPDK community is actually paving the way to the next generation lightweight, high performance, para-virtualized OS? Is it a DPDK task? Another project ? Should we rename DPDK to PVDK? - HK ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 10:26 ` Hobywan Kenoby @ 2015-05-08 13:31 ` Neil Horman 2015-05-08 16:22 ` Stephen Hemminger 0 siblings, 1 reply; 58+ messages in thread From: Neil Horman @ 2015-05-08 13:31 UTC (permalink / raw) To: Hobywan Kenoby; +Cc: dev On Fri, May 08, 2015 at 12:26:39PM +0200, Hobywan Kenoby wrote: > > > Sounds like you want something like libc, but DPDK is a system like a user > > space OS more then it is a collection of functions that are independent > > like strlen, strcpy, memcpy, printf or ... Some parts of DPDK are > > independent and can be used as you suggest, but the real performance > > sections are tied together. > > > > >> Regards, > > >> ++Keith > > This is indeed quite a statement. DPDK is not just a > bunch of NIC drivers, but "a user space OS" (DPDK 1.0 had a baremetal > boot: why did it disappeared?). > > > > Why Linux or Windows do not integrate DPDK concepts to > catch up performance wise? Is it something so deep like the "Big > Kernel Lock" that took so many years to get rid of? > Some optimizations are being looked at in the kernel (more deeply ingrained use of accelerators/offloads like cam management/flow steering, checksum & encap offloads, tx batching, etc) Those are features which the kernel can opportunistically take advantage of in a hardware agnostic fashion. Some optimizations simply aren't worth the effort to take into a general purpose OS that seeks to support multiple arches. Many of the DPDK optimizations utilize instruction families like AVX or SSE, which, while potentially useful in some situations have equal potential to be catastrophic to non network-i/o bound workloads. > > > My assumption is that all current kernels have been > built with one implicit hypothesis: the memory is much faster than cpu. This is Thats not entirely true. Or more to the point, its not true in any way thats relevant to a comparison between DPDK and the Linux network stack. Linux is as careful with its cache management as DPDK is (arguably more so, as it has to juggle multiple workloads instead of the single purpose workload that DPDK is designed for). The difference is that Linux often has to ignore some performance improvements because it has the additional responsibiilty of providing secruity and isolation to multiple processes on multiple architectures. > the opposite today. DPDK internal structure has been adapted to the new > paradigm where the TLBs, the memory bandwidth are the scarce resources to manage. So I > guess Linux and Windows will not be able to integrate DPDK concepts for > performance anytime soon, if ever... > This is the case with every bit of software. Memory bandwidth is always a scarce resoruce to manage. The difference is that general purpose operating systems consider protection/layering/isolation to be of equal or greater importance than performance. Tradeoffs have to be made. Linux in general strives to isolate hardware from applications both functionally and physically so as to ensure that there is minimal risk in one process adversely affecting the other. The tradeoff is that the Linux device model can't just do anything it wants to improve performance. Converserly, DPDK is all about performance. Up until recently (and likely still somewhat in the future), you have to rebuild your application every time you move to a new version of DPDK, because the API fluctuated with every release to eek out additional performance. The DPDK can optimize using vectorized x86 instructions and other cpu specific features througout because it is in the position to only worry about a very narrow field of architectures. > > > Reading the list carefully, I expect disk block PMDs > (and block framework?) to come next. > > > > Beyond DPDK 2.0: is it time to accept the fact that > DPDK community is actually paving the way to the next generation lightweight, > high performance, para-virtualized OS? Is it a DPDK task? Another project ? > Should we rename DPDK to PVDK? > > > > - HK > > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-08 13:31 ` Neil Horman @ 2015-05-08 16:22 ` Stephen Hemminger 0 siblings, 0 replies; 58+ messages in thread From: Stephen Hemminger @ 2015-05-08 16:22 UTC (permalink / raw) To: Neil Horman; +Cc: dev On Fri, 8 May 2015 09:31:34 -0400 Neil Horman <nhorman@tuxdriver.com> wrote: > On Fri, May 08, 2015 at 12:26:39PM +0200, Hobywan Kenoby wrote: > > > > > Sounds like you want something like libc, but DPDK is a system like a user > > > space OS more then it is a collection of functions that are independent > > > like strlen, strcpy, memcpy, printf or ... Some parts of DPDK are > > > independent and can be used as you suggest, but the real performance > > > sections are tied together. > > > > > > >> Regards, > > > >> ++Keith > > > > This is indeed quite a statement. DPDK is not just a > > bunch of NIC drivers, but "a user space OS" (DPDK 1.0 had a baremetal > > boot: why did it disappeared?). > > > > > > > > Why Linux or Windows do not integrate DPDK concepts to > > catch up performance wise? Is it something so deep like the "Big > > Kernel Lock" that took so many years to get rid of? > > > Some optimizations are being looked at in the kernel (more deeply ingrained use > of accelerators/offloads like cam management/flow steering, checksum & encap > offloads, tx batching, etc) Those are features which the kernel can > opportunistically take advantage of in a hardware agnostic fashion. > > Some optimizations simply aren't worth the effort to take into a general purpose > OS that seeks to support multiple arches. Many of the DPDK optimizations > utilize instruction families like AVX or SSE, which, while potentially useful in > some situations have equal potential to be catastrophic to non network-i/o bound > workloads. > > > > > > My assumption is that all current kernels have been > > built with one implicit hypothesis: the memory is much faster than cpu. This is > Thats not entirely true. Or more to the point, its not true in any way thats > relevant to a comparison between DPDK and the Linux network stack. Linux is as > careful with its cache management as DPDK is (arguably more so, as it has to > juggle multiple workloads instead of the single purpose workload that DPDK is > designed for). The difference is that Linux often has to ignore some > performance improvements because it has the additional responsibiilty of > providing secruity and isolation to multiple processes on multiple > architectures. > > > the opposite today. DPDK internal structure has been adapted to the new > > paradigm where the TLBs, the memory bandwidth are the scarce resources to manage. So I > > guess Linux and Windows will not be able to integrate DPDK concepts for > > performance anytime soon, if ever... > > > This is the case with every bit of software. Memory bandwidth is always a > scarce resoruce to manage. The difference is that general purpose operating > systems consider protection/layering/isolation to be of equal or greater > importance than performance. Tradeoffs have to be made. Linux in general > strives to isolate hardware from applications both functionally and physically > so as to ensure that there is minimal risk in one process adversely affecting > the other. The tradeoff is that the Linux device model can't just do anything > it wants to improve performance. > > Converserly, DPDK is all about performance. Up until recently (and likely still > somewhat in the future), you have to rebuild your application every time you > move to a new version of DPDK, because the API fluctuated with every release to > eek out additional performance. The DPDK can optimize using vectorized x86 > instructions and other cpu specific features througout because it is in the > position to only worry about a very narrow field of architectures. > > > > > > > Reading the list carefully, I expect disk block PMDs > > (and block framework?) to come next. > > > > > > > > Beyond DPDK 2.0: is it time to accept the fact that > > DPDK community is actually paving the way to the next generation lightweight, > > high performance, para-virtualized OS? Is it a DPDK task? Another project ? > > Should we rename DPDK to PVDK? The difference is DPDK doesn't care about being general purpose: - scheduler, that is the applications problem - locking, the application must be bound to cpus or do its own locking - buffer management, up to the application. - memory protection (haha) Any operating system provides an abstraction that makes programming easier. If you strip away those abstractions, then sure things go faster but it is less safe and harder. Linux is about providing safe abstraction. If you want an OS that doesn't do that, look to Cloudius or the other DIY environments like DPDK. This is not a new concept. Oracle and other DBMS vendors have been asking for the OS to get out of the way for years, but then customers find that things like filesystems are convenient necessities. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 14:02 ` Avi Kivity 2015-05-07 14:34 ` Ivan Boule 2015-05-07 15:27 ` Wiles, Keith @ 2015-05-07 15:34 ` Luke Gorrie 2015-05-08 4:31 ` Wiles, Keith 2 siblings, 1 reply; 58+ messages in thread From: Luke Gorrie @ 2015-05-07 15:34 UTC (permalink / raw) To: Avi Kivity; +Cc: dev On 7 May 2015 at 16:02, Avi Kivity <avi@cloudius-systems.com> wrote: > One problem we've seen with dpdk is that it is a framework, not a library: > it wants to create threads, manage memory, and generally take over. This > is a problem for us, as we are writing a framework (seastar, [1]) and need > to create threads, manage memory, and generally take over ourselves. > That is also broadly why we don't currently use DPDK in Snabb Switch [1]. There is a bunch of functionality in DPDK that would be tempting for us to use and contribute back to: device drivers, SIMD routines, data structures, and so on. I think that we would do this if they were available piecemeal as stand-alone libi40e, libsimd, liblpn, etc. The whole DPDK platform/framework is too much for us to adopt though. Some aspects of it are in conflict with our goals and it is an all-or-nothing proposition. So for now we are staying self-sufficient even when it means writing our own ixgbe replacement, etc. Having said that we are able to share code that doesn't require linking into our address space e.g. vhost-user and potentially the bifurcated drivers in the future. That seems like a nice direction for things to be going in and a way to collaborate even without our directly linking with DPDK. [1] https://github.com/lukego/snabbswitch/blob/README/README.md ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-05-07 15:34 ` Luke Gorrie @ 2015-05-08 4:31 ` Wiles, Keith 0 siblings, 0 replies; 58+ messages in thread From: Wiles, Keith @ 2015-05-08 4:31 UTC (permalink / raw) To: Luke Gorrie, Avi Kivity; +Cc: dev Hi Luke On 5/7/15, 8:34 AM, "Luke Gorrie" <luke@snabb.co> wrote: >On 7 May 2015 at 16:02, Avi Kivity <avi@cloudius-systems.com> wrote: > >> One problem we've seen with dpdk is that it is a framework, not a >>library: >> it wants to create threads, manage memory, and generally take over. >>This >> is a problem for us, as we are writing a framework (seastar, [1]) and >>need >> to create threads, manage memory, and generally take over ourselves. >> > >That is also broadly why we don't currently use DPDK in Snabb Switch [1]. > >There is a bunch of functionality in DPDK that would be tempting for us to >use and contribute back to: device drivers, SIMD routines, data >structures, >and so on. I think that we would do this if they were available piecemeal >as stand-alone libi40e, libsimd, liblpn, etc. > >The whole DPDK platform/framework is too much for us to adopt though. Some >aspects of it are in conflict with our goals and it is an all-or-nothing >proposition. So for now we are staying self-sufficient even when it means >writing our own ixgbe replacement, etc. > >Having said that we are able to share code that doesn't require linking >into our address space e.g. vhost-user and potentially the bifurcated >drivers in the future. That seems like a nice direction for things to be >going in and a way to collaborate even without our directly linking with >DPDK. Would the shared library support in DPDK be useful here? I know it still links in a dynamic way. I believe DPDK is much like your snabbswitch as it provides a basic system to run networking applications, in your case a vSwitch like design. The design has some parts that are standalone, but to be effective they require other parts of DPDK to work correctly. If you have some suggestion as to how DPDK could be split up and maintain its features and performance I would like to understand how. Regards, ++Keith > >[1] https://github.com/lukego/snabbswitch/blob/README/README.md ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-16 10:38 O'Driscoll, Tim 2015-04-22 15:11 ` O'Driscoll, Tim @ 2015-04-24 7:47 ` Luke Gorrie 2015-04-24 15:29 ` O'Driscoll, Tim ` (2 more replies) 1 sibling, 3 replies; 58+ messages in thread From: Luke Gorrie @ 2015-04-24 7:47 UTC (permalink / raw) To: O'Driscoll, Tim; +Cc: dev Hi Tim, On 16 April 2015 at 12:38, O'Driscoll, Tim <tim.o'driscoll@intel.com> wrote: > Following the launch of DPDK by Intel as an internal development project, > the launch of dpdk.org by 6WIND in 2013, and the first DPDK RPM packages > for Fedora in 2014, 6WIND, Red Hat and Intel would like to prepare for > future releases after DPDK 2.0 by starting a discussion on its evolution. > Anyone is welcome to join this initiative. > Thank you for the open invitation. I have a couple of questions about the long term of DPDK: 1. How will DPDK manage overlap with other project over time? In some ways DPDK is growing more overlap with other projects e.g. forking/rewriting functionality from Linux (e.g. ixgbe), FreeBSD (e.g. Broadcom PMD), GLIBC (e.g. memcpy). In other ways DPDK is delegating functionality to external systems instead e.g. the bifurcated driver (delegate to kernel) and Mellanox PMD (delegate to vendor shared library). How is this going to play out over the long term? And is there an existential risk that it will end up being easier to port the good bits of DPDK into the kernel than the rest of the good bits of the kernel into DPDK? 2. How will DPDK users justify contributing to DPDK upstream? Engineers in network equipment vendors want to contribute to open source, but what is the incentive for the companies to support this? This would be easy if DPDK were GPL'd (they are compelled) or if everybody were dynamically linking with the upstream libdpdk (can't have private patches). However, in a world where DPDK is BSD-licensed and statically linked, is it not both cheaper and competitively advantageous to keep fixes and optimizations in house? Today the community is benefiting immensely from the contributions of companies like 6WIND and Brocade, but I wonder if this going to be the exception or the rule. That's all from me. Thanks for listening :-). Cheers, -Luke ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 7:47 ` Luke Gorrie @ 2015-04-24 15:29 ` O'Driscoll, Tim 2015-04-24 17:00 ` Neil Horman 2015-04-24 17:39 ` Jay Rolette 2015-04-28 17:48 ` Stephen Hemminger 2 siblings, 1 reply; 58+ messages in thread From: O'Driscoll, Tim @ 2015-04-24 15:29 UTC (permalink / raw) To: Luke Gorrie; +Cc: dev > From: lukego@gmail.com [mailto:lukego@gmail.com] On Behalf Of Luke Gorrie > > > On 16 April 2015 at 12:38, O'Driscoll, Tim <tim.o'driscoll@intel.com> wrote: > > Following the launch of DPDK by Intel as an internal development project, the launch of dpdk.org by > > 6WIND in 2013, and the first DPDK RPM packages for Fedora in 2014, 6WIND, Red Hat and Intel would > > like to prepare for future releases after DPDK 2.0 by starting a discussion on its evolution. Anyone > > is welcome to join this initiative. > > Thank you for the open invitation. > > I have a couple of questions about the long term of DPDK: > > 1. How will DPDK manage overlap with other project over time? > > In some ways DPDK is growing more overlap with other projects e.g. forking/rewriting functionality from > Linux (e.g. ixgbe), FreeBSD (e.g. Broadcom PMD), GLIBC (e.g. memcpy). > > In other ways DPDK is delegating functionality to external systems instead e.g. the bifurcated driver > (delegate to kernel) and Mellanox PMD (delegate to vendor shared library). > > How is this going to play out over the long term? And is there an existential risk that it will end up > being easier to port the good bits of DPDK into the kernel than the rest of the good bits of the kernel > into DPDK? Good question. I don't have a good answer to this, but it is something we will need to consider. Perhaps others have opinions? > 2. How will DPDK users justify contributing to DPDK upstream? > > Engineers in network equipment vendors want to contribute to open source, but what is the incentive for > the companies to support this? This would be easy if DPDK were GPL'd (they are compelled) or if everybody > were dynamically linking with the upstream libdpdk (can't have private patches). However, in a world where > DPDK is BSD-licensed and statically linked, is it not both cheaper and competitively advantageous to keep > fixes and optimizations in house? > > Today the community is benefiting immensely from the contributions of companies like 6WIND and Brocade, > but I wonder if this going to be the exception or the rule. That's another good question. Expanding the community and soliciting more contributions is one of the reasons for initiating this discussion. At first glance, it can seem cheaper and competitively advantageous for people to keep DPDK enhancements/optimisations in house. However, that's not necessarily the case. There is an advantage in upstreaming these changes because firstly others in the community may contribute further enhancements, and also because it makes upgrading to new DPDK versions easier because those enhancements will be a core part of DPDK rather than having to be ported separately to new DPDK versions. > That's all from me. Thanks for listening :-). Thanks for contributing your views. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 15:29 ` O'Driscoll, Tim @ 2015-04-24 17:00 ` Neil Horman 2015-04-26 9:07 ` Luke Gorrie 0 siblings, 1 reply; 58+ messages in thread From: Neil Horman @ 2015-04-24 17:00 UTC (permalink / raw) To: O'Driscoll, Tim; +Cc: dev On Fri, Apr 24, 2015 at 03:29:01PM +0000, O'Driscoll, Tim wrote: > > > From: lukego@gmail.com [mailto:lukego@gmail.com] On Behalf Of Luke Gorrie > > > > > On 16 April 2015 at 12:38, O'Driscoll, Tim <tim.o'driscoll@intel.com> wrote: > > > Following the launch of DPDK by Intel as an internal development project, the launch of dpdk.org by > > > 6WIND in 2013, and the first DPDK RPM packages for Fedora in 2014, 6WIND, Red Hat and Intel would > > > like to prepare for future releases after DPDK 2.0 by starting a discussion on its evolution. Anyone > > > is welcome to join this initiative. > > > > Thank you for the open invitation. > > > > I have a couple of questions about the long term of DPDK: > > > > 1. How will DPDK manage overlap with other project over time? > > > > In some ways DPDK is growing more overlap with other projects e.g. forking/rewriting functionality from > > Linux (e.g. ixgbe), FreeBSD (e.g. Broadcom PMD), GLIBC (e.g. memcpy). > > > > In other ways DPDK is delegating functionality to external systems instead e.g. the bifurcated driver > > (delegate to kernel) and Mellanox PMD (delegate to vendor shared library). > > > > How is this going to play out over the long term? And is there an existential risk that it will end up > > being easier to port the good bits of DPDK into the kernel than the rest of the good bits of the kernel > > into DPDK? > > Good question. I don't have a good answer to this, but it is something we will need to consider. Perhaps others have opinions? > This is a good question, and I know efforts are underway to that end. I can tell you for certain that: 1) Many DPDK enhancement (tx batching for instance) are being investigated for kernel integration 2) The DPDK will never be backported in its entirety to the kernel (too many x86 specific bits/optimizations), and api requirements. As such, I think you'll find that the kernel will approach, but never quite reach the performance goals of the DPDK. As such I think the DPDK will always be something of a niche market for user to whoom every last ounce of performance is the primary requirement (even above and beyond compatibility with standard OS interfaces), but it will continue to exist independently as a project, as that user demographic is out there. > > 2. How will DPDK users justify contributing to DPDK upstream? > > > > Engineers in network equipment vendors want to contribute to open source, but what is the incentive for > > the companies to support this? This would be easy if DPDK were GPL'd (they are compelled) or if everybody > > were dynamically linking with the upstream libdpdk (can't have private patches). However, in a world where > > DPDK is BSD-licensed and statically linked, is it not both cheaper and competitively advantageous to keep > > fixes and optimizations in house? > > > > Today the community is benefiting immensely from the contributions of companies like 6WIND and Brocade, > > but I wonder if this going to be the exception or the rule. > > That's another good question. Expanding the community and soliciting more contributions is one of the reasons for initiating this discussion. > Well, BSD licensing is a guarantee that users won't contribute back to the project (look at openssh for an example). That said, the space that DPDK operates in does tend to make a it a building block for larger applications that are not of general use, by implementors that are not tradionally inclined to contrubute back to the community. I think what we need here is a 'killer-app' that makes the DPDK relevant to developers who are biased toward an open source mindset. Rather than a telco app that sits on one vendors hardware, never to be used by other telcos, we should support and encourage the participation of open projects who might benefit from using DPDK to accelerate network functionality. OVS is a great example here. If we can make it easy for them to use DPDK to get better performance, I think we'll see a larger uptake in adoption. Neil > At first glance, it can seem cheaper and competitively advantageous for people to keep DPDK enhancements/optimisations in house. However, that's not necessarily the case. There is an advantage in upstreaming these changes because firstly others in the community may contribute further enhancements, and also because it makes upgrading to new DPDK versions easier because those enhancements will be a core part of DPDK rather than having to be ported separately to new DPDK versions. > > > That's all from me. Thanks for listening :-). > > Thanks for contributing your views. > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 17:00 ` Neil Horman @ 2015-04-26 9:07 ` Luke Gorrie 0 siblings, 0 replies; 58+ messages in thread From: Luke Gorrie @ 2015-04-26 9:07 UTC (permalink / raw) To: Neil Horman; +Cc: dev Hi Neil, Thanks for taking the time to reflect on my ideas. On 24 April 2015 at 19:00, Neil Horman <nhorman@tuxdriver.com> wrote: > DPDK will always be > something of a niche market for user to whoom every last ounce of > performance is > the primary requirement This does seem like an excellent position. It is succinct, it sets expectations for users, and it tells developers how to resolve trade-offs (performance takes priority over FOO, for all values of FOO). I agree that this niche will always be there and so it seems like there is a permanent place in the world for DPDK. This focus on performance also makes DPDK useful as a reference for other projects. People making trade-offs between performance and other factors (portability, compatibility, simplicity, etc) can use DPDK as a yardstick to estimate what this costs. This benefits everybody doing networking on x86. I suppose that a separate discussion would be how to increase participation from people who are using DPDK as a reference but not as a software dependency. That is perhaps a less pressing topic for the future. OVS is a great example here. If we can make it easy for them to use DPDK > to get > better performance, I think we'll see a larger uptake in adoption. > I will be interested to see how this plays out. I agree it is a great opportunity for DPDK and a chance to take it mainstream. I also think it is fundamentally a missed opportunity of the kernel. OVS would be just fine with a kernel data plane that performs adequately. OVS users don't seem to be in the "maximum performance at any cost" niche defined above. Many of them benefit a lot from the kernel integration. However, if the kernel can't promise the meet their performance requirements then DPDK does seem like a knight in shining armour. It's an exciting time in open source networking :-) Cheers, -Luke ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 7:47 ` Luke Gorrie 2015-04-24 15:29 ` O'Driscoll, Tim @ 2015-04-24 17:39 ` Jay Rolette 2015-04-24 17:51 ` Matthew Hall 2015-04-24 18:12 ` Matt Laswell 2015-04-28 17:48 ` Stephen Hemminger 2 siblings, 2 replies; 58+ messages in thread From: Jay Rolette @ 2015-04-24 17:39 UTC (permalink / raw) To: Luke Gorrie; +Cc: dev On Fri, Apr 24, 2015 at 2:47 AM, Luke Gorrie <luke@snabb.co> wrote: > 2. How will DPDK users justify contributing to DPDK upstream? > > Engineers in network equipment vendors want to contribute to open source, > but what is the incentive for the companies to support this? This would be > easy if DPDK were GPL'd (they are compelled) or if everybody were > dynamically linking with the upstream libdpdk (can't have private patches). > However, in a world where DPDK is BSD-licensed and statically linked, is it > not both cheaper and competitively advantageous to keep fixes and > optimizations in house? > The main incentive for most companies to support it is that it reduces their maintenance load. It makes it easier to not get "stuck" on a particular version of DPDK and they don't have to waste time constantly back-porting improvements and bug fixes. I can tell you that if DPDK were GPL-based, my company wouldn't be using it. I suspect we wouldn't be the only ones... Jay ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 17:39 ` Jay Rolette @ 2015-04-24 17:51 ` Matthew Hall 2015-04-25 13:30 ` Marc Sune 2015-04-24 18:12 ` Matt Laswell 1 sibling, 1 reply; 58+ messages in thread From: Matthew Hall @ 2015-04-24 17:51 UTC (permalink / raw) To: Jay Rolette; +Cc: dev On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: > I can tell you that if DPDK were GPL-based, my company wouldn't be using > it. I suspect we wouldn't be the only ones... > > Jay I could second this, from the past employer where I used it. Right now I am using it in an open source app, I have a bit of GPL here and there but I'm trying to get rid of it or confine it to separate address spaces, where it won't impact the core code written around DPDK, as I don't want to cause headaches for any downstream users I attract someday. Hard-core GPL would not be possible for most. LGPL could be possible, but I don't think it could be worth the relicensing headache for that small change. Instead we should make the patch process as easy as humanly possible so people are encouraged to send us the fixes and not cart them around their companies constantly. Perhaps it means having some ReviewBoard type of tools, a clone in Github or Bitbucket where the less hardcore kernel-workflow types could send back their small bug fixes a bit more easily, this kind of stuff. Google has been getting good uptake since they moved most of their open source across to Github, because the contribution workflow was more convenient than Google Code was. Matthew. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 17:51 ` Matthew Hall @ 2015-04-25 13:30 ` Marc Sune 2015-04-25 16:08 ` Wiles, Keith 0 siblings, 1 reply; 58+ messages in thread From: Marc Sune @ 2015-04-25 13:30 UTC (permalink / raw) To: dev On 24/04/15 19:51, Matthew Hall wrote: > On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >> I can tell you that if DPDK were GPL-based, my company wouldn't be using >> it. I suspect we wouldn't be the only ones... >> >> Jay > I could second this, from the past employer where I used it. Right now I am > using it in an open source app, I have a bit of GPL here and there but I'm > trying to get rid of it or confine it to separate address spaces, where it > won't impact the core code written around DPDK, as I don't want to cause > headaches for any downstream users I attract someday. > > Hard-core GPL would not be possible for most. LGPL could be possible, but I > don't think it could be worth the relicensing headache for that small change. > > Instead we should make the patch process as easy as humanly possible so people > are encouraged to send us the fixes and not cart them around their companies > constantly. I agree. My feeling is that as the number of patches in the mailing list grows, keeping track of them gets more and more complicated. Patchwork website was a way to try to address this issue. I think it was an improvement, but to be honest, patchwork lacks a lot of functionality, such as properly tracking multiple versions of the patch (superseding them automatically), and it lacks some filtering capabilities e.g. per user, per tag/label or library, automatically track if it has been merged, give an overall status of the pending vs merged patches, set milestones... Is there any alternative tool or improved version for that? On the other side, since user questions, community discussions and development happens in the same mailing list, things get really complicated, specially for users seeking for help. Even though I think the average skills of the users of DPDK is generally higher than in other software projects, if DPDK wants to attract more users, having a better user support is key, IMHO. So I would see with good eyes a separation between, at least, dpdk-user and dpdk-dev. If the number of patches keeps growing, splitting the "dev" mailing lists into different categories (eal and common, pmds, higher level abstractions...) could be an option. However, this last point opens a lot of questions on how to minimize interference between the different parts and API/ABI compatibility during the development. > > Perhaps it means having some ReviewBoard type of tools, a clone in Github or > Bitbucket where the less hardcore kernel-workflow types could send back their > small bug fixes a bit more easily, this kind of stuff. Google has been getting > good uptake since they moved most of their open source across to Github, > because the contribution workflow was more convenient than Google Code was. Although I agree, we have to be careful on how github or bitbucket is used. Having issues or even (e.g. github) pull requests *in addition* to the normal contribution workflow can be a nightmare to deal with, in terms of synchronization and preventing double work. So I guess setting up an official github or bitbucket mirror would be fine, via some simple cronjob, but I guess it would end-up not using PRs or issues in github like the Linux kernel does. Btw, is this github organization already registered by Intel or some other company of the community? https://github.com/dpdk Marc > > Matthew. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-25 13:30 ` Marc Sune @ 2015-04-25 16:08 ` Wiles, Keith 2015-04-26 21:56 ` Neil Horman 0 siblings, 1 reply; 58+ messages in thread From: Wiles, Keith @ 2015-04-25 16:08 UTC (permalink / raw) To: Marc Sune, dev On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: > > >On 24/04/15 19:51, Matthew Hall wrote: >> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >>> I can tell you that if DPDK were GPL-based, my company wouldn't be >>>using >>> it. I suspect we wouldn't be the only ones... >>> >>> Jay >> I could second this, from the past employer where I used it. Right now >>I am >> using it in an open source app, I have a bit of GPL here and there but >>I'm >> trying to get rid of it or confine it to separate address spaces, where >>it >> won't impact the core code written around DPDK, as I don't want to cause >> headaches for any downstream users I attract someday. >> >> Hard-core GPL would not be possible for most. LGPL could be possible, >>but I >> don't think it could be worth the relicensing headache for that small >>change. >> >> Instead we should make the patch process as easy as humanly possible so >>people >> are encouraged to send us the fixes and not cart them around their >>companies >> constantly. +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go back. > >I agree. My feeling is that as the number of patches in the mailing list >grows, keeping track of them gets more and more complicated. Patchwork >website was a way to try to address this issue. I think it was an >improvement, but to be honest, patchwork lacks a lot of functionality, >such as properly tracking multiple versions of the patch (superseding >them automatically), and it lacks some filtering capabilities e.g. per >user, per tag/label or library, automatically track if it has been >merged, give an overall status of the pending vs merged patches, set >milestones... Is there any alternative tool or improved version for that? I agree patchwork has some limitation, but I think the biggest issue is keeping up with the patches. Getting patches introduced into the main line is very slow. A patch submitted today may not get applied for weeks or months, then when another person submits a patch he is starting to run a very high risk of having to redo that patch, because a pervious patch makes his fail weeks/months later. I would love to see a better tool then patchwork, but the biggest issue is we have a huge backlog of patches. Personally I am not sure how Thomas or any is able to keep up with the patches. The other problem I see is how patches are agreed on to be included in the mainline. Today it is just an ACK or a NAK on the mailing list. Then I see what I think to be only a few people ACKing or NAKing patches. This process has a lot of problems from a patch being ignore for some reason or someone having negative feed back on very minor detail or no way to push a patch forward a single NAK or comment. I would like to see some type of layering process to allow patches to be applied in a timely manner a few weeks not months or completely ignored. Maybe some type of voting is reasonable, but we need to do something to turn around the patches in clean reasonable manner. Think we need some type of group meeting every week to look at the patches and determining which ones get applied, this gives quick feedback to the submitter as to the status of the patch. > >On the other side, since user questions, community discussions and >development happens in the same mailing list, things get really >complicated, specially for users seeking for help. Even though I think >the average skills of the users of DPDK is generally higher than in >other software projects, if DPDK wants to attract more users, having a >better user support is key, IMHO. > >So I would see with good eyes a separation between, at least, dpdk-user >and dpdk-dev. I do not remember seeing too many users on the list and making a list just for then is OK if everyone is fine with a list that has very few emails. > >If the number of patches keeps growing, splitting the "dev" mailing >lists into different categories (eal and common, pmds, higher level >abstractions...) could be an option. However, this last point opens a >lot of questions on how to minimize interference between the different >parts and API/ABI compatibility during the development. I believe if we just make sure we use tags in the subject line then we can have our email clients do the splitting of the emails instead of adding more emails lists. > >> >> Perhaps it means having some ReviewBoard type of tools, a clone in >>Github or >> Bitbucket where the less hardcore kernel-workflow types could send back >>their >> small bug fixes a bit more easily, this kind of stuff. Google has been >>getting >> good uptake since they moved most of their open source across to Github, >> because the contribution workflow was more convenient than Google Code >>was. I like GitHub it is a much better designed tool then patchwork, plus it could get more eyes as it is very well know to the developer community in general. I feel GitHub has many advantages over the current systems in place but, it does not solve the all patch issues. The only way we can get patch issues resolved is to put a bit more process in place. > >Although I agree, we have to be careful on how github or bitbucket is >used. Having issues or even (e.g. github) pull requests *in addition* to >the normal contribution workflow can be a nightmare to deal with, in >terms of synchronization and preventing double work. So I guess setting >up an official github or bitbucket mirror would be fine, via some simple >cronjob, but I guess it would end-up not using PRs or issues in github >like the Linux kernel does. >From what I can tell GitHub seems to be a better solution for a free open environment. Bitbucket I have never used and GitHub seems more popular from one article I read. https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8# q=bitbucket%20vs%20github >Btw, is this github organization already registered by Intel or some >other company of the community? > >https://github.com/dpdk > >Marc If we can used the above that would be great, but a name like Œdpdk-community¹ or something could work too. We can host the web site here and have many sub-projects like Pktgen-DPDK :-) under the same page. Not to say anything bad about our current web pages as I find it difficult to use sometimes and find things like patchwork link. Maintaining a web site is a full time job and GitHub does maintain the site, plus we can collaborate on host web page on the GitHub site easier. Moving to the Linux Foundation is an option as well as it is very well know and has some nice ways to get your project promoted. It does have a few drawbacks in process handling and cost to state a few. The process model is all ready defined, which is good and bad it just depends on your needs IMO. Regards, ++Keith > >> >> Matthew. > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-25 16:08 ` Wiles, Keith @ 2015-04-26 21:56 ` Neil Horman 2015-04-27 2:29 ` Jim Thompson ` (2 more replies) 0 siblings, 3 replies; 58+ messages in thread From: Neil Horman @ 2015-04-26 21:56 UTC (permalink / raw) To: Wiles, Keith; +Cc: dev On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: > > > On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: > > > > > > >On 24/04/15 19:51, Matthew Hall wrote: > >> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: > >>> I can tell you that if DPDK were GPL-based, my company wouldn't be > >>>using > >>> it. I suspect we wouldn't be the only ones... > >>> > >>> Jay > >> I could second this, from the past employer where I used it. Right now > >>I am > >> using it in an open source app, I have a bit of GPL here and there but > >>I'm > >> trying to get rid of it or confine it to separate address spaces, where > >>it > >> won't impact the core code written around DPDK, as I don't want to cause > >> headaches for any downstream users I attract someday. > >> > >> Hard-core GPL would not be possible for most. LGPL could be possible, > >>but I > >> don't think it could be worth the relicensing headache for that small > >>change. > >> > >> Instead we should make the patch process as easy as humanly possible so > >>people > >> are encouraged to send us the fixes and not cart them around their > >>companies > >> constantly. > > +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go back. Actually, IANAL, but I think we can. The BSD license allows us to fork and relicense the code I think, under GPL or any other license. I'm not advocating for that mind you, just suggesting that its possible should it ever become needed. > > > >I agree. My feeling is that as the number of patches in the mailing list > >grows, keeping track of them gets more and more complicated. Patchwork > >website was a way to try to address this issue. I think it was an > >improvement, but to be honest, patchwork lacks a lot of functionality, > >such as properly tracking multiple versions of the patch (superseding > >them automatically), and it lacks some filtering capabilities e.g. per > >user, per tag/label or library, automatically track if it has been > >merged, give an overall status of the pending vs merged patches, set > >milestones... Is there any alternative tool or improved version for that? > Agreed, this has come up before, off list unfortunately. The volume of patches seems to be increasing at such a rate that a single maintainer has difficulty keeping up. I proposed that the workload be split out to multiple subtrees, with prefixes being added to patch subjects on the list for local filtering to stem the tide. Specifically I had proposed that the PMD's be split into a separate subtree, but that received pushback in favor of having each library having its own separate subtree, with a pilot program being made out of the I40e driver (which you might note sends pull requests to the list now). I'd still like to see all PMD's come under a single subtree, but thats likely an argument for later. That said, Do you think that this patch latency is really a contributor to low project participation? It definately a problem, but it seems to me that this sort of issue would lead to people trying to parcitipate, then giving up (i.e. we would see 1-2 emails from an individual, then not see them again). I'd need to look through the mailing list for such a pattern, but anecdotally I've not seen that happen. The problem you describe above is definately a problem, but its one for those individuals who are participating, not for those who are simply choosing not to. And I think we need to address both. > I agree patchwork has some limitation, but I think the biggest issue is > keeping up with the patches. Getting patches introduced into the main line > is very slow. A patch submitted today may not get applied for weeks or > months, then when another person submits a patch he is starting to run a > very high risk of having to redo that patch, because a pervious patch > makes his fail weeks/months later. I would love to see a better tool then > patchwork, but the biggest issue is we have a huge backlog of patches. > Personally I am not sure how Thomas or any is able to keep up with the > patches. > This is absolutely a problem. I'd like to think, more than a tool like patchwork, a subtree organization to allow some modicum of parallel review and integration would really be a benefit here. > The other problem I see is how patches are agreed on to be included in the > mainline. Today it is just an ACK or a NAK on the mailing list. Then I see > what I think to be only a few people ACKing or NAKing patches. This > process has a lot of problems from a patch being ignore for some reason or > someone having negative feed back on very minor detail or no way to push a > patch forward a single NAK or comment. > So, this is an interesting issue in ideal meritocracies. Currently is/should be looking for ACKs/NAK/s from the individuals listed in the MAINTAINER files, and those people should be the definitive subject matter experts on the code they cover. As such, I would agrue that they should be entitled to a modicum of stylistic/trivial leeway. That is to say, if they choose to block a patch around a very minor detail, then between them changing their position, and the patch author changing the code, the latter is likely the easier course of action, especially if the author can't make an argument for their position. That said, if such patch blockage becomes so egregious that individuals stop contributing, that needs to be known as well. If you as a patch author: 1) Have tried to submit patches 2) Had them blocked for what you consider trivial reasons 3) Plan to not contribute further because of this 4) Still rely on the DPDK for your product Please, say something. People in charge need to know when they're pushing contributors away. FWIW, I've tried to do some correlation between the git history and the mailing list. I need to do more searches, but I have a feeling that early on, the majority of people who stopped contributing, did so because their patches weren't expressely blocked, but rather because they were simply ignored. No one working on DPDK bothered to review those patches, and so they never got merged. Hopefully that problem has been addressed somewhat now. > I would like to see some type of layering process to allow patches to be > applied in a timely manner a few weeks not months or completely ignored. > Maybe some type of voting is reasonable, but we need to do something to > turn around the patches in clean reasonable manner. > > Think we need some type of group meeting every week to look at the patches > and determining which ones get applied, this gives quick feedback to the > submitter as to the status of the patch. > I think a group meeting is going to be way too much overhead to manage properly. You'll get different people every week with agenda that may not line up with code quality, which is really what the review is meant to provide. I think perhaps a better approach would be to require that that code owners from the maintainer file provide and ACK/NAK on their patches within 3-4 days, and require a corresponding tree maintainer to apply the patch within 7 or so. That would cap our patch latency. Likewise, if a patch slips in creating a regression, the author needs to be alerted and given a time window in which to fix the problem before the offending patch is reverted during the QE cycle. > > > >On the other side, since user questions, community discussions and > >development happens in the same mailing list, things get really > >complicated, specially for users seeking for help. Even though I think > >the average skills of the users of DPDK is generally higher than in > >other software projects, if DPDK wants to attract more users, having a > >better user support is key, IMHO. > > > >So I would see with good eyes a separation between, at least, dpdk-user > >and dpdk-dev. > I wouldn't argue with this separation, seems like a reasonable approach. > I do not remember seeing too many users on the list and making a list just > for then is OK if everyone is fine with a list that has very few emails. > > > >If the number of patches keeps growing, splitting the "dev" mailing > >lists into different categories (eal and common, pmds, higher level > >abstractions...) could be an option. However, this last point opens a > >lot of questions on how to minimize interference between the different > >parts and API/ABI compatibility during the development. > > I believe if we just make sure we use tags in the subject line then we can > have our email clients do the splitting of the emails instead of adding > more emails lists. > Agreed > > > >> > >> Perhaps it means having some ReviewBoard type of tools, a clone in > >>Github or > >> Bitbucket where the less hardcore kernel-workflow types could send back > >>their > >> small bug fixes a bit more easily, this kind of stuff. Google has been > >>getting > >> good uptake since they moved most of their open source across to Github, > >> because the contribution workflow was more convenient than Google Code > >>was. > > I like GitHub it is a much better designed tool then patchwork, plus it > could get more eyes as it is very well know to the developer community in > general. I feel GitHub has many advantages over the current systems in > place but, it does not solve the all patch issues. > Github is actually a bit irritating for this sort of thing, as it presumes a web based interface for discussion. They have some modicum of email forwarding enabled, but it has never quite worked right, or integrated properly. > The only way we can get patch issues resolved is to put a bit more process > in place. > > > >Although I agree, we have to be careful on how github or bitbucket is > >used. Having issues or even (e.g. github) pull requests *in addition* to > >the normal contribution workflow can be a nightmare to deal with, in > >terms of synchronization and preventing double work. So I guess setting > >up an official github or bitbucket mirror would be fine, via some simple > >cronjob, but I guess it would end-up not using PRs or issues in github > >like the Linux kernel does. > 100% agree, we can't be split about this. Allowing contributions from n channels just means most developers will only see/reviews 1/nth of the patches of interest to them. > From what I can tell GitHub seems to be a better solution for a free open > environment. Bitbucket I have never used and GitHub seems more popular > from one article I read. > > https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8# > q=bitbucket%20vs%20github > > > >Btw, is this github organization already registered by Intel or some > >other company of the community? > > > >https://github.com/dpdk > > > >Marc > > If we can used the above that would be great, but a name like > Œdpdk-community¹ or something could work too. > > We can host the web site here and have many sub-projects like Pktgen-DPDK > :-) under the same page. Not to say anything bad about our current web > pages as I find it difficult to use sometimes and find things like > patchwork link. Maintaining a web site is a full time job and GitHub does > maintain the site, plus we can collaborate on host web page on the GitHub > site easier. > > Moving to the Linux Foundation is an option as well as it is very well > know and has some nice ways to get your project promoted. It does have a > few drawbacks in process handling and cost to state a few. The process > model is all ready defined, which is good and bad it just depends on your > needs IMO. > > Regards, > ++Keith > > > > >> > >> Matthew. > > > > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-26 21:56 ` Neil Horman @ 2015-04-27 2:29 ` Jim Thompson 2015-04-27 13:07 ` Neil Horman ` (2 more replies) [not found] ` <D162FA4E.1DED8%keith.wiles@intel.com> 2015-04-27 12:38 ` Dave Neary 2 siblings, 3 replies; 58+ messages in thread From: Jim Thompson @ 2015-04-27 2:29 UTC (permalink / raw) To: Neil Horman; +Cc: dev > On Apr 26, 2015, at 4:56 PM, Neil Horman <nhorman@tuxdriver.com> wrote: > > On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: >> >> >> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: >> >>> >>> >>> On 24/04/15 19:51, Matthew Hall wrote: >>>> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >>>>> I can tell you that if DPDK were GPL-based, my company wouldn't be >>>>> using >>>>> it. I suspect we wouldn't be the only ones... >>>>> >>>>> Jay >>>> I could second this, from the past employer where I used it. Right now >>>> I am >>>> using it in an open source app, I have a bit of GPL here and there but >>>> I'm >>>> trying to get rid of it or confine it to separate address spaces, where >>>> it >>>> won't impact the core code written around DPDK, as I don't want to cause >>>> headaches for any downstream users I attract someday. >>>> >>>> Hard-core GPL would not be possible for most. LGPL could be possible, >>>> but I >>>> don't think it could be worth the relicensing headache for that small >>>> change. >>>> >>>> Instead we should make the patch process as easy as humanly possible so >>>> people >>>> are encouraged to send us the fixes and not cart them around their >>>> companies >>>> constantly. >> >> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go back. > Actually, IANAL, but I think we can. The BSD license allows us to fork and > relicense the code I think, under GPL or any other license. I'm not advocating > for that mind you, just suggesting that its possible should it ever become > needed. I, on the other hand, am fairly certain that you can not “relicense BSD licensed code under the GPL (or any other license). Were this true at law, then the opposite would also be possible. (“Don’t like the license? Just fork!”) ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 2:29 ` Jim Thompson @ 2015-04-27 13:07 ` Neil Horman 2015-04-27 16:07 ` Stephen Hemminger 2015-04-28 7:20 ` Dor Laor 2 siblings, 0 replies; 58+ messages in thread From: Neil Horman @ 2015-04-27 13:07 UTC (permalink / raw) To: Jim Thompson; +Cc: dev On Sun, Apr 26, 2015 at 09:29:13PM -0500, Jim Thompson wrote: > > > On Apr 26, 2015, at 4:56 PM, Neil Horman <nhorman@tuxdriver.com> wrote: > > > > On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: > >> > >> > >> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: > >> > >>> > >>> > >>> On 24/04/15 19:51, Matthew Hall wrote: > >>>> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: > >>>>> I can tell you that if DPDK were GPL-based, my company wouldn't be > >>>>> using > >>>>> it. I suspect we wouldn't be the only ones... > >>>>> > >>>>> Jay > >>>> I could second this, from the past employer where I used it. Right now > >>>> I am > >>>> using it in an open source app, I have a bit of GPL here and there but > >>>> I'm > >>>> trying to get rid of it or confine it to separate address spaces, where > >>>> it > >>>> won't impact the core code written around DPDK, as I don't want to cause > >>>> headaches for any downstream users I attract someday. > >>>> > >>>> Hard-core GPL would not be possible for most. LGPL could be possible, > >>>> but I > >>>> don't think it could be worth the relicensing headache for that small > >>>> change. > >>>> > >>>> Instead we should make the patch process as easy as humanly possible so > >>>> people > >>>> are encouraged to send us the fixes and not cart them around their > >>>> companies > >>>> constantly. > >> > >> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go back. > > Actually, IANAL, but I think we can. The BSD license allows us to fork and > > relicense the code I think, under GPL or any other license. I'm not advocating > > for that mind you, just suggesting that its possible should it ever become > > needed. > > I, on the other hand, am fairly certain that you can not “relicense BSD licensed code under the GPL (or any other license). > > Were this true at law, then the opposite would also be possible. (“Don’t like the license? Just fork!”) > Isn't that in effect, exactly what most of the end users of the DPDK do however? The 3 clause BSD license states that: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. If you build a product based on the DPDK, and statically link it, I presume there are at least some vendors that are redistributing DPDK binary code using a non-BSD license? It may be a de-facto rather than a de-jure relicensing, but the end result is the same. The only thing that the BSD license says is that you have to reproduce this copyright notice if you distribute BSD code. Theres nothing that says you can't add further copyright to derivations on that code that you make. IANAL, but it seems like this is done quite often. Regardless, the canonical way to relicense code of course is have all the copyright holder agree to relicense it under some other license. Currently as it stands a quick git scan indicates that 118 individuals are responsible for the most recent change to every line of code in the dpdk (using git blame on every file). Of those 118 fully half belong to intel, or 6wind. It wouldn't be hard to hold a meeting and generate an agreement to relicense. Of course, that won't happen. BSD licensing is the desired solution here. Neil ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 2:29 ` Jim Thompson 2015-04-27 13:07 ` Neil Horman @ 2015-04-27 16:07 ` Stephen Hemminger 2015-04-28 7:20 ` Dor Laor 2 siblings, 0 replies; 58+ messages in thread From: Stephen Hemminger @ 2015-04-27 16:07 UTC (permalink / raw) To: Jim Thompson; +Cc: dev On Sun, 26 Apr 2015 21:29:13 -0500 Jim Thompson <jim@netgate.com> wrote: > I, on the other hand, am fairly certain that you can not “relicense BSD licensed code under the GPL (or any other license). > > Were this true at law, then the opposite would also be possible. (“Don’t like the license? Just fork!”) IANAL but it is possible to go from BSD to GPL and it is done all the time. The other way is not possible. You only have to see the OpenOffice -> LibreOffice as an example. LibreOffice can freely take anything out of OpenOffice but OpenOffice can not take from LibrOffice. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 2:29 ` Jim Thompson 2015-04-27 13:07 ` Neil Horman 2015-04-27 16:07 ` Stephen Hemminger @ 2015-04-28 7:20 ` Dor Laor 2 siblings, 0 replies; 58+ messages in thread From: Dor Laor @ 2015-04-28 7:20 UTC (permalink / raw) To: Jim Thompson; +Cc: dev On Mon, Apr 27, 2015 at 5:29 AM, Jim Thompson <jim@netgate.com> wrote: > > > On Apr 26, 2015, at 4:56 PM, Neil Horman <nhorman@tuxdriver.com> wrote: > > > > On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: > >> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go > back. > > Actually, IANAL, but I think we can. The BSD license allows us to fork > and > > relicense the code I think, under GPL or any other license. I'm not > advocating > > for that mind you, just suggesting that its possible should it ever > become > > needed. > > I, on the other hand, am fairly certain that you can not “relicense BSD > licensed code under the GPL (or any other license). > > Were this true at law, then the opposite would also be possible. (“Don’t > like the license? Just fork!”) > > +1 While BSD carries many benefits for DPDK (similar to any other library), GPL doesn't carry any benefit in this case. It's not wise not to contribute back to DPDK regardless of any license of choice. Those who do not wish to contribute will always manage to do.. Going back to the list of open source projects on top of DPDK I like to mention the SeaStar project: http://www.seastar-project.org For those who aren't familiar, SeaStar is a high speed messaging framework with a unique shared-nothing approach with a per-core granularity. For our knowledge it offers the first open source TCP/IP implementation on top of DPDK along with many other advantages. DPDK is one of the main building blocks that allow us to reach millions of iops and we're pretty pleased with the project - both the source code as well as the community! Dor ^ permalink raw reply [flat|nested] 58+ messages in thread
[parent not found: <D162FA4E.1DED8%keith.wiles@intel.com>]
* Re: [dpdk-dev] Beyond DPDK 2.0 [not found] ` <D162FA4E.1DED8%keith.wiles@intel.com> @ 2015-04-27 9:52 ` Marc Sune 2015-04-27 13:39 ` Wiles, Keith 2015-04-27 10:29 ` Neil Horman 1 sibling, 1 reply; 58+ messages in thread From: Marc Sune @ 2015-04-27 9:52 UTC (permalink / raw) To: Wiles, Keith, Neil Horman; +Cc: dev On 27/04/15 03:41, Wiles, Keith wrote: > > On 4/26/15, 4:56 PM, "Neil Horman" <nhorman@tuxdriver.com> wrote: > >> On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: >>> >>> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: >>> >>>> >>>> On 24/04/15 19:51, Matthew Hall wrote: >>>>> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >>>>>> I can tell you that if DPDK were GPL-based, my company wouldn't be >>>>>> using >>>>>> it. I suspect we wouldn't be the only ones... >>>>>> >>>>>> Jay >>>>> I could second this, from the past employer where I used it. Right >>> now >>>>> I am >>>>> using it in an open source app, I have a bit of GPL here and there >>> but >>>>> I'm >>>>> trying to get rid of it or confine it to separate address spaces, >>> where >>>>> it >>>>> won't impact the core code written around DPDK, as I don't want to >>> cause >>>>> headaches for any downstream users I attract someday. >>>>> >>>>> Hard-core GPL would not be possible for most. LGPL could be possible, >>>>> but I >>>>> don't think it could be worth the relicensing headache for that small >>>>> change. >>>>> >>>>> Instead we should make the patch process as easy as humanly possible >>> so >>>>> people >>>>> are encouraged to send us the fixes and not cart them around their >>>>> companies >>>>> constantly. >>> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go >>> back. >> Actually, IANAL, but I think we can. The BSD license allows us to fork >> and >> relicense the code I think, under GPL or any other license. I'm not >> advocating >> for that mind you, just suggesting that its possible should it ever become >> needed. >> >>>> I agree. My feeling is that as the number of patches in the mailing >>> list >>>> grows, keeping track of them gets more and more complicated. Patchwork >>>> website was a way to try to address this issue. I think it was an >>>> improvement, but to be honest, patchwork lacks a lot of functionality, >>>> such as properly tracking multiple versions of the patch (superseding >>>> them automatically), and it lacks some filtering capabilities e.g. per >>>> user, per tag/label or library, automatically track if it has been >>>> merged, give an overall status of the pending vs merged patches, set >>>> milestones... Is there any alternative tool or improved version for >>> that? >>> >> Agreed, this has come up before, off list unfortunately. The volume of >> patches >> seems to be increasing at such a rate that a single maintainer has >> difficulty >> keeping up. I proposed that the workload be split out to multiple >> subtrees, >> with prefixes being added to patch subjects on the list for local >> filtering to >> stem the tide. Specifically I had proposed that the PMD's be split into a >> separate subtree, but that received pushback in favor of having each >> library >> having its own separate subtree, with a pilot program being made out of >> the I40e >> driver (which you might note sends pull requests to the list now). I'd >> still >> like to see all PMD's come under a single subtree, but thats likely an >> argument >> for later. >> >> That said, Do you think that this patch latency is really a contributor >> to low >> project participation? It definately a problem, but it seems to me that >> this >> sort of issue would lead to people trying to parcitipate, then giving up >> (i.e. >> we would see 1-2 emails from an individual, then not see them again). >> I'd need >> to look through the mailing list for such a pattern, but anecdotally I've >> not >> seen that happen. The problem you describe above is definately a >> problem, but >> its one for those individuals who are participating, not for those who are >> simply choosing not to. And I think we need to address both. >> >>> I agree patchwork has some limitation, but I think the biggest issue is >>> keeping up with the patches. Getting patches introduced into the main >>> line >>> is very slow. A patch submitted today may not get applied for weeks or >>> months, then when another person submits a patch he is starting to run a >>> very high risk of having to redo that patch, because a pervious patch >>> makes his fail weeks/months later. I would love to see a better tool >>> then >>> patchwork, but the biggest issue is we have a huge backlog of patches. >>> Personally I am not sure how Thomas or any is able to keep up with the >>> patches. >>> >> This is absolutely a problem. I'd like to think, more than a tool like >> patchwork, a subtree organization to allow some modicum of parallel >> review and >> integration would really be a benefit here. > Subtrees could work, but the real problem I think is the number of > committers must be higher then one. Something like GitHub (and I assume > Linux Foundation) have a method to add committers to a project. In the > case of GitHub they just have to have a free GitHub account and they can > become committers of the project buying the owner of the project enables > them. > > On GitHub they have personal accounts and organization accounts I know > only about the personal accounts, but they allow for 5 private repos and > any number of public repos. The organization account has a lot of extra > features that seem better for a DPDK community IMO and should be the one > we use if we decide it is the right direction. We can always give it a > shot for while and keep the dpdk.org and use dev@dpdk.org and its repo > mirrored from GitHub as a transition phase. This way we can fall back to > dpdk.org or move one to something else if we like. > > https://help.github.com/categories/organizations/ > > The developers could still send patches via email list, but creating a > repo and forking dpdk is easy, then send a pull request. For the github "community" or free service, organization accounts just allow you to set teams, where each time can be assigned to one or more repositories. The differences are summarized here: https://help.github.com/articles/what-s-the-difference-between-user-and-organization-accounts/ And the permission schema, per team, is summarized here: https://help.github.com/articles/permission-levels-for-an-organization-repository/ Some limitations: i) only if the team has write permissions (IOW push permissions) you can manage issues ii) there cannot be per-branch ACLs. > > >>> The other problem I see is how patches are agreed on to be included in >>> the >>> mainline. Today it is just an ACK or a NAK on the mailing list. Then I >>> see >>> what I think to be only a few people ACKing or NAKing patches. This >>> process has a lot of problems from a patch being ignore for some reason >>> or >>> someone having negative feed back on very minor detail or no way to >>> push a >>> patch forward a single NAK or comment. >>> >> So, this is an interesting issue in ideal meritocracies. Currently >> is/should be >> looking for ACKs/NAK/s from the individuals listed in the MAINTAINER >> files, and >> those people should be the definitive subject matter experts on the code >> they >> cover. As such, I would agrue that they should be entitled to a modicum >> of >> stylistic/trivial leeway. That is to say, if they choose to block a patch >> around a very minor detail, then between them changing their position, >> and the >> patch author changing the code, the latter is likely the easier course of >> action, especially if the author can't make an argument for their >> position. >> That said, if such patch blockage becomes so egregious that individuals >> stop >> contributing, that needs to be known as well. If you as a patch author: >> >> 1) Have tried to submit patches >> 2) Had them blocked for what you consider trivial reasons >> 3) Plan to not contribute further because of this >> 4) Still rely on the DPDK for your product >> >> Please, say something. People in charge need to know when they're pushing >> contributors away. >> >> FWIW, I've tried to do some correlation between the git history and the >> mailing >> list. I need to do more searches, but I have a feeling that early on, the >> majority of people who stopped contributing, did so because their patches >> weren't expressely blocked, but rather because they were simply ignored. >> No one >> working on DPDK bothered to review those patches, and so they never got >> merged. >> Hopefully that problem has been addressed somewhat now. I agree 100% >> >>> I would like to see some type of layering process to allow patches to be >>> applied in a timely manner a few weeks not months or completely ignored. >>> Maybe some type of voting is reasonable, but we need to do something to >>> turn around the patches in clean reasonable manner. >>> >>> Think we need some type of group meeting every week to look at the >>> patches >>> and determining which ones get applied, this gives quick feedback to the >>> submitter as to the status of the patch. >>> >> I think a group meeting is going to be way too much overhead to manage >> properly. >> You'll get different people every week with agenda that may not line up >> with >> code quality, which is really what the review is meant to provide. I >> think > I was only suggesting the maintainers attend the meeting. Of course they > have to attend or have someone attend for them, just to get the voting > done. If you do not attend then you do not get to vote or something like > that is reasonable. Not that we should try and define the process here. > >> perhaps a better approach would be to require that that code owners from >> the >> maintainer file provide and ACK/NAK on their patches within 3-4 days, and >> require a corresponding tree maintainer to apply the patch within 7 or >> so. That >> would cap our patch latency. Likewise, if a patch slips in creating a >> regression, the author needs to be alerted and given a time window in >> which to >> fix the problem before the offending patch is reverted during the QE >> cycle. >> >> >>>> On the other side, since user questions, community discussions and >>>> development happens in the same mailing list, things get really >>>> complicated, specially for users seeking for help. Even though I think >>>> the average skills of the users of DPDK is generally higher than in >>>> other software projects, if DPDK wants to attract more users, having a >>>> better user support is key, IMHO. >>>> >>>> So I would see with good eyes a separation between, at least, dpdk-user >>>> and dpdk-dev. >> I wouldn't argue with this separation, seems like a reasonable approach. >> >>> I do not remember seeing too many users on the list and making a list >>> just >>> for then is OK if everyone is fine with a list that has very few emails. >>>> If the number of patches keeps growing, splitting the "dev" mailing >>>> lists into different categories (eal and common, pmds, higher level >>>> abstractions...) could be an option. However, this last point opens a >>>> lot of questions on how to minimize interference between the different >>>> parts and API/ABI compatibility during the development. >>> I believe if we just make sure we use tags in the subject line then we >>> can >>> have our email clients do the splitting of the emails instead of adding >>> more emails lists. >>> >> Agreed I think it is a good idea too. Maybe we can standardize some format e.g. [TAG][PATCH vX], or something like that. >> >>>>> Perhaps it means having some ReviewBoard type of tools, a clone in >>>>> Github or >>>>> Bitbucket where the less hardcore kernel-workflow types could send >>> back >>>>> their >>>>> small bug fixes a bit more easily, this kind of stuff. Google has >>> been >>>>> getting >>>>> good uptake since they moved most of their open source across to >>> Github, >>>>> because the contribution workflow was more convenient than Google >>> Code >>>>> was. >>> I like GitHub it is a much better designed tool then patchwork, plus it >>> could get more eyes as it is very well know to the developer community >>> in >>> general. I feel GitHub has many advantages over the current systems in >>> place but, it does not solve the all patch issues. >>> >> Github is actually a bit irritating for this sort of thing, as it >> presumes a web >> based interface for discussion. They have some modicum of email >> forwarding >> enabled, but it has never quite worked right, or integrated properly. An alternative to githubs and bitbuckets is a self-hosted forge, like gitlab: https://about.gitlab.com/ To be honest, I mostly work on open-source repositories, and in our organization we use only gitlab for private repositories, so I haven't played that much with it. But it seems to do its job and has almost all of the features of the "community" github, if not more. I don't know if you can even integrate it with github's accounts somehow, to prevent to have to register. However, one of the important points of using github/bitbucket is visibility and ease the contribution process. By using an self-hosted solution, even if it is similar to github and well advertised in DPDK's website, you kind of loose part of that advantage. > Email forwarding has seemed to work for me and in one case it took a bit > to have GitHub stop sending me emails on a repo I did not want anymore :-) >>> The only way we can get patch issues resolved is to put a bit more >>> process >>> in place. >>>> Although I agree, we have to be careful on how github or bitbucket is >>>> used. Having issues or even (e.g. github) pull requests *in addition* >>> to >>>> the normal contribution workflow can be a nightmare to deal with, in >>>> terms of synchronization and preventing double work. So I guess setting >>>> up an official github or bitbucket mirror would be fine, via some >>> simple >>>> cronjob, but I guess it would end-up not using PRs or issues in github >>>> like the Linux kernel does. >> 100% agree, we can't be split about this. Allowing contributions from n >> channels just means most developers will only see/reviews 1/nth of the >> patches >> of interest to them. > If we setup a GitHub or some other site, we would need to make Github the > primary site to remove this type of problem IMO. You mean changing the workflow from email based to issues and pull-req or github pull req? Do you really think this is possible? >>> From what I can tell GitHub seems to be a better solution for a free >>> open >>> environment. Bitbucket I have never used and GitHub seems more popular >>> from one article I read. >>> >>> >>> https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF- >>> 8# >>> q=bitbucket%20vs%20github >>> >>> >>>> Btw, is this github organization already registered by Intel or some >>>> other company of the community? >>>> >>>> https://github.com/dpdk >>>> > I was hoping someone would own up to the GitHub dpdk site. Just wanted to know if this was the case. But, even if that would not be the case, I *guess* that, as it happens with other services like twitter, facebook..., Intel could claim the user, since it has the registered trademark. marc > >>>> Marc >>> If we can used the above that would be great, but a name like >>> Œdpdk-community¹ or something could work too. >>> >>> We can host the web site here and have many sub-projects like >>> Pktgen-DPDK >>> :-) under the same page. Not to say anything bad about our current web >>> pages as I find it difficult to use sometimes and find things like >>> patchwork link. Maintaining a web site is a full time job and GitHub >>> does >>> maintain the site, plus we can collaborate on host web page on the >>> GitHub >>> site easier. >>> >>> Moving to the Linux Foundation is an option as well as it is very well >>> know and has some nice ways to get your project promoted. It does have a >>> few drawbacks in process handling and cost to state a few. The process >>> model is all ready defined, which is good and bad it just depends on >>> your >>> needs IMO. >>> >>> Regards, >>> ++Keith >>> >>>>> Matthew. >>> ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 9:52 ` Marc Sune @ 2015-04-27 13:39 ` Wiles, Keith 2015-04-27 15:34 ` Marc Sune 0 siblings, 1 reply; 58+ messages in thread From: Wiles, Keith @ 2015-04-27 13:39 UTC (permalink / raw) To: Marc Sune, Neil Horman; +Cc: dev On 4/27/15, 4:52 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: > > >On 27/04/15 03:41, Wiles, Keith wrote: >> >> On 4/26/15, 4:56 PM, "Neil Horman" <nhorman@tuxdriver.com> wrote: >> >>> On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: >>>> >>>> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: >>>> >>>>> >>>>> On 24/04/15 19:51, Matthew Hall wrote: >>>>>> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >>>>>>> I can tell you that if DPDK were GPL-based, my company wouldn't be >>>>>>> using >>>>>>> it. I suspect we wouldn't be the only ones... >>>>>>> >>>>>>> Jay >>>>>> I could second this, from the past employer where I used it. Right >>>> now >>>>>> I am >>>>>> using it in an open source app, I have a bit of GPL here and there >>>> but >>>>>> I'm >>>>>> trying to get rid of it or confine it to separate address spaces, >>>> where >>>>>> it >>>>>> won't impact the core code written around DPDK, as I don't want to >>>> cause >>>>>> headaches for any downstream users I attract someday. >>>>>> >>>>>> Hard-core GPL would not be possible for most. LGPL could be >>>>>>possible, >>>>>> but I >>>>>> don't think it could be worth the relicensing headache for that >>>>>>small >>>>>> change. >>>>>> >>>>>> Instead we should make the patch process as easy as humanly possible >>>> so >>>>>> people >>>>>> are encouraged to send us the fixes and not cart them around their >>>>>> companies >>>>>> constantly. >>>> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go >>>> back. >>> Actually, IANAL, but I think we can. The BSD license allows us to fork >>> and >>> relicense the code I think, under GPL or any other license. I'm not >>> advocating >>> for that mind you, just suggesting that its possible should it ever >>>become >>> needed. >>> >>>>> I agree. My feeling is that as the number of patches in the mailing >>>> list >>>>> grows, keeping track of them gets more and more complicated. >>>>>Patchwork >>>>> website was a way to try to address this issue. I think it was an >>>>> improvement, but to be honest, patchwork lacks a lot of >>>>>functionality, >>>>> such as properly tracking multiple versions of the patch (superseding >>>>> them automatically), and it lacks some filtering capabilities e.g. >>>>>per >>>>> user, per tag/label or library, automatically track if it has been >>>>> merged, give an overall status of the pending vs merged patches, set >>>>> milestones... Is there any alternative tool or improved version for >>>> that? >>>> >>> Agreed, this has come up before, off list unfortunately. The volume of >>> patches >>> seems to be increasing at such a rate that a single maintainer has >>> difficulty >>> keeping up. I proposed that the workload be split out to multiple >>> subtrees, >>> with prefixes being added to patch subjects on the list for local >>> filtering to >>> stem the tide. Specifically I had proposed that the PMD's be split >>>into a >>> separate subtree, but that received pushback in favor of having each >>> library >>> having its own separate subtree, with a pilot program being made out of >>> the I40e >>> driver (which you might note sends pull requests to the list now). I'd >>> still >>> like to see all PMD's come under a single subtree, but thats likely an >>> argument >>> for later. >>> >>> That said, Do you think that this patch latency is really a contributor >>> to low >>> project participation? It definately a problem, but it seems to me >>>that >>> this >>> sort of issue would lead to people trying to parcitipate, then giving >>>up >>> (i.e. >>> we would see 1-2 emails from an individual, then not see them again). >>> I'd need >>> to look through the mailing list for such a pattern, but anecdotally >>>I've >>> not >>> seen that happen. The problem you describe above is definately a >>> problem, but >>> its one for those individuals who are participating, not for those who >>>are >>> simply choosing not to. And I think we need to address both. >>> >>>> I agree patchwork has some limitation, but I think the biggest issue >>>>is >>>> keeping up with the patches. Getting patches introduced into the main >>>> line >>>> is very slow. A patch submitted today may not get applied for weeks or >>>> months, then when another person submits a patch he is starting to >>>>run a >>>> very high risk of having to redo that patch, because a pervious patch >>>> makes his fail weeks/months later. I would love to see a better tool >>>> then >>>> patchwork, but the biggest issue is we have a huge backlog of patches. >>>> Personally I am not sure how Thomas or any is able to keep up with the >>>> patches. >>>> >>> This is absolutely a problem. I'd like to think, more than a tool like >>> patchwork, a subtree organization to allow some modicum of parallel >>> review and >>> integration would really be a benefit here. >> Subtrees could work, but the real problem I think is the number of >> committers must be higher then one. Something like GitHub (and I assume >> Linux Foundation) have a method to add committers to a project. In the >> case of GitHub they just have to have a free GitHub account and they can >> become committers of the project buying the owner of the project enables >> them. >> >> On GitHub they have personal accounts and organization accounts I know >> only about the personal accounts, but they allow for 5 private repos and >> any number of public repos. The organization account has a lot of extra >> features that seem better for a DPDK community IMO and should be the one >> we use if we decide it is the right direction. We can always give it a >> shot for while and keep the dpdk.org and use dev@dpdk.org and its repo >> mirrored from GitHub as a transition phase. This way we can fall back to >> dpdk.org or move one to something else if we like. >> >> https://help.github.com/categories/organizations/ >> >> The developers could still send patches via email list, but creating a >> repo and forking dpdk is easy, then send a pull request. > >For the github "community" or free service, organization accounts just >allow you to set teams, where each time can be assigned to one or more >repositories. The differences are summarized here: > >https://help.github.com/articles/what-s-the-difference-between-user-and-or >ganization-accounts/ > >And the permission schema, per team, is summarized here: > >https://help.github.com/articles/permission-levels-for-an-organization-rep >ository/ > >Some limitations: i) only if the team has write permissions (IOW push >permissions) you can manage issues ii) there cannot be per-branch ACLs. I was assuming the organization GitHub is just to allow more then one admin/maintainers along with teams if needed. I would assume the repos are still public and others are allowed to fork or pull the repos. I think of the org version is just extra controls on top of a personal repo like design. The org/personal one should appear to the non-maintainers/admins/owner as a normal repo on GitHub, correct? The GitHub organization is built for open-source and you can still have private repos, but then you start to have a cost depending on the number of private repos you want. If you do not have a lot of private repos then you should have no cost (I think). I do not see any reason for private repos, but I guest we could have some and we get 5 free and 10 is $25 per month. > >> >> >>>> The other problem I see is how patches are agreed on to be included in >>>> the >>>> mainline. Today it is just an ACK or a NAK on the mailing list. Then I >>>> see >>>> what I think to be only a few people ACKing or NAKing patches. This >>>> process has a lot of problems from a patch being ignore for some >>>>reason >>>> or >>>> someone having negative feed back on very minor detail or no way to >>>> push a >>>> patch forward a single NAK or comment. >>>> >>> So, this is an interesting issue in ideal meritocracies. Currently >>> is/should be >>> looking for ACKs/NAK/s from the individuals listed in the MAINTAINER >>> files, and >>> those people should be the definitive subject matter experts on the >>>code >>> they >>> cover. As such, I would agrue that they should be entitled to a >>>modicum >>> of >>> stylistic/trivial leeway. That is to say, if they choose to block a >>>patch >>> around a very minor detail, then between them changing their position, >>> and the >>> patch author changing the code, the latter is likely the easier course >>>of >>> action, especially if the author can't make an argument for their >>> position. >>> That said, if such patch blockage becomes so egregious that individuals >>> stop >>> contributing, that needs to be known as well. If you as a patch >>>author: >>> >>> 1) Have tried to submit patches >>> 2) Had them blocked for what you consider trivial reasons >>> 3) Plan to not contribute further because of this >>> 4) Still rely on the DPDK for your product >>> >>> Please, say something. People in charge need to know when they're >>>pushing >>> contributors away. >>> >>> FWIW, I've tried to do some correlation between the git history and the >>> mailing >>> list. I need to do more searches, but I have a feeling that early on, >>>the >>> majority of people who stopped contributing, did so because their >>>patches >>> weren't expressely blocked, but rather because they were simply >>>ignored. >>> No one >>> working on DPDK bothered to review those patches, and so they never got >>> merged. >>> Hopefully that problem has been addressed somewhat now. >I agree 100% >>> >>>> I would like to see some type of layering process to allow patches to >>>>be >>>> applied in a timely manner a few weeks not months or completely >>>>ignored. >>>> Maybe some type of voting is reasonable, but we need to do something >>>>to >>>> turn around the patches in clean reasonable manner. >>>> >>>> Think we need some type of group meeting every week to look at the >>>> patches >>>> and determining which ones get applied, this gives quick feedback to >>>>the >>>> submitter as to the status of the patch. >>>> >>> I think a group meeting is going to be way too much overhead to manage >>> properly. >>> You'll get different people every week with agenda that may not line up >>> with >>> code quality, which is really what the review is meant to provide. I >>> think >> I was only suggesting the maintainers attend the meeting. Of course they >> have to attend or have someone attend for them, just to get the voting >> done. If you do not attend then you do not get to vote or something like >> that is reasonable. Not that we should try and define the process here. >> >>> perhaps a better approach would be to require that that code owners >>>from >>> the >>> maintainer file provide and ACK/NAK on their patches within 3-4 days, >>>and >>> require a corresponding tree maintainer to apply the patch within 7 or >>> so. That >>> would cap our patch latency. Likewise, if a patch slips in creating a >>> regression, the author needs to be alerted and given a time window in >>> which to >>> fix the problem before the offending patch is reverted during the QE >>> cycle. >>> >>> >>>>> On the other side, since user questions, community discussions and >>>>> development happens in the same mailing list, things get really >>>>> complicated, specially for users seeking for help. Even though I >>>>>think >>>>> the average skills of the users of DPDK is generally higher than in >>>>> other software projects, if DPDK wants to attract more users, having >>>>>a >>>>> better user support is key, IMHO. >>>>> >>>>> So I would see with good eyes a separation between, at least, >>>>>dpdk-user >>>>> and dpdk-dev. >>> I wouldn't argue with this separation, seems like a reasonable >>>approach. >>> >>>> I do not remember seeing too many users on the list and making a list >>>> just >>>> for then is OK if everyone is fine with a list that has very few >>>>emails. >>>>> If the number of patches keeps growing, splitting the "dev" mailing >>>>> lists into different categories (eal and common, pmds, higher level >>>>> abstractions...) could be an option. However, this last point opens a >>>>> lot of questions on how to minimize interference between the >>>>>different >>>>> parts and API/ABI compatibility during the development. >>>> I believe if we just make sure we use tags in the subject line then we >>>> can >>>> have our email clients do the splitting of the emails instead of >>>>adding >>>> more emails lists. >>>> >>> Agreed > >I think it is a good idea too. Maybe we can standardize some format e.g. >[TAG][PATCH vX], or something like that. > >>> >>>>>> Perhaps it means having some ReviewBoard type of tools, a clone in >>>>>> Github or >>>>>> Bitbucket where the less hardcore kernel-workflow types could send >>>> back >>>>>> their >>>>>> small bug fixes a bit more easily, this kind of stuff. Google has >>>> been >>>>>> getting >>>>>> good uptake since they moved most of their open source across to >>>> Github, >>>>>> because the contribution workflow was more convenient than Google >>>> Code >>>>>> was. >>>> I like GitHub it is a much better designed tool then patchwork, plus >>>>it >>>> could get more eyes as it is very well know to the developer community >>>> in >>>> general. I feel GitHub has many advantages over the current systems in >>>> place but, it does not solve the all patch issues. >>>> >>> Github is actually a bit irritating for this sort of thing, as it >>> presumes a web >>> based interface for discussion. They have some modicum of email >>> forwarding >>> enabled, but it has never quite worked right, or integrated properly. > >An alternative to githubs and bitbuckets is a self-hosted forge, like >gitlab: > >https://about.gitlab.com/ > >To be honest, I mostly work on open-source repositories, and in our >organization we use only gitlab for private repositories, so I haven't >played that much with it. But it seems to do its job and has almost all >of the features of the "community" github, if not more. I don't know if >you can even integrate it with github's accounts somehow, to prevent to >have to register. > >However, one of the important points of using github/bitbucket is >visibility and ease the contribution process. By using an self-hosted >solution, even if it is similar to github and well advertised in DPDK's >website, you kind of loose part of that advantage. I would suggest we use GitHub then picking yet another not as well know Git Repo system, if we decide to change. > >> Email forwarding has seemed to work for me and in one case it took a bit >> to have GitHub stop sending me emails on a repo I did not want anymore >>:-) >>>> The only way we can get patch issues resolved is to put a bit more >>>> process >>>> in place. >>>>> Although I agree, we have to be careful on how github or bitbucket is >>>>> used. Having issues or even (e.g. github) pull requests *in addition* >>>> to >>>>> the normal contribution workflow can be a nightmare to deal with, in >>>>> terms of synchronization and preventing double work. So I guess >>>>>setting >>>>> up an official github or bitbucket mirror would be fine, via some >>>> simple >>>>> cronjob, but I guess it would end-up not using PRs or issues in >>>>>github >>>>> like the Linux kernel does. >>> 100% agree, we can't be split about this. Allowing contributions from >>>n >>> channels just means most developers will only see/reviews 1/nth of the >>> patches >>> of interest to them. >> If we setup a GitHub or some other site, we would need to make Github >>the >> primary site to remove this type of problem IMO. > >You mean changing the workflow from email based to issues and pull-req >or github pull req? Do you really think this is possible? Yes, I think pull-req is the standard GitHub method as everyone needs a repo anyway. If we can figure out how to integrate the email patches that would be great. > >>>> From what I can tell GitHub seems to be a better solution for a free >>>> open >>>> environment. Bitbucket I have never used and GitHub seems more popular >>>> from one article I read. >>>> >>>> >>>> >>>>https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UT >>>>F- >>>> 8# >>>> q=bitbucket%20vs%20github >>>> >>>> >>>>> Btw, is this github organization already registered by Intel or some >>>>> other company of the community? >>>>> >>>>> https://github.com/dpdk >>>>> >> I was hoping someone would own up to the GitHub dpdk site. > >Just wanted to know if this was the case. But, even if that would not be >the case, I *guess* that, as it happens with other services like >twitter, facebook..., Intel could claim the user, since it has the >registered trademark. > >marc > >> >>>>> Marc >>>> If we can used the above that would be great, but a name like >>>> Œdpdk-community¹ or something could work too. >>>> >>>> We can host the web site here and have many sub-projects like >>>> Pktgen-DPDK >>>> :-) under the same page. Not to say anything bad about our current web >>>> pages as I find it difficult to use sometimes and find things like >>>> patchwork link. Maintaining a web site is a full time job and GitHub >>>> does >>>> maintain the site, plus we can collaborate on host web page on the >>>> GitHub >>>> site easier. >>>> >>>> Moving to the Linux Foundation is an option as well as it is very well >>>> know and has some nice ways to get your project promoted. It does >>>>have a >>>> few drawbacks in process handling and cost to state a few. The process >>>> model is all ready defined, which is good and bad it just depends on >>>> your >>>> needs IMO. >>>> >>>> Regards, >>>> ++Keith >>>> >>>>>> Matthew. >>>> > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 13:39 ` Wiles, Keith @ 2015-04-27 15:34 ` Marc Sune 0 siblings, 0 replies; 58+ messages in thread From: Marc Sune @ 2015-04-27 15:34 UTC (permalink / raw) To: Wiles, Keith, Neil Horman; +Cc: dev On 27/04/15 15:39, Wiles, Keith wrote: > > On 4/27/15, 4:52 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: > >> >> On 27/04/15 03:41, Wiles, Keith wrote: >>> On 4/26/15, 4:56 PM, "Neil Horman" <nhorman@tuxdriver.com> wrote: >>> >>>> On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: >>>>> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: >>>>> >>>>>> On 24/04/15 19:51, Matthew Hall wrote: >>>>>>> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >>>>>>>> I can tell you that if DPDK were GPL-based, my company wouldn't be >>>>>>>> using >>>>>>>> it. I suspect we wouldn't be the only ones... >>>>>>>> >>>>>>>> Jay >>>>>>> I could second this, from the past employer where I used it. Right >>>>> now >>>>>>> I am >>>>>>> using it in an open source app, I have a bit of GPL here and there >>>>> but >>>>>>> I'm >>>>>>> trying to get rid of it or confine it to separate address spaces, >>>>> where >>>>>>> it >>>>>>> won't impact the core code written around DPDK, as I don't want to >>>>> cause >>>>>>> headaches for any downstream users I attract someday. >>>>>>> >>>>>>> Hard-core GPL would not be possible for most. LGPL could be >>>>>>> possible, >>>>>>> but I >>>>>>> don't think it could be worth the relicensing headache for that >>>>>>> small >>>>>>> change. >>>>>>> >>>>>>> Instead we should make the patch process as easy as humanly possible >>>>> so >>>>>>> people >>>>>>> are encouraged to send us the fixes and not cart them around their >>>>>>> companies >>>>>>> constantly. >>>>> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go >>>>> back. >>>> Actually, IANAL, but I think we can. The BSD license allows us to fork >>>> and >>>> relicense the code I think, under GPL or any other license. I'm not >>>> advocating >>>> for that mind you, just suggesting that its possible should it ever >>>> become >>>> needed. >>>> >>>>>> I agree. My feeling is that as the number of patches in the mailing >>>>> list >>>>>> grows, keeping track of them gets more and more complicated. >>>>>> Patchwork >>>>>> website was a way to try to address this issue. I think it was an >>>>>> improvement, but to be honest, patchwork lacks a lot of >>>>>> functionality, >>>>>> such as properly tracking multiple versions of the patch (superseding >>>>>> them automatically), and it lacks some filtering capabilities e.g. >>>>>> per >>>>>> user, per tag/label or library, automatically track if it has been >>>>>> merged, give an overall status of the pending vs merged patches, set >>>>>> milestones... Is there any alternative tool or improved version for >>>>> that? >>>>> >>>> Agreed, this has come up before, off list unfortunately. The volume of >>>> patches >>>> seems to be increasing at such a rate that a single maintainer has >>>> difficulty >>>> keeping up. I proposed that the workload be split out to multiple >>>> subtrees, >>>> with prefixes being added to patch subjects on the list for local >>>> filtering to >>>> stem the tide. Specifically I had proposed that the PMD's be split >>>> into a >>>> separate subtree, but that received pushback in favor of having each >>>> library >>>> having its own separate subtree, with a pilot program being made out of >>>> the I40e >>>> driver (which you might note sends pull requests to the list now). I'd >>>> still >>>> like to see all PMD's come under a single subtree, but thats likely an >>>> argument >>>> for later. >>>> >>>> That said, Do you think that this patch latency is really a contributor >>>> to low >>>> project participation? It definately a problem, but it seems to me >>>> that >>>> this >>>> sort of issue would lead to people trying to parcitipate, then giving >>>> up >>>> (i.e. >>>> we would see 1-2 emails from an individual, then not see them again). >>>> I'd need >>>> to look through the mailing list for such a pattern, but anecdotally >>>> I've >>>> not >>>> seen that happen. The problem you describe above is definately a >>>> problem, but >>>> its one for those individuals who are participating, not for those who >>>> are >>>> simply choosing not to. And I think we need to address both. >>>> >>>>> I agree patchwork has some limitation, but I think the biggest issue >>>>> is >>>>> keeping up with the patches. Getting patches introduced into the main >>>>> line >>>>> is very slow. A patch submitted today may not get applied for weeks or >>>>> months, then when another person submits a patch he is starting to >>>>> run a >>>>> very high risk of having to redo that patch, because a pervious patch >>>>> makes his fail weeks/months later. I would love to see a better tool >>>>> then >>>>> patchwork, but the biggest issue is we have a huge backlog of patches. >>>>> Personally I am not sure how Thomas or any is able to keep up with the >>>>> patches. >>>>> >>>> This is absolutely a problem. I'd like to think, more than a tool like >>>> patchwork, a subtree organization to allow some modicum of parallel >>>> review and >>>> integration would really be a benefit here. >>> Subtrees could work, but the real problem I think is the number of >>> committers must be higher then one. Something like GitHub (and I assume >>> Linux Foundation) have a method to add committers to a project. In the >>> case of GitHub they just have to have a free GitHub account and they can >>> become committers of the project buying the owner of the project enables >>> them. >>> >>> On GitHub they have personal accounts and organization accounts I know >>> only about the personal accounts, but they allow for 5 private repos and >>> any number of public repos. The organization account has a lot of extra >>> features that seem better for a DPDK community IMO and should be the one >>> we use if we decide it is the right direction. We can always give it a >>> shot for while and keep the dpdk.org and use dev@dpdk.org and its repo >>> mirrored from GitHub as a transition phase. This way we can fall back to >>> dpdk.org or move one to something else if we like. >>> >>> https://help.github.com/categories/organizations/ >>> >>> The developers could still send patches via email list, but creating a >>> repo and forking dpdk is easy, then send a pull request. >> For the github "community" or free service, organization accounts just >> allow you to set teams, where each time can be assigned to one or more >> repositories. The differences are summarized here: >> >> https://help.github.com/articles/what-s-the-difference-between-user-and-or >> ganization-accounts/ >> >> And the permission schema, per team, is summarized here: >> >> https://help.github.com/articles/permission-levels-for-an-organization-rep >> ository/ >> >> Some limitations: i) only if the team has write permissions (IOW push >> permissions) you can manage issues ii) there cannot be per-branch ACLs. > I was assuming the organization GitHub is just to allow more then one > admin/maintainers along with teams if needed. I would assume the repos are > still public and others are allowed to fork or pull the repos. I think of > the org version is just extra controls on top of a personal repo like > design. The org/personal one should appear to the > non-maintainers/admins/owner as a normal repo on GitHub, correct? Right > > The GitHub organization is built for open-source and you can still have > private repos, but then you start to have a cost depending on the number > of private repos you want. If you do not have a lot of private repos then > you should have no cost (I think). I do not see any reason for private > repos, but I guest we could have some and we get 5 free and 10 is $25 per > month. I don't see the reason either, and I don't know why private repos would be useful here. >>> >>>>> The other problem I see is how patches are agreed on to be included in >>>>> the >>>>> mainline. Today it is just an ACK or a NAK on the mailing list. Then I >>>>> see >>>>> what I think to be only a few people ACKing or NAKing patches. This >>>>> process has a lot of problems from a patch being ignore for some >>>>> reason >>>>> or >>>>> someone having negative feed back on very minor detail or no way to >>>>> push a >>>>> patch forward a single NAK or comment. >>>>> >>>> So, this is an interesting issue in ideal meritocracies. Currently >>>> is/should be >>>> looking for ACKs/NAK/s from the individuals listed in the MAINTAINER >>>> files, and >>>> those people should be the definitive subject matter experts on the >>>> code >>>> they >>>> cover. As such, I would agrue that they should be entitled to a >>>> modicum >>>> of >>>> stylistic/trivial leeway. That is to say, if they choose to block a >>>> patch >>>> around a very minor detail, then between them changing their position, >>>> and the >>>> patch author changing the code, the latter is likely the easier course >>>> of >>>> action, especially if the author can't make an argument for their >>>> position. >>>> That said, if such patch blockage becomes so egregious that individuals >>>> stop >>>> contributing, that needs to be known as well. If you as a patch >>>> author: >>>> >>>> 1) Have tried to submit patches >>>> 2) Had them blocked for what you consider trivial reasons >>>> 3) Plan to not contribute further because of this >>>> 4) Still rely on the DPDK for your product >>>> >>>> Please, say something. People in charge need to know when they're >>>> pushing >>>> contributors away. >>>> >>>> FWIW, I've tried to do some correlation between the git history and the >>>> mailing >>>> list. I need to do more searches, but I have a feeling that early on, >>>> the >>>> majority of people who stopped contributing, did so because their >>>> patches >>>> weren't expressely blocked, but rather because they were simply >>>> ignored. >>>> No one >>>> working on DPDK bothered to review those patches, and so they never got >>>> merged. >>>> Hopefully that problem has been addressed somewhat now. >> I agree 100% >>>>> I would like to see some type of layering process to allow patches to >>>>> be >>>>> applied in a timely manner a few weeks not months or completely >>>>> ignored. >>>>> Maybe some type of voting is reasonable, but we need to do something >>>>> to >>>>> turn around the patches in clean reasonable manner. >>>>> >>>>> Think we need some type of group meeting every week to look at the >>>>> patches >>>>> and determining which ones get applied, this gives quick feedback to >>>>> the >>>>> submitter as to the status of the patch. >>>>> >>>> I think a group meeting is going to be way too much overhead to manage >>>> properly. >>>> You'll get different people every week with agenda that may not line up >>>> with >>>> code quality, which is really what the review is meant to provide. I >>>> think >>> I was only suggesting the maintainers attend the meeting. Of course they >>> have to attend or have someone attend for them, just to get the voting >>> done. If you do not attend then you do not get to vote or something like >>> that is reasonable. Not that we should try and define the process here. >>> >>>> perhaps a better approach would be to require that that code owners >>>> from >>>> the >>>> maintainer file provide and ACK/NAK on their patches within 3-4 days, >>>> and >>>> require a corresponding tree maintainer to apply the patch within 7 or >>>> so. That >>>> would cap our patch latency. Likewise, if a patch slips in creating a >>>> regression, the author needs to be alerted and given a time window in >>>> which to >>>> fix the problem before the offending patch is reverted during the QE >>>> cycle. >>>> >>>> >>>>>> On the other side, since user questions, community discussions and >>>>>> development happens in the same mailing list, things get really >>>>>> complicated, specially for users seeking for help. Even though I >>>>>> think >>>>>> the average skills of the users of DPDK is generally higher than in >>>>>> other software projects, if DPDK wants to attract more users, having >>>>>> a >>>>>> better user support is key, IMHO. >>>>>> >>>>>> So I would see with good eyes a separation between, at least, >>>>>> dpdk-user >>>>>> and dpdk-dev. >>>> I wouldn't argue with this separation, seems like a reasonable >>>> approach. >>>> >>>>> I do not remember seeing too many users on the list and making a list >>>>> just >>>>> for then is OK if everyone is fine with a list that has very few >>>>> emails. >>>>>> If the number of patches keeps growing, splitting the "dev" mailing >>>>>> lists into different categories (eal and common, pmds, higher level >>>>>> abstractions...) could be an option. However, this last point opens a >>>>>> lot of questions on how to minimize interference between the >>>>>> different >>>>>> parts and API/ABI compatibility during the development. >>>>> I believe if we just make sure we use tags in the subject line then we >>>>> can >>>>> have our email clients do the splitting of the emails instead of >>>>> adding >>>>> more emails lists. >>>>> >>>> Agreed >> I think it is a good idea too. Maybe we can standardize some format e.g. >> [TAG][PATCH vX], or something like that. >> >>>>>>> Perhaps it means having some ReviewBoard type of tools, a clone in >>>>>>> Github or >>>>>>> Bitbucket where the less hardcore kernel-workflow types could send >>>>> back >>>>>>> their >>>>>>> small bug fixes a bit more easily, this kind of stuff. Google has >>>>> been >>>>>>> getting >>>>>>> good uptake since they moved most of their open source across to >>>>> Github, >>>>>>> because the contribution workflow was more convenient than Google >>>>> Code >>>>>>> was. >>>>> I like GitHub it is a much better designed tool then patchwork, plus >>>>> it >>>>> could get more eyes as it is very well know to the developer community >>>>> in >>>>> general. I feel GitHub has many advantages over the current systems in >>>>> place but, it does not solve the all patch issues. >>>>> >>>> Github is actually a bit irritating for this sort of thing, as it >>>> presumes a web >>>> based interface for discussion. They have some modicum of email >>>> forwarding >>>> enabled, but it has never quite worked right, or integrated properly. >> An alternative to githubs and bitbuckets is a self-hosted forge, like >> gitlab: >> >> https://about.gitlab.com/ >> >> To be honest, I mostly work on open-source repositories, and in our >> organization we use only gitlab for private repositories, so I haven't >> played that much with it. But it seems to do its job and has almost all >> of the features of the "community" github, if not more. I don't know if >> you can even integrate it with github's accounts somehow, to prevent to >> have to register. >> >> However, one of the important points of using github/bitbucket is >> visibility and ease the contribution process. By using an self-hosted >> solution, even if it is similar to github and well advertised in DPDK's >> website, you kind of loose part of that advantage. > I would suggest we use GitHub then picking yet another not as well know > Git Repo system, if we decide to change. I agree. I was just pointing out this as an option instead of github/bitbucket. Basically to (still) self-host the repository and tools. >>> Email forwarding has seemed to work for me and in one case it took a bit >>> to have GitHub stop sending me emails on a repo I did not want anymore >>> :-) >>>>> The only way we can get patch issues resolved is to put a bit more >>>>> process >>>>> in place. >>>>>> Although I agree, we have to be careful on how github or bitbucket is >>>>>> used. Having issues or even (e.g. github) pull requests *in addition* >>>>> to >>>>>> the normal contribution workflow can be a nightmare to deal with, in >>>>>> terms of synchronization and preventing double work. So I guess >>>>>> setting >>>>>> up an official github or bitbucket mirror would be fine, via some >>>>> simple >>>>>> cronjob, but I guess it would end-up not using PRs or issues in >>>>>> github >>>>>> like the Linux kernel does. >>>> 100% agree, we can't be split about this. Allowing contributions from >>>> n >>>> channels just means most developers will only see/reviews 1/nth of the >>>> patches >>>> of interest to them. >>> If we setup a GitHub or some other site, we would need to make Github >>> the >>> primary site to remove this type of problem IMO. >> You mean changing the workflow from email based to issues and pull-req >> or github pull req? Do you really think this is possible? > Yes, I think pull-req is the standard GitHub method as everyone needs a > repo anyway. If we can figure out how to integrate the email patches that > would be great. I think it is quite complicated. It needs to be completely seemless or it won't work, and we will have part of the discussions in the mailing list, and part in the pull-req issues. I would think it the other way around => pull requests are "echoed" to the mailing list to be discussed there, and always CCed (how) to the issue to capture the discussion there too. Not trivial at all. marc >>>>> From what I can tell GitHub seems to be a better solution for a free >>>>> open >>>>> environment. Bitbucket I have never used and GitHub seems more popular >>>>> from one article I read. >>>>> >>>>> >>>>> >>>>> https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UT >>>>> F- >>>>> 8# >>>>> q=bitbucket%20vs%20github >>>>> >>>>> >>>>>> Btw, is this github organization already registered by Intel or some >>>>>> other company of the community? >>>>>> >>>>>> https://github.com/dpdk >>>>>> >>> I was hoping someone would own up to the GitHub dpdk site. >> Just wanted to know if this was the case. But, even if that would not be >> the case, I *guess* that, as it happens with other services like >> twitter, facebook..., Intel could claim the user, since it has the >> registered trademark. >> >> marc >> >>>>>> Marc >>>>> If we can used the above that would be great, but a name like >>>>> Œdpdk-community¹ or something could work too. >>>>> >>>>> We can host the web site here and have many sub-projects like >>>>> Pktgen-DPDK >>>>> :-) under the same page. Not to say anything bad about our current web >>>>> pages as I find it difficult to use sometimes and find things like >>>>> patchwork link. Maintaining a web site is a full time job and GitHub >>>>> does >>>>> maintain the site, plus we can collaborate on host web page on the >>>>> GitHub >>>>> site easier. >>>>> >>>>> Moving to the Linux Foundation is an option as well as it is very well >>>>> know and has some nice ways to get your project promoted. It does >>>>> have a >>>>> few drawbacks in process handling and cost to state a few. The process >>>>> model is all ready defined, which is good and bad it just depends on >>>>> your >>>>> needs IMO. >>>>> >>>>> Regards, >>>>> ++Keith >>>>> >>>>>>> Matthew. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 [not found] ` <D162FA4E.1DED8%keith.wiles@intel.com> 2015-04-27 9:52 ` Marc Sune @ 2015-04-27 10:29 ` Neil Horman 2015-04-27 13:50 ` Wiles, Keith 1 sibling, 1 reply; 58+ messages in thread From: Neil Horman @ 2015-04-27 10:29 UTC (permalink / raw) To: Wiles, Keith; +Cc: dev On Mon, Apr 27, 2015 at 01:41:11AM +0000, Wiles, Keith wrote: > > > On 4/26/15, 4:56 PM, "Neil Horman" <nhorman@tuxdriver.com> wrote: > > >On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: > >> > >> > >> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: > >> > >> > > >> > > >> >On 24/04/15 19:51, Matthew Hall wrote: > >> >> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: > >> >>> I can tell you that if DPDK were GPL-based, my company wouldn't be > >> >>>using > >> >>> it. I suspect we wouldn't be the only ones... > >> >>> > >> >>> Jay > >> >> I could second this, from the past employer where I used it. Right > >>now > >> >>I am > >> >> using it in an open source app, I have a bit of GPL here and there > >>but > >> >>I'm > >> >> trying to get rid of it or confine it to separate address spaces, > >>where > >> >>it > >> >> won't impact the core code written around DPDK, as I don't want to > >>cause > >> >> headaches for any downstream users I attract someday. > >> >> > >> >> Hard-core GPL would not be possible for most. LGPL could be possible, > >> >>but I > >> >> don't think it could be worth the relicensing headache for that small > >> >>change. > >> >> > >> >> Instead we should make the patch process as easy as humanly possible > >>so > >> >>people > >> >> are encouraged to send us the fixes and not cart them around their > >> >>companies > >> >> constantly. > >> > >> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go > >>back. > >Actually, IANAL, but I think we can. The BSD license allows us to fork > >and > >relicense the code I think, under GPL or any other license. I'm not > >advocating > >for that mind you, just suggesting that its possible should it ever become > >needed. > > > >> > > >> >I agree. My feeling is that as the number of patches in the mailing > >>list > >> >grows, keeping track of them gets more and more complicated. Patchwork > >> >website was a way to try to address this issue. I think it was an > >> >improvement, but to be honest, patchwork lacks a lot of functionality, > >> >such as properly tracking multiple versions of the patch (superseding > >> >them automatically), and it lacks some filtering capabilities e.g. per > >> >user, per tag/label or library, automatically track if it has been > >> >merged, give an overall status of the pending vs merged patches, set > >> >milestones... Is there any alternative tool or improved version for > >>that? > >> > >Agreed, this has come up before, off list unfortunately. The volume of > >patches > >seems to be increasing at such a rate that a single maintainer has > >difficulty > >keeping up. I proposed that the workload be split out to multiple > >subtrees, > >with prefixes being added to patch subjects on the list for local > >filtering to > >stem the tide. Specifically I had proposed that the PMD's be split into a > >separate subtree, but that received pushback in favor of having each > >library > >having its own separate subtree, with a pilot program being made out of > >the I40e > >driver (which you might note sends pull requests to the list now). I'd > >still > >like to see all PMD's come under a single subtree, but thats likely an > >argument > >for later. > > > >That said, Do you think that this patch latency is really a contributor > >to low > >project participation? It definately a problem, but it seems to me that > >this > >sort of issue would lead to people trying to parcitipate, then giving up > >(i.e. > >we would see 1-2 emails from an individual, then not see them again). > >I'd need > >to look through the mailing list for such a pattern, but anecdotally I've > >not > >seen that happen. The problem you describe above is definately a > >problem, but > >its one for those individuals who are participating, not for those who are > >simply choosing not to. And I think we need to address both. > > > >> I agree patchwork has some limitation, but I think the biggest issue is > >> keeping up with the patches. Getting patches introduced into the main > >>line > >> is very slow. A patch submitted today may not get applied for weeks or > >> months, then when another person submits a patch he is starting to run a > >> very high risk of having to redo that patch, because a pervious patch > >> makes his fail weeks/months later. I would love to see a better tool > >>then > >> patchwork, but the biggest issue is we have a huge backlog of patches. > >> Personally I am not sure how Thomas or any is able to keep up with the > >> patches. > >> > >This is absolutely a problem. I'd like to think, more than a tool like > >patchwork, a subtree organization to allow some modicum of parallel > >review and > >integration would really be a benefit here. > Subtrees could work, but the real problem I think is the number of > committers must be higher then one. Something like GitHub (and I assume > Linux Foundation) have a method to add committers to a project. In the > case of GitHub they just have to have a free GitHub account and they can > become committers of the project buying the owner of the project enables > them. > > On GitHub they have personal accounts and organization accounts I know > only about the personal accounts, but they allow for 5 private repos and > any number of public repos. The organization account has a lot of extra > features that seem better for a DPDK community IMO and should be the one > we use if we decide it is the right direction. We can always give it a > shot for while and keep the dpdk.org and use dev@dpdk.org and its repo > mirrored from GitHub as a transition phase. This way we can fall back to > dpdk.org or move one to something else if we like. > > https://help.github.com/categories/organizations/ > > The developers could still send patches via email list, but creating a > repo and forking dpdk is easy, then send a pull request. > I'm not opposed to github per-se, but nothing described above is unique to github. Theres no reason we can't allow multiple comitters to the current tree as hosted on the current server, we just have to configure it as such. And FWIW, the assumption is that, with multiple subtrees, you implicitly have multiple comitters, assuming that pull requests from those subtree maintainers are trusted by the top level tree maintainer. In fact I feel somewhat better about that model as it provides a nice stairstep integration path for new features. Not explicitly opposed to a movement to github, I just feel like it may not address the problem at hand. > > > > >> The other problem I see is how patches are agreed on to be included in > >>the > >> mainline. Today it is just an ACK or a NAK on the mailing list. Then I > >>see > >> what I think to be only a few people ACKing or NAKing patches. This > >> process has a lot of problems from a patch being ignore for some reason > >>or > >> someone having negative feed back on very minor detail or no way to > >>push a > >> patch forward a single NAK or comment. > >> > > > >So, this is an interesting issue in ideal meritocracies. Currently > >is/should be > >looking for ACKs/NAK/s from the individuals listed in the MAINTAINER > >files, and > >those people should be the definitive subject matter experts on the code > >they > >cover. As such, I would agrue that they should be entitled to a modicum > >of > >stylistic/trivial leeway. That is to say, if they choose to block a patch > >around a very minor detail, then between them changing their position, > >and the > >patch author changing the code, the latter is likely the easier course of > >action, especially if the author can't make an argument for their > >position. > >That said, if such patch blockage becomes so egregious that individuals > >stop > >contributing, that needs to be known as well. If you as a patch author: > > > >1) Have tried to submit patches > >2) Had them blocked for what you consider trivial reasons > >3) Plan to not contribute further because of this > >4) Still rely on the DPDK for your product > > > >Please, say something. People in charge need to know when they're pushing > >contributors away. > > > >FWIW, I've tried to do some correlation between the git history and the > >mailing > >list. I need to do more searches, but I have a feeling that early on, the > >majority of people who stopped contributing, did so because their patches > >weren't expressely blocked, but rather because they were simply ignored. > >No one > >working on DPDK bothered to review those patches, and so they never got > >merged. > >Hopefully that problem has been addressed somewhat now. > > > >> I would like to see some type of layering process to allow patches to be > >> applied in a timely manner a few weeks not months or completely ignored. > >> Maybe some type of voting is reasonable, but we need to do something to > >> turn around the patches in clean reasonable manner. > >> > >> Think we need some type of group meeting every week to look at the > >>patches > >> and determining which ones get applied, this gives quick feedback to the > >> submitter as to the status of the patch. > >> > >I think a group meeting is going to be way too much overhead to manage > >properly. > >You'll get different people every week with agenda that may not line up > >with > >code quality, which is really what the review is meant to provide. I > >think > > I was only suggesting the maintainers attend the meeting. Of course they > have to attend or have someone attend for them, just to get the voting > done. If you do not attend then you do not get to vote or something like > that is reasonable. Not that we should try and define the process here. > If you use multiple subtrees, theres no need for a meeting, or any sort of defiend process for voting, theres only an implicitly defined heirarchy of acceptance in bundled changesets. If a desire of the community is to see more efficient review and lower changeset acceptance latency, it seems to be that a weekly meeting of any sort is somewhat anathema to that. > >perhaps a better approach would be to require that that code owners from > >the > >maintainer file provide and ACK/NAK on their patches within 3-4 days, and > >require a corresponding tree maintainer to apply the patch within 7 or > >so. That > >would cap our patch latency. Likewise, if a patch slips in creating a > >regression, the author needs to be alerted and given a time window in > >which to > >fix the problem before the offending patch is reverted during the QE > >cycle. > > > > > >> > > >> >On the other side, since user questions, community discussions and > >> >development happens in the same mailing list, things get really > >> >complicated, specially for users seeking for help. Even though I think > >> >the average skills of the users of DPDK is generally higher than in > >> >other software projects, if DPDK wants to attract more users, having a > >> >better user support is key, IMHO. > >> > > >> >So I would see with good eyes a separation between, at least, dpdk-user > >> >and dpdk-dev. > >> > >I wouldn't argue with this separation, seems like a reasonable approach. > > > >> I do not remember seeing too many users on the list and making a list > >>just > >> for then is OK if everyone is fine with a list that has very few emails. > >> > > >> >If the number of patches keeps growing, splitting the "dev" mailing > >> >lists into different categories (eal and common, pmds, higher level > >> >abstractions...) could be an option. However, this last point opens a > >> >lot of questions on how to minimize interference between the different > >> >parts and API/ABI compatibility during the development. > >> > >> I believe if we just make sure we use tags in the subject line then we > >>can > >> have our email clients do the splitting of the emails instead of adding > >> more emails lists. > >> > >Agreed > > > >> > > >> >> > >> >> Perhaps it means having some ReviewBoard type of tools, a clone in > >> >>Github or > >> >> Bitbucket where the less hardcore kernel-workflow types could send > >>back > >> >>their > >> >> small bug fixes a bit more easily, this kind of stuff. Google has > >>been > >> >>getting > >> >> good uptake since they moved most of their open source across to > >>Github, > >> >> because the contribution workflow was more convenient than Google > >>Code > >> >>was. > >> > >> I like GitHub it is a much better designed tool then patchwork, plus it > >> could get more eyes as it is very well know to the developer community > >>in > >> general. I feel GitHub has many advantages over the current systems in > >> place but, it does not solve the all patch issues. > >> > >Github is actually a bit irritating for this sort of thing, as it > >presumes a web > >based interface for discussion. They have some modicum of email > >forwarding > >enabled, but it has never quite worked right, or integrated properly. > > Email forwarding has seemed to work for me and in one case it took a bit > to have GitHub stop sending me emails on a repo I did not want anymore :-) Forwarding works fine, its responding that doesn't usually work well. Emails from pull requests and issues are forwarded from a 'do not reply' address and responding requires that you visit the github page in a browser. Thats especially trying with patch review, as there is no real concept of patches on a list, only pull requests which require that you pull a new branch in and review it. Once you have to leave your MUA, your efficiency quickly goes down, which is what we're trying to avoid here. > > > >> The only way we can get patch issues resolved is to put a bit more > >>process > >> in place. > >> > > >> >Although I agree, we have to be careful on how github or bitbucket is > >> >used. Having issues or even (e.g. github) pull requests *in addition* > >>to > >> >the normal contribution workflow can be a nightmare to deal with, in > >> >terms of synchronization and preventing double work. So I guess setting > >> >up an official github or bitbucket mirror would be fine, via some > >>simple > >> >cronjob, but I guess it would end-up not using PRs or issues in github > >> >like the Linux kernel does. > >> > >100% agree, we can't be split about this. Allowing contributions from n > >channels just means most developers will only see/reviews 1/nth of the > >patches > >of interest to them. > > If we setup a GitHub or some other site, we would need to make Github the > primary site to remove this type of problem IMO. > > > >> From what I can tell GitHub seems to be a better solution for a free > >>open > >> environment. Bitbucket I have never used and GitHub seems more popular > >> from one article I read. > >> > >> > >>https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF- > >>8# > >> q=bitbucket%20vs%20github > >> > >> > >> >Btw, is this github organization already registered by Intel or some > >> >other company of the community? > >> > > >> >https://github.com/dpdk > >> > > > I was hoping someone would own up to the GitHub dpdk site. > Hmm, looks almost defunct. If no one steps up, perhaps reporting abuse for camping on the name might be worthwhile? That would at least get their attention. Neil ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 10:29 ` Neil Horman @ 2015-04-27 13:50 ` Wiles, Keith 2015-04-27 15:23 ` Neil Horman 0 siblings, 1 reply; 58+ messages in thread From: Wiles, Keith @ 2015-04-27 13:50 UTC (permalink / raw) To: Neil Horman; +Cc: dev On 4/27/15, 5:29 AM, "Neil Horman" <nhorman@tuxdriver.com> wrote: >On Mon, Apr 27, 2015 at 01:41:11AM +0000, Wiles, Keith wrote: >> >> >> On 4/26/15, 4:56 PM, "Neil Horman" <nhorman@tuxdriver.com> wrote: >> >> >On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: >> >> >> >> >> >> On 4/25/15, 8:30 AM, "Marc Sune" <marc.sune@bisdn.de> wrote: >> >> >> >> > >> >> > >> >> >On 24/04/15 19:51, Matthew Hall wrote: >> >> >> On Fri, Apr 24, 2015 at 12:39:47PM -0500, Jay Rolette wrote: >> >> >>> I can tell you that if DPDK were GPL-based, my company wouldn't >>be >> >> >>>using >> >> >>> it. I suspect we wouldn't be the only ones... >> >> >>> >> >> >>> Jay >> >> >> I could second this, from the past employer where I used it. Right >> >>now >> >> >>I am >> >> >> using it in an open source app, I have a bit of GPL here and there >> >>but >> >> >>I'm >> >> >> trying to get rid of it or confine it to separate address spaces, >> >>where >> >> >>it >> >> >> won't impact the core code written around DPDK, as I don't want to >> >>cause >> >> >> headaches for any downstream users I attract someday. >> >> >> >> >> >> Hard-core GPL would not be possible for most. LGPL could be >>possible, >> >> >>but I >> >> >> don't think it could be worth the relicensing headache for that >>small >> >> >>change. >> >> >> >> >> >> Instead we should make the patch process as easy as humanly >>possible >> >>so >> >> >>people >> >> >> are encouraged to send us the fixes and not cart them around their >> >> >>companies >> >> >> constantly. >> >> >> >> +1 and besides the GPL or LGPL ship has sailed IMHO and we can not go >> >>back. >> >Actually, IANAL, but I think we can. The BSD license allows us to fork >> >and >> >relicense the code I think, under GPL or any other license. I'm not >> >advocating >> >for that mind you, just suggesting that its possible should it ever >>become >> >needed. >> > >> >> > >> >> >I agree. My feeling is that as the number of patches in the mailing >> >>list >> >> >grows, keeping track of them gets more and more complicated. >>Patchwork >> >> >website was a way to try to address this issue. I think it was an >> >> >improvement, but to be honest, patchwork lacks a lot of >>functionality, >> >> >such as properly tracking multiple versions of the patch >>(superseding >> >> >them automatically), and it lacks some filtering capabilities e.g. >>per >> >> >user, per tag/label or library, automatically track if it has been >> >> >merged, give an overall status of the pending vs merged patches, set >> >> >milestones... Is there any alternative tool or improved version for >> >>that? >> >> >> >Agreed, this has come up before, off list unfortunately. The volume of >> >patches >> >seems to be increasing at such a rate that a single maintainer has >> >difficulty >> >keeping up. I proposed that the workload be split out to multiple >> >subtrees, >> >with prefixes being added to patch subjects on the list for local >> >filtering to >> >stem the tide. Specifically I had proposed that the PMD's be split >>into a >> >separate subtree, but that received pushback in favor of having each >> >library >> >having its own separate subtree, with a pilot program being made out of >> >the I40e >> >driver (which you might note sends pull requests to the list now). I'd >> >still >> >like to see all PMD's come under a single subtree, but thats likely an >> >argument >> >for later. >> > >> >That said, Do you think that this patch latency is really a contributor >> >to low >> >project participation? It definately a problem, but it seems to me >>that >> >this >> >sort of issue would lead to people trying to parcitipate, then giving >>up >> >(i.e. >> >we would see 1-2 emails from an individual, then not see them again). >> >I'd need >> >to look through the mailing list for such a pattern, but anecdotally >>I've >> >not >> >seen that happen. The problem you describe above is definately a >> >problem, but >> >its one for those individuals who are participating, not for those who >>are >> >simply choosing not to. And I think we need to address both. >> > >> >> I agree patchwork has some limitation, but I think the biggest issue >>is >> >> keeping up with the patches. Getting patches introduced into the main >> >>line >> >> is very slow. A patch submitted today may not get applied for weeks >>or >> >> months, then when another person submits a patch he is starting to >>run a >> >> very high risk of having to redo that patch, because a pervious patch >> >> makes his fail weeks/months later. I would love to see a better tool >> >>then >> >> patchwork, but the biggest issue is we have a huge backlog of >>patches. >> >> Personally I am not sure how Thomas or any is able to keep up with >>the >> >> patches. >> >> >> >This is absolutely a problem. I'd like to think, more than a tool like >> >patchwork, a subtree organization to allow some modicum of parallel >> >review and >> >integration would really be a benefit here. >> Subtrees could work, but the real problem I think is the number of >> committers must be higher then one. Something like GitHub (and I assume >> Linux Foundation) have a method to add committers to a project. In the >> case of GitHub they just have to have a free GitHub account and they can >> become committers of the project buying the owner of the project enables >> them. >> >> On GitHub they have personal accounts and organization accounts I know >> only about the personal accounts, but they allow for 5 private repos and >> any number of public repos. The organization account has a lot of extra >> features that seem better for a DPDK community IMO and should be the one >> we use if we decide it is the right direction. We can always give it a >> shot for while and keep the dpdk.org and use dev@dpdk.org and its repo >> mirrored from GitHub as a transition phase. This way we can fall back to >> dpdk.org or move one to something else if we like. >> >> https://help.github.com/categories/organizations/ >> >> The developers could still send patches via email list, but creating a >> repo and forking dpdk is easy, then send a pull request. >> >I'm not opposed to github per-se, but nothing described above is unique to >github. Theres no reason we can't allow multiple comitters to the current >tree >as hosted on the current server, we just have to configure it as such. > >And FWIW, the assumption is that, with multiple subtrees, you implicitly >have >multiple comitters, assuming that pull requests from those subtree >maintainers >are trusted by the top level tree maintainer. > >In fact I feel somewhat better about that model as it provides a nice >stairstep >integration path for new features. > >Not explicitly opposed to a movement to github, I just feel like it may >not >address the problem at hand. As I see your concerns is creating multiple repos or splitting up the current repo, which can be done in a single GitHub org account and they all appear on the page. This way we can move the current other repos like Pktgen to this location and everyone sees all of the repos in a much easier way IMO. The org account at GitHub gives you the multiple committers and even teams. I see we only need one team today for DPDK repo and then we have something like Pktgen as a different team and so on. > >> >> > >> >> The other problem I see is how patches are agreed on to be included >>in >> >>the >> >> mainline. Today it is just an ACK or a NAK on the mailing list. Then >>I >> >>see >> >> what I think to be only a few people ACKing or NAKing patches. This >> >> process has a lot of problems from a patch being ignore for some >>reason >> >>or >> >> someone having negative feed back on very minor detail or no way to >> >>push a >> >> patch forward a single NAK or comment. >> >> >> > >> >So, this is an interesting issue in ideal meritocracies. Currently >> >is/should be >> >looking for ACKs/NAK/s from the individuals listed in the MAINTAINER >> >files, and >> >those people should be the definitive subject matter experts on the >>code >> >they >> >cover. As such, I would agrue that they should be entitled to a >>modicum >> >of >> >stylistic/trivial leeway. That is to say, if they choose to block a >>patch >> >around a very minor detail, then between them changing their position, >> >and the >> >patch author changing the code, the latter is likely the easier course >>of >> >action, especially if the author can't make an argument for their >> >position. >> >That said, if such patch blockage becomes so egregious that individuals >> >stop >> >contributing, that needs to be known as well. If you as a patch >>author: >> > >> >1) Have tried to submit patches >> >2) Had them blocked for what you consider trivial reasons >> >3) Plan to not contribute further because of this >> >4) Still rely on the DPDK for your product >> > >> >Please, say something. People in charge need to know when they're >>pushing >> >contributors away. >> > >> >FWIW, I've tried to do some correlation between the git history and the >> >mailing >> >list. I need to do more searches, but I have a feeling that early on, >>the >> >majority of people who stopped contributing, did so because their >>patches >> >weren't expressely blocked, but rather because they were simply >>ignored. >> >No one >> >working on DPDK bothered to review those patches, and so they never got >> >merged. >> >Hopefully that problem has been addressed somewhat now. >> > >> >> I would like to see some type of layering process to allow patches >>to be >> >> applied in a timely manner a few weeks not months or completely >>ignored. >> >> Maybe some type of voting is reasonable, but we need to do something >>to >> >> turn around the patches in clean reasonable manner. >> >> >> >> Think we need some type of group meeting every week to look at the >> >>patches >> >> and determining which ones get applied, this gives quick feedback to >>the >> >> submitter as to the status of the patch. >> >> >> >I think a group meeting is going to be way too much overhead to manage >> >properly. >> >You'll get different people every week with agenda that may not line up >> >with >> >code quality, which is really what the review is meant to provide. I >> >think >> >> I was only suggesting the maintainers attend the meeting. Of course they >> have to attend or have someone attend for them, just to get the voting >> done. If you do not attend then you do not get to vote or something like >> that is reasonable. Not that we should try and define the process here. >> >If you use multiple subtrees, theres no need for a meeting, or any sort of >defiend process for voting, theres only an implicitly defined heirarchy of >acceptance in bundled changesets. If a desire of the community is to see >more >efficient review and lower changeset acceptance latency, it seems to be >that a >weekly meeting of any sort is somewhat anathema to that. That is fine if you do not want a meeting, but just trying to figure out the best solution to the problems. > >> >perhaps a better approach would be to require that that code owners >>from >> >the >> >maintainer file provide and ACK/NAK on their patches within 3-4 days, >>and >> >require a corresponding tree maintainer to apply the patch within 7 or >> >so. That >> >would cap our patch latency. Likewise, if a patch slips in creating a >> >regression, the author needs to be alerted and given a time window in >> >which to >> >fix the problem before the offending patch is reverted during the QE >> >cycle. >> > >> > >> >> > >> >> >On the other side, since user questions, community discussions and >> >> >development happens in the same mailing list, things get really >> >> >complicated, specially for users seeking for help. Even though I >>think >> >> >the average skills of the users of DPDK is generally higher than in >> >> >other software projects, if DPDK wants to attract more users, >>having a >> >> >better user support is key, IMHO. >> >> > >> >> >So I would see with good eyes a separation between, at least, >>dpdk-user >> >> >and dpdk-dev. >> >> >> >I wouldn't argue with this separation, seems like a reasonable >>approach. >> > >> >> I do not remember seeing too many users on the list and making a list >> >>just >> >> for then is OK if everyone is fine with a list that has very few >>emails. >> >> > >> >> >If the number of patches keeps growing, splitting the "dev" mailing >> >> >lists into different categories (eal and common, pmds, higher level >> >> >abstractions...) could be an option. However, this last point opens >>a >> >> >lot of questions on how to minimize interference between the >>different >> >> >parts and API/ABI compatibility during the development. >> >> >> >> I believe if we just make sure we use tags in the subject line then >>we >> >>can >> >> have our email clients do the splitting of the emails instead of >>adding >> >> more emails lists. >> >> >> >Agreed >> > >> >> > >> >> >> >> >> >> Perhaps it means having some ReviewBoard type of tools, a clone in >> >> >>Github or >> >> >> Bitbucket where the less hardcore kernel-workflow types could send >> >>back >> >> >>their >> >> >> small bug fixes a bit more easily, this kind of stuff. Google has >> >>been >> >> >>getting >> >> >> good uptake since they moved most of their open source across to >> >>Github, >> >> >> because the contribution workflow was more convenient than Google >> >>Code >> >> >>was. >> >> >> >> I like GitHub it is a much better designed tool then patchwork, plus >>it >> >> could get more eyes as it is very well know to the developer >>community >> >>in >> >> general. I feel GitHub has many advantages over the current systems >>in >> >> place but, it does not solve the all patch issues. >> >> >> >Github is actually a bit irritating for this sort of thing, as it >> >presumes a web >> >based interface for discussion. They have some modicum of email >> >forwarding >> >enabled, but it has never quite worked right, or integrated properly. >> >> Email forwarding has seemed to work for me and in one case it took a bit >> to have GitHub stop sending me emails on a repo I did not want anymore >>:-) > >Forwarding works fine, its responding that doesn't usually work well. >Emails >from pull requests and issues are forwarded from a 'do not reply' address >and >responding requires that you visit the github page in a browser. Thats >especially trying with patch review, as there is no real concept of >patches on a >list, only pull requests which require that you pull a new branch in and >review >it. Once you have to leave your MUA, your efficiency quickly goes down, >which >is what we're trying to avoid here. OK, I see your point and yes that could be an issue, but not a huge impact in efficiency IMO. Not everyone and not all of the time will you need to go to the web site. > > >> > >> >> The only way we can get patch issues resolved is to put a bit more >> >>process >> >> in place. >> >> > >> >> >Although I agree, we have to be careful on how github or bitbucket >>is >> >> >used. Having issues or even (e.g. github) pull requests *in >>addition* >> >>to >> >> >the normal contribution workflow can be a nightmare to deal with, in >> >> >terms of synchronization and preventing double work. So I guess >>setting >> >> >up an official github or bitbucket mirror would be fine, via some >> >>simple >> >> >cronjob, but I guess it would end-up not using PRs or issues in >>github >> >> >like the Linux kernel does. >> >> >> >100% agree, we can't be split about this. Allowing contributions from >>n >> >channels just means most developers will only see/reviews 1/nth of the >> >patches >> >of interest to them. >> >> If we setup a GitHub or some other site, we would need to make Github >>the >> primary site to remove this type of problem IMO. >> > >> >> From what I can tell GitHub seems to be a better solution for a free >> >>open >> >> environment. Bitbucket I have never used and GitHub seems more >>popular >> >> from one article I read. >> >> >> >> >> >>>>https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UT >>>>F- >> >>8# >> >> q=bitbucket%20vs%20github >> >> >> >> >> >> >Btw, is this github organization already registered by Intel or some >> >> >other company of the community? >> >> > >> >> >https://github.com/dpdk >> >> > >> >> I was hoping someone would own up to the GitHub dpdk site. >> >Hmm, looks almost defunct. If no one steps up, perhaps reporting abuse >for >camping on the name might be worthwhile? That would at least get their >attention. +1 > >Neil > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 13:50 ` Wiles, Keith @ 2015-04-27 15:23 ` Neil Horman 0 siblings, 0 replies; 58+ messages in thread From: Neil Horman @ 2015-04-27 15:23 UTC (permalink / raw) To: Wiles, Keith; +Cc: dev On Mon, Apr 27, 2015 at 01:50:17PM +0000, Wiles, Keith wrote: >> >> > >> >This is absolutely a problem. I'd like to think, more than a tool like > >> >patchwork, a subtree organization to allow some modicum of parallel > >> >review and > >> >integration would really be a benefit here. > >> Subtrees could work, but the real problem I think is the number of > >> committers must be higher then one. Something like GitHub (and I assume > >> Linux Foundation) have a method to add committers to a project. In the > >> case of GitHub they just have to have a free GitHub account and they can > >> become committers of the project buying the owner of the project enables > >> them. > >> > >> On GitHub they have personal accounts and organization accounts I know > >> only about the personal accounts, but they allow for 5 private repos and > >> any number of public repos. The organization account has a lot of extra > >> features that seem better for a DPDK community IMO and should be the one > >> we use if we decide it is the right direction. We can always give it a > >> shot for while and keep the dpdk.org and use dev@dpdk.org and its repo > >> mirrored from GitHub as a transition phase. This way we can fall back to > >> dpdk.org or move one to something else if we like. > >> > >> https://help.github.com/categories/organizations/ > >> > >> The developers could still send patches via email list, but creating a > >> repo and forking dpdk is easy, then send a pull request. > >> > >I'm not opposed to github per-se, but nothing described above is unique to > >github. Theres no reason we can't allow multiple comitters to the current > >tree > >as hosted on the current server, we just have to configure it as such. > > > >And FWIW, the assumption is that, with multiple subtrees, you implicitly > >have > >multiple comitters, assuming that pull requests from those subtree > >maintainers > >are trusted by the top level tree maintainer. > > > >In fact I feel somewhat better about that model as it provides a nice > >stairstep > >integration path for new features. > > > >Not explicitly opposed to a movement to github, I just feel like it may > >not > >address the problem at hand. > > As I see your concerns is creating multiple repos or splitting up the > current repo, which can be done in a single GitHub org account and they > all appear on the page. This way we can move the current other repos like > Pktgen to this location and everyone sees all of the repos in a much > easier way IMO. The org account at GitHub gives you the multiple > committers and even teams. I see we only need one team today for DPDK repo > and then we have something like Pktgen as a different team and so on. > > But again, we have, and do this now: http://dpdk.org/browse/ There are seveal git repositories there, all related to the dpdk, hosted on the current site. All we need to do is expand our use of subtrees. We don't have to move the product to a new location to make that happen. Neil ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-26 21:56 ` Neil Horman 2015-04-27 2:29 ` Jim Thompson [not found] ` <D162FA4E.1DED8%keith.wiles@intel.com> @ 2015-04-27 12:38 ` Dave Neary 2015-04-27 13:41 ` Neil Horman 2015-04-27 16:09 ` Stephen Hemminger 2 siblings, 2 replies; 58+ messages in thread From: Dave Neary @ 2015-04-27 12:38 UTC (permalink / raw) To: Neil Horman, Wiles, Keith; +Cc: dev Hi, On 04/26/2015 05:56 PM, Neil Horman wrote: > On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: >> I would like to see some type of layering process to allow patches to be >> applied in a timely manner a few weeks not months or completely ignored. >> Maybe some type of voting is reasonable, but we need to do something to >> turn around the patches in clean reasonable manner. >> >> Think we need some type of group meeting every week to look at the patches >> and determining which ones get applied, this gives quick feedback to the >> submitter as to the status of the patch. >> > I think a group meeting is going to be way too much overhead to manage properly. > You'll get different people every week with agenda that may not line up with > code quality, which is really what the review is meant to provide. I think > perhaps a better approach would be to require that that code owners from the > maintainer file provide and ACK/NAK on their patches within 3-4 days, and > require a corresponding tree maintainer to apply the patch within 7 or so. That > would cap our patch latency. Likewise, if a patch slips in creating a > regression, the author needs to be alerted and given a time window in which to > fix the problem before the offending patch is reverted during the QE cycle. What Keith is describing is very similar to a change management/change control board you might find for production/IT processes: http://en.wikipedia.org/wiki/Change_control_board An efficient change management board approves "low overhead" changes automatically/very quickly, and focusses on the 10% of changes which could be disruptive (and what disruptive means changes from one environment to another) - for code it would be any patches that potentially conflict, anything that could cause regressions, add instability or uncertainty, and any feature which can be implemented multiple ways. Not saying this would work - I have never seen an open source project implement a change management process for handling patches, and instinctively I agree with you Neil that it would be a lot of overhead, but it's an interesting thought exercise to think how it might work. Thanks, Dave. -- Dave Neary - NFV/SDN Community Strategy Open Source and Standards, Red Hat - http://community.redhat.com Ph: +1-978-399-2182 / Cell: +1-978-799-3338 ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 12:38 ` Dave Neary @ 2015-04-27 13:41 ` Neil Horman 2015-04-27 16:09 ` Stephen Hemminger 1 sibling, 0 replies; 58+ messages in thread From: Neil Horman @ 2015-04-27 13:41 UTC (permalink / raw) To: Dave Neary; +Cc: dev On Mon, Apr 27, 2015 at 08:38:48AM -0400, Dave Neary wrote: > Hi, > > On 04/26/2015 05:56 PM, Neil Horman wrote: > > On Sat, Apr 25, 2015 at 04:08:23PM +0000, Wiles, Keith wrote: > >> I would like to see some type of layering process to allow patches to be > >> applied in a timely manner a few weeks not months or completely ignored. > >> Maybe some type of voting is reasonable, but we need to do something to > >> turn around the patches in clean reasonable manner. > >> > >> Think we need some type of group meeting every week to look at the patches > >> and determining which ones get applied, this gives quick feedback to the > >> submitter as to the status of the patch. > >> > > I think a group meeting is going to be way too much overhead to manage properly. > > You'll get different people every week with agenda that may not line up with > > code quality, which is really what the review is meant to provide. I think > > perhaps a better approach would be to require that that code owners from the > > maintainer file provide and ACK/NAK on their patches within 3-4 days, and > > require a corresponding tree maintainer to apply the patch within 7 or so. That > > would cap our patch latency. Likewise, if a patch slips in creating a > > regression, the author needs to be alerted and given a time window in which to > > fix the problem before the offending patch is reverted during the QE cycle. > > What Keith is describing is very similar to a change management/change > control board you might find for production/IT processes: > http://en.wikipedia.org/wiki/Change_control_board > > An efficient change management board approves "low overhead" changes > automatically/very quickly, and focusses on the 10% of changes which > could be disruptive (and what disruptive means changes from one > environment to another) - for code it would be any patches that > potentially conflict, anything that could cause regressions, add > instability or uncertainty, and any feature which can be implemented > multiple ways. > > Not saying this would work - I have never seen an open source project > implement a change management process for handling patches, and > instinctively I agree with you Neil that it would be a lot of overhead, > but it's an interesting thought exercise to think how it might work. > I take you're meaning Dave, and it is an interesting thought experiment. how would such a change control board mesh with a public review list however? That is to say, would such a voting board not insulate decision makers from community participation? Perhaps I'm mistaken there, but it seems like allowing a small group of maintainers make acceptance decisions in a private meeting would insulate them from individual accountability on a list. Neil > Thanks, > Dave. > > -- > Dave Neary - NFV/SDN Community Strategy > Open Source and Standards, Red Hat - http://community.redhat.com > Ph: +1-978-399-2182 / Cell: +1-978-799-3338 > ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 12:38 ` Dave Neary 2015-04-27 13:41 ` Neil Horman @ 2015-04-27 16:09 ` Stephen Hemminger 1 sibling, 0 replies; 58+ messages in thread From: Stephen Hemminger @ 2015-04-27 16:09 UTC (permalink / raw) To: Dave Neary; +Cc: dev On Mon, 27 Apr 2015 08:38:48 -0400 Dave Neary <dneary@redhat.com> wrote: > What Keith is describing is very similar to a change management/change > control board you might find for production/IT processes: > http://en.wikipedia.org/wiki/Change_control_board > > An efficient change management board approves "low overhead" changes > automatically/very quickly, and focusses on the 10% of changes which > could be disruptive (and what disruptive means changes from one > environment to another) - for code it would be any patches that > potentially conflict, anything that could cause regressions, add > instability or uncertainty, and any feature which can be implemented > multiple ways. > > Not saying this would work - I have never seen an open source project > implement a change management process for handling patches, and > instinctively I agree with you Neil that it would be a lot of overhead, > but it's an interesting thought exercise to think how it might work ZMQ has a community process with a simple review process and a "default YES" policy. http://rfc.zeromq.org/spec:22 ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 17:39 ` Jay Rolette 2015-04-24 17:51 ` Matthew Hall @ 2015-04-24 18:12 ` Matt Laswell 2015-04-24 18:51 ` Neil Horman 1 sibling, 1 reply; 58+ messages in thread From: Matt Laswell @ 2015-04-24 18:12 UTC (permalink / raw) To: dev On Fri, Apr 24, 2015 at 12:39 PM, Jay Rolette <rolette@infiniteio.com> wrote: > > I can tell you that if DPDK were GPL-based, my company wouldn't be using > it. I suspect we wouldn't be the only ones... > I want to emphasize this point. It's unsurprising that Jay and I agree, since we work together. But I can say with quite a bit of confidence that my last employer also would stop using DPDK if it were GPL licensed. Or, if they didn't jettison it entirely, they would never move beyond the last BSD-licensed version. If you want to incentivize companies to support DPDK, the first step is to ensure they're using it. For that reason, GPL seems like a step in the wrong direction to me. - Matt ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 18:12 ` Matt Laswell @ 2015-04-24 18:51 ` Neil Horman 2015-04-24 19:55 ` Jay Rolette 0 siblings, 1 reply; 58+ messages in thread From: Neil Horman @ 2015-04-24 18:51 UTC (permalink / raw) To: Matt Laswell; +Cc: dev On Fri, Apr 24, 2015 at 01:12:13PM -0500, Matt Laswell wrote: > On Fri, Apr 24, 2015 at 12:39 PM, Jay Rolette <rolette@infiniteio.com> > wrote: > > > > I can tell you that if DPDK were GPL-based, my company wouldn't be using > > it. I suspect we wouldn't be the only ones... > > > > I want to emphasize this point. It's unsurprising that Jay and I agree, > since we work together. But I can say with quite a bit of confidence that > my last employer also would stop using DPDK if it were GPL licensed. Or, > if they didn't jettison it entirely, they would never move beyond the last > BSD-licensed version. If you want to incentivize companies to support > DPDK, the first step is to ensure they're using it. For that reason, GPL > seems like a step in the wrong direction to me. > > - Matt > So, I hear your arguments, and its understandable that you might not want a GPL licensed product, given that the DPDK is a library (though I'm not sure what the aversion to LGPL would be). Regardless, I think this conversation is a bit more about participation than license choice. While you are correct, in that the first step to support (by which I presume you mean participation in the community) is use, the goal here is to get people contributing patches and helping increase the usefulness of DPDK. Given that DPDK is primarily licensed as BSD now, whats preventing you, or what would encourage you to participate in the community? I see emails from infiniteio addresss in the archives asking questions and making suggestions on occasion, but no patches. What would get you (or others in a simmilar situation) to submit those? Neil ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 18:51 ` Neil Horman @ 2015-04-24 19:55 ` Jay Rolette 2015-04-25 12:10 ` Neil Horman 0 siblings, 1 reply; 58+ messages in thread From: Jay Rolette @ 2015-04-24 19:55 UTC (permalink / raw) To: Neil Horman; +Cc: dev On Fri, Apr 24, 2015 at 1:51 PM, Neil Horman <nhorman@tuxdriver.com> wrote: > So, I hear your arguments, and its understandable that you might not want > a GPL > licensed product, given that the DPDK is a library (though I'm not sure > what the > aversion to LGPL would be). Regardless, I think this conversation is a > bit more > about participation than license choice. While you are correct, in that > the > first step to support (by which I presume you mean participation in the > community) is use, the goal here is to get people contributing patches and > helping increase the usefulness of DPDK. > Given that DPDK is primarily licensed as BSD now, whats preventing you, or > what > would encourage you to participate in the community? I see emails from > infiniteio addresss in the archives asking questions and making > suggestions on > occasion, but no patches. What would get you (or others in a simmilar > situation) to submit those? > 36 hours in the day? :) It's not a lot, but we've submitted a couple of small patches. It's mostly a matter of opportunity. We submit patches as we come across DPDK bugs or find useful optos. *Patches* - replaced O(n^2) sort in sort_by_physaddr() with qsort() from standard library <http://dpdk.org/dev/patchwork/patch/1955/> - Fixed spam from kni_allocate_mbufs() when no mbufs are free. If mbufs exhausted, 'out of memory' message logged at EXTREMELY high rates. Now logs no more than once per 10 mins <http://dpdk.org/dev/patchwork/patch/2062/> *Reviews* - kni: optimizing the rte_kni_rx_burst <http://dpdk.org/dev/patchwork/patch/84/> - [PATCH RFC] librte_reorder: new reorder library <http://www.dpdk.io/ml/archives/dev/2014-October/006767.html> - [PATCH v2 09/17] i40e: clean log messages <http://dpdk.org/ml/archives/dev/2014-September/005133.html> (several in that series, but I figure 1 link is plenty) *Other* Not really patches or reviews, but trying to participate in the community: - VMware Fusion + DPDK and KNI <http://dpdk.org/ml/archives/dev/2014-August/004737.html> - Appropriate DPDK data structures for TCP sockets <http://patchwork.dpdk.org/ml/archives/dev/2015-February/013941.html> - kernel: BUG: soft lockup - CPU#1 stuck for 22s! [kni_single:1782] <http://patchwork.dpdk.org/ml/archives/dev/2015-February/013335.html> - segmented recv ixgbevf <http://dpdk.org/ml/archives/dev/2014-November/007621.html> Jay ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 19:55 ` Jay Rolette @ 2015-04-25 12:10 ` Neil Horman 2015-04-27 13:46 ` Jay Rolette 2015-04-28 6:22 ` Matthew Hall 0 siblings, 2 replies; 58+ messages in thread From: Neil Horman @ 2015-04-25 12:10 UTC (permalink / raw) To: Jay Rolette; +Cc: dev On Fri, Apr 24, 2015 at 02:55:33PM -0500, Jay Rolette wrote: > On Fri, Apr 24, 2015 at 1:51 PM, Neil Horman <nhorman@tuxdriver.com> wrote: > > > So, I hear your arguments, and its understandable that you might not want > > a GPL > > licensed product, given that the DPDK is a library (though I'm not sure > > what the > > aversion to LGPL would be). Regardless, I think this conversation is a > > bit more > > about participation than license choice. While you are correct, in that > > the > > first step to support (by which I presume you mean participation in the > > community) is use, the goal here is to get people contributing patches and > > helping increase the usefulness of DPDK. > > > > Given that DPDK is primarily licensed as BSD now, whats preventing you, or > > what > > would encourage you to participate in the community? I see emails from > > infiniteio addresss in the archives asking questions and making > > suggestions on > > occasion, but no patches. What would get you (or others in a simmilar > > situation) to submit those? > > > > 36 hours in the day? :) > > It's not a lot, but we've submitted a couple of small patches. It's mostly > a matter of opportunity. We submit patches as we come across DPDK bugs or > find useful optos. > > *Patches* > > - replaced O(n^2) sort in sort_by_physaddr() with qsort() from standard > library <http://dpdk.org/dev/patchwork/patch/1955/> > - Fixed spam from kni_allocate_mbufs() when no mbufs are free. If mbufs > exhausted, 'out of memory' message logged at EXTREMELY high rates. Now logs > no more than once per 10 mins <http://dpdk.org/dev/patchwork/patch/2062/> > > *Reviews* > > - kni: optimizing the rte_kni_rx_burst > <http://dpdk.org/dev/patchwork/patch/84/> > - [PATCH RFC] librte_reorder: new reorder library > <http://www.dpdk.io/ml/archives/dev/2014-October/006767.html> > - [PATCH v2 09/17] i40e: clean log messages > <http://dpdk.org/ml/archives/dev/2014-September/005133.html> (several in > that series, but I figure 1 link is plenty) > > *Other* > Not really patches or reviews, but trying to participate in the community: > > - VMware Fusion + DPDK and KNI > <http://dpdk.org/ml/archives/dev/2014-August/004737.html> > - Appropriate DPDK data structures for TCP sockets > <http://patchwork.dpdk.org/ml/archives/dev/2015-February/013941.html> > - kernel: BUG: soft lockup - CPU#1 stuck for 22s! [kni_single:1782] > <http://patchwork.dpdk.org/ml/archives/dev/2015-February/013335.html> > - segmented recv ixgbevf > <http://dpdk.org/ml/archives/dev/2014-November/007621.html> > > Jay Understand, I'm not trying to single you out here. I see that you, and others from infiniteio have had some participation in the project, and thats great, and appreciated. I'm more focused on why that level of participation is not higher (not only from you, but from the larger presumed user base in general). As noted at the start of this thread, one of the goals of this discussion is to find ways to maximize participation in the project, and from you I'm hearing that: 1) you use the dpdk because it lowers maintenence overhead 2) you don't participate more in the project because your product work schedule doesn't allow you to do so. Are those both accurate statements? Can we also assume, for the sake of discussion that you have encountered problems, or desired additions to the DPDK, for which you have implemented your own code in the library that is not contributed back to the DPDK? If that is true, perhaps part of this conversation needs to revolve around the tangible benefits of contributing that code back to the upstream project (the aforementioned reduction of overhead) as well as the intangible (thought leadership as the project develops). Its been my experience, that these situations often arise because management at a company often places a strong bias on development of their product over participation in the open source portion of it, treating the latter as if they are a customer of it, rather than a participant in it, and it would be my desire to see that bias adjusted so as to allow you greater freedom to participate in the project. Would you agree to that assessment? If so, how would you suggest that we, as a community address this, and illustrate the appeal of contribution and participation to your company and the benefits thereof? Best Neil ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-25 12:10 ` Neil Horman @ 2015-04-27 13:46 ` Jay Rolette 2015-04-28 17:26 ` Neil Horman 2015-04-28 6:22 ` Matthew Hall 1 sibling, 1 reply; 58+ messages in thread From: Jay Rolette @ 2015-04-27 13:46 UTC (permalink / raw) To: Neil Horman; +Cc: dev On Sat, Apr 25, 2015 at 7:10 AM, Neil Horman <nhorman@tuxdriver.com> wrote: > On Fri, Apr 24, 2015 at 02:55:33PM -0500, Jay Rolette wrote: > > On Fri, Apr 24, 2015 at 1:51 PM, Neil Horman <nhorman@tuxdriver.com> > wrote: > > > > > So, I hear your arguments, and its understandable that you might not > want > > > a GPL > > > licensed product, given that the DPDK is a library (though I'm not sure > > > what the > > > aversion to LGPL would be). Regardless, I think this conversation is a > > > bit more > > > about participation than license choice. While you are correct, in > that > > > the > > > first step to support (by which I presume you mean participation in the > > > community) is use, the goal here is to get people contributing patches > and > > > helping increase the usefulness of DPDK. > > > > > > > Given that DPDK is primarily licensed as BSD now, whats preventing > you, or > > > what > > > would encourage you to participate in the community? I see emails from > > > infiniteio addresss in the archives asking questions and making > > > suggestions on > > > occasion, but no patches. What would get you (or others in a simmilar > > > situation) to submit those? > > > > > > > 36 hours in the day? :) > > > > It's not a lot, but we've submitted a couple of small patches. It's > mostly > > a matter of opportunity. We submit patches as we come across DPDK bugs or > > find useful optos. > > > <snip examples> > > Understand, I'm not trying to single you out here. I see that you, and > others > from infiniteio have had some participation in the project, and thats > great, and > appreciated. I'm more focused on why that level of participation is not > higher > (not only from you, but from the larger presumed user base in general). As > noted at the start of this thread, one of the goals of this discussion is > to > find ways to maximize participation in the project, and from you I'm > hearing > that: > > 1) you use the dpdk because it lowers maintenence overhead > 2) you don't participate more in the project because your product work > schedule > doesn't allow you to do so. > > Are those both accurate statements? > (1) was just my response to Luke about what would motivate a company to submit patches if the license didn't require it (GPL vs BSD discussion). Maint overhead had little to do with why we decided to use DPDK. (2) is certainly true enough, but not really all that big of a factor in the reasons why our participation isn't at some higher level. I'd say there are two primary factors: *New Contributors* Dropping a major patch on a project where we have no history would be foolish and frustrating. Every open source project has a vibe to it and its own way of operating. It normally takes some time to figure that out, but for major contributions, it generally involves a level of trust. Major code drops or patches aren't generally well received unless it is from someone that is known and trusted by the community. Building up that trust ("street cred") normally involves participating in smaller, less risky ways. Answering questions where you can, small patches to fix bugs, possibly reviewing code (although this can be iffy as well), etc. This facilitates understanding the process, who the players are and what sort of toes you are likely to step on. It also gives you time to ramp up on the internals of the code and philosophy/goals of the project better. With DPDK, performance is obviously more important than portability. Until recently, very little care was given to API stability or the impact that has on DPDK apps. Both of those are very different approaches than typical and it affects what you might do when approaching submitting a patch. If you want to build up the number of folks contributing, expect them to start small and make sure it actually GOES somewhere. The first patch I submitted in mid-December had some quick responses and questions back-and-forth, but then stalled on a couple of undocumented minor stylistic things (comment style and use of #ifdefs). I never heard anything back and 4.5 months later, a simple startup opto is still sitting there. The second patch I submitted (also mid-December) got no response at all for 4 months. I've replied to the feedback that came eventually, but once again, no subsequent answers. Neither of the patches were important, but the process doesn't exactly inspire a strong desire to contribute more. *Different Goals* I see at least two different sets of people on the mailing list. The heavy hitters generally have a product reason for their high level of involvement with DPDK. For Intel and 6Wind, the reasons are pretty obvious. Same deal with NIC vendors. For large companies, sometimes the reasons are less obvious, but supporting certain open source projects can be strategic for them for several reasons. For this group, improving DPDK itself is important enough to dedicate resources to. It's a goal in and of itself, even if it isn't the main goal. The other group are what I'd call "DPDK users". They picked DPDK because it fit a need they had in their product/project, just like they might pick Linux or FreeBSD, Apache, gcc and any number of libraries. I'm in that second group. DPDK has been tremendously valuable to me, so I'm happy to contribute back where I can, but it isn't my goal. I've got a product to build and DPDK is another piece of the puzzle. The same is true of Linux and all the various libraries we use. The nature of the contributions from those two groups are going to be different. Can we also assume, for the sake of discussion that you have encountered > problems, or desired additions to the DPDK, for which you have implemented > your > own code in the library that is not contributed back to the DPDK? > Yes, there are problems we've hit with DPDK that we haven't fed back the fixes for. We generally do, but sometimes it isn't clear that what we are doing would be considered a general problem. Sometimes we fix things with hacks that work for us, but aren't necessarily a good "real" fix that should go into DPDK. On the "desired additions" bit, it's less clear. Is it product specific or something that is general purpose DPDK-wise? As a startup company, we don't have the luxury yet of being able to spend the time required to refactor subsystems/modules so it can be shared. Hopefully we'll succeed to the point where those discussions are possible :) In the meantime, we do provide feedback on RFCs that come across the mailing list on things where we have experience. Most of that seems to just go in the bit bucket unfortunately. There's not a lot of actual *discussion* / back-and-forth on things here. If that is true, perhaps part of this conversation needs to revolve around > the > tangible benefits of contributing that code back to the upstream project > (the > aforementioned reduction of overhead) as well as the intangible (thought > leadership as the project develops). Its been my experience, that these > situations often arise because management at a company often places a > strong > bias on development of their product over participation in the open source > portion of it, treating the latter as if they are a customer of it, rather > than > a participant in it, and it would be my desire to see that bias adjusted > so as > to allow you greater freedom to participate in the project. > It should be clear from above that yes, we have a strong bias on development of our product. We are a startup with a very finite runway. Just the reality that we live in... There are no executives or senior management telling us we can't contribute more, so that isn't the case for us. However, it certainly could be at other companies. One thing I'd describe differently as a "DPDK user" is the notion of treating it as a customer. Treating it as a customer implies there are expectations of (or support contracts for) things being fixed, features being added, etc. I believe we treat it like we do any other open source project. If we run into problems, we search for answers and if we don't find anything, we ask the community in case someone else can help. When others ask for help, we help when we can. Our ability to do so grows over time. Would you agree to that assessment? If so, how would you suggest that we, > as a > community address this, and illustrate the appeal of contribution and > participation to your company and the benefits thereof? > Hopefully my comments above address your questions and what I see as the reasons. Cheers, Jay ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-27 13:46 ` Jay Rolette @ 2015-04-28 17:26 ` Neil Horman 2015-04-28 20:02 ` Jay Rolette 0 siblings, 1 reply; 58+ messages in thread From: Neil Horman @ 2015-04-28 17:26 UTC (permalink / raw) To: Jay Rolette; +Cc: dev On Mon, Apr 27, 2015 at 08:46:01AM -0500, Jay Rolette wrote: > On Sat, Apr 25, 2015 at 7:10 AM, Neil Horman <nhorman@tuxdriver.com> wrote: > > > On Fri, Apr 24, 2015 at 02:55:33PM -0500, Jay Rolette wrote: > > > On Fri, Apr 24, 2015 at 1:51 PM, Neil Horman <nhorman@tuxdriver.com> > > wrote: > > > > > > > So, I hear your arguments, and its understandable that you might not > > want > > > > a GPL > > > > licensed product, given that the DPDK is a library (though I'm not sure > > > > what the > > > > aversion to LGPL would be). Regardless, I think this conversation is a > > > > bit more > > > > about participation than license choice. While you are correct, in > > that > > > > the > > > > first step to support (by which I presume you mean participation in the > > > > community) is use, the goal here is to get people contributing patches > > and > > > > helping increase the usefulness of DPDK. > > > > > > > > > > Given that DPDK is primarily licensed as BSD now, whats preventing > > you, or > > > > what > > > > would encourage you to participate in the community? I see emails from > > > > infiniteio addresss in the archives asking questions and making > > > > suggestions on > > > > occasion, but no patches. What would get you (or others in a simmilar > > > > situation) to submit those? > > > > > > > > > > 36 hours in the day? :) > > > > > > It's not a lot, but we've submitted a couple of small patches. It's > > mostly > > > a matter of opportunity. We submit patches as we come across DPDK bugs or > > > find useful optos. > > > > > > <snip examples> > > > > > Understand, I'm not trying to single you out here. I see that you, and > > others > > from infiniteio have had some participation in the project, and thats > > great, and > > appreciated. I'm more focused on why that level of participation is not > > higher > > (not only from you, but from the larger presumed user base in general). As > > noted at the start of this thread, one of the goals of this discussion is > > to > > find ways to maximize participation in the project, and from you I'm > > hearing > > that: > > > > 1) you use the dpdk because it lowers maintenence overhead > > 2) you don't participate more in the project because your product work > > schedule > > doesn't allow you to do so. > > > > Are those both accurate statements? > > > > (1) was just my response to Luke about what would motivate a company to > submit patches if the license didn't require it (GPL vs BSD discussion). > Maint overhead had little to do with why we decided to use DPDK. > > (2) is certainly true enough, but not really all that big of a factor in > the reasons why our participation isn't at some higher level. I'd say there > are two primary factors: > > *New Contributors* > Dropping a major patch on a project where we have no history would be > foolish and frustrating. Every open source project has a vibe to it and its > own way of operating. It normally takes some time to figure that out, but > for major contributions, it generally involves a level of trust. > > Major code drops or patches aren't generally well received unless it is > from someone that is known and trusted by the community. Building up that > trust ("street cred") normally involves participating in smaller, less > risky ways. Answering questions where you can, small patches to fix bugs, > possibly reviewing code (although this can be iffy as well), etc. > > This facilitates understanding the process, who the players are and what > sort of toes you are likely to step on. > > It also gives you time to ramp up on the internals of the code and > philosophy/goals of the project better. With DPDK, performance is obviously > more important than portability. Until recently, very little care was given > to API stability or the impact that has on DPDK apps. Both of those are > very different approaches than typical and it affects what you might do > when approaching submitting a patch. > > If you want to build up the number of folks contributing, expect them to > start small and make sure it actually GOES somewhere. > > The first patch I submitted in mid-December had some quick responses and > questions back-and-forth, but then stalled on a couple of undocumented > minor stylistic things (comment style and use of #ifdefs). I never heard > anything back and 4.5 months later, a simple startup opto is still sitting > there. > > The second patch I submitted (also mid-December) got no response at all for > 4 months. I've replied to the feedback that came eventually, but once > again, no subsequent answers. > > Neither of the patches were important, but the process doesn't exactly > inspire a strong desire to contribute more. > > *Different Goals* > I see at least two different sets of people on the mailing list. The heavy > hitters generally have a product reason for their high level of involvement > with DPDK. For Intel and 6Wind, the reasons are pretty obvious. Same deal > with NIC vendors. For large companies, sometimes the reasons are less > obvious, but supporting certain open source projects can be strategic for > them for several reasons. > > For this group, improving DPDK itself is important enough to dedicate > resources to. It's a goal in and of itself, even if it isn't the main goal. > > The other group are what I'd call "DPDK users". They picked DPDK because it > fit a need they had in their product/project, just like they might pick > Linux or FreeBSD, Apache, gcc and any number of libraries. > > I'm in that second group. DPDK has been tremendously valuable to me, so I'm > happy to contribute back where I can, but it isn't my goal. I've got a > product to build and DPDK is another piece of the puzzle. The same is true > of Linux and all the various libraries we use. > > The nature of the contributions from those two groups are going to be > different. > So, thank you for your feedback, I think this is tremendously valuable. What I hear you saying here is that while you like the DPDK, you don't feel motivated to make any major contribution to it, because its not really your focus, is that about right? Thinking about that, I would say, thats actually great. Most successful projects thrive off of a healthy community of contributors like you. While we always need people pushing the future of the project forward, we just as importantly need people making sure all the corner cases are tested via regular usage, and any rough edges found during that testing is submitted to fix it. To that end, let me ask you, do you think that most bugs that you find in the DPDK you fix, or do you just report them? Or do you otherwise work around them? If its the first answer great. If its either of the other two, is there in your mind a way we can increase that conversion rate from finding the bug, to fixing the bug? > Can we also assume, for the sake of discussion that you have encountered > > problems, or desired additions to the DPDK, for which you have implemented > > your > > own code in the library that is not contributed back to the DPDK? > > > > Yes, there are problems we've hit with DPDK that we haven't fed back the > fixes for. We generally do, but sometimes it isn't clear that what we are > doing would be considered a general problem. Sometimes we fix things with > hacks that work for us, but aren't necessarily a good "real" fix that > should go into DPDK. > So this, this is the very thing I would like to address. If you were ever curious, or wondered, let me be clear: If you find a bug, we want to see the fix you have for it. Even if its a hack, getting the report and an initial fix gives us data and a starting point to develop a real fix for the issue. Thats mututally beneficial. You get a more robust, maintained fix, and so does everyone else. Plus you get increased recognition as a participant/leader in the community. Always, we always want your code, please never be shy about sharing it. > On the "desired additions" bit, it's less clear. Is it product specific or > something that is general purpose DPDK-wise? As a startup company, we don't > have the luxury yet of being able to spend the time required to refactor > subsystems/modules so it can be shared. Hopefully we'll succeed to the > point where those discussions are possible :) > This is an interesting thing to say. I come from a background in which the conventional wisdom is that open source is the starting point on the path to success (in that it allows for leveraging of the minor bug fixes and maintenence from interested parties, much as you describe yourselves), while the core developers push larger features forward. There also exists the equally prevalent philosophy you describe in which a company has to be successfull, prior to being able to 'afford' to open source a product so to speak. I get the impression that your company belongs more to the latter group. Do you feel like that line of thinking is something that is bound to some immutable nature of your business, or do you feel like discussion, other other education might lead your, or other companies like yours to see open source as more of an investment? > In the meantime, we do provide feedback on RFCs that come across the > mailing list on things where we have experience. Most of that seems to just > go in the bit bucket unfortunately. There's not a lot of actual *discussion* / > back-and-forth on things here. > I completely agree here, more conversation the list about proposed new features would be helpful. > If that is true, perhaps part of this conversation needs to revolve around > > the > > tangible benefits of contributing that code back to the upstream project > > (the > > aforementioned reduction of overhead) as well as the intangible (thought > > leadership as the project develops). Its been my experience, that these > > situations often arise because management at a company often places a > > strong > > bias on development of their product over participation in the open source > > portion of it, treating the latter as if they are a customer of it, rather > > than > > a participant in it, and it would be my desire to see that bias adjusted > > so as > > to allow you greater freedom to participate in the project. > > > > It should be clear from above that yes, we have a strong bias on > development of our product. We are a startup with a very finite runway. > Just the reality that we live in... > Fair enough. > There are no executives or senior management telling us we can't contribute > more, so that isn't the case for us. However, it certainly could be at > other companies. > Agreed, I've worked for several networking startups who all had the mentality that open source was a 'freebie', only as good as what you can take from it, and to which we should never give back, for fear of providing others with competitive advantage. I'm glad thats not you, though I'm a bit concerned that there might be others lurking here for whoom it is true, and I would love to find a way to reach them. > One thing I'd describe differently as a "DPDK user" is the notion of > treating it as a customer. Treating it as a customer implies there are > expectations of (or support contracts for) things being fixed, features > being added, etc. > Right, bad use of language on my part. By customer all I meant was that some users see it as a product for which they have paid $0. When its broken they would typically contact their vendor, but since they have none, they understand that they 'got what they paid for' and work around the various issues. I only meant to imply that a shift from that mentality, that of an 'owner', or some other entitiy that had a reason to help improve the DPDK. > I believe we treat it like we do any other open source project. If we run > into problems, we search for answers and if we don't find anything, we ask > the community in case someone else can help. When others ask for help, we > help when we can. Our ability to do so grows over time. > > Would you agree to that assessment? If so, how would you suggest that we, > > as a > > community address this, and illustrate the appeal of contribution and > > participation to your company and the benefits thereof? > > > > Hopefully my comments above address your questions and what I see as the > reasons. > They have, thank you for your thoughts! Neil > Cheers, > Jay ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-28 17:26 ` Neil Horman @ 2015-04-28 20:02 ` Jay Rolette 0 siblings, 0 replies; 58+ messages in thread From: Jay Rolette @ 2015-04-28 20:02 UTC (permalink / raw) To: Neil Horman; +Cc: dev On Tue, Apr 28, 2015 at 12:26 PM, Neil Horman <nhorman@tuxdriver.com> wrote: > On Mon, Apr 27, 2015 at 08:46:01AM -0500, Jay Rolette wrote: > > On Sat, Apr 25, 2015 at 7:10 AM, Neil Horman <nhorman@tuxdriver.com> > wrote: > > > > > On Fri, Apr 24, 2015 at 02:55:33PM -0500, Jay Rolette wrote: > > > > On Fri, Apr 24, 2015 at 1:51 PM, Neil Horman <nhorman@tuxdriver.com> > > > wrote: > > > > > > > > > So, I hear your arguments, and its understandable that you might > not > > > want > > > > > a GPL > > > > > licensed product, given that the DPDK is a library (though I'm not > sure > > > > > what the > > > > > aversion to LGPL would be). Regardless, I think this conversation > is a > > > > > bit more > > > > > about participation than license choice. While you are correct, in > > > that > > > > > the > > > > > first step to support (by which I presume you mean participation > in the > > > > > community) is use, the goal here is to get people contributing > patches > > > and > > > > > helping increase the usefulness of DPDK. > > > > > > > > > > > > > Given that DPDK is primarily licensed as BSD now, whats preventing > > > you, or > > > > > what > > > > > would encourage you to participate in the community? I see emails > from > > > > > infiniteio addresss in the archives asking questions and making > > > > > suggestions on > > > > > occasion, but no patches. What would get you (or others in a > simmilar > > > > > situation) to submit those? > > > > > > > > > > > > > 36 hours in the day? :) > > > > > > > > It's not a lot, but we've submitted a couple of small patches. It's > > > mostly > > > > a matter of opportunity. We submit patches as we come across DPDK > bugs or > > > > find useful optos. > > > > > > > > > <snip examples> > > > > > > > > Understand, I'm not trying to single you out here. I see that you, and > > > others > > > from infiniteio have had some participation in the project, and thats > > > great, and > > > appreciated. I'm more focused on why that level of participation is not > > > higher > > > (not only from you, but from the larger presumed user base in > general). As > > > noted at the start of this thread, one of the goals of this discussion > is > > > to > > > find ways to maximize participation in the project, and from you I'm > > > hearing > > > that: > > > > > > 1) you use the dpdk because it lowers maintenence overhead > > > 2) you don't participate more in the project because your product work > > > schedule > > > doesn't allow you to do so. > > > > > > Are those both accurate statements? > > > > > > > (1) was just my response to Luke about what would motivate a company to > > submit patches if the license didn't require it (GPL vs BSD discussion). > > Maint overhead had little to do with why we decided to use DPDK. > > > > (2) is certainly true enough, but not really all that big of a factor in > > the reasons why our participation isn't at some higher level. I'd say > there > > are two primary factors: > > > > *New Contributors* > > Dropping a major patch on a project where we have no history would be > > foolish and frustrating. Every open source project has a vibe to it and > its > > own way of operating. It normally takes some time to figure that out, but > > for major contributions, it generally involves a level of trust. > > > > Major code drops or patches aren't generally well received unless it is > > from someone that is known and trusted by the community. Building up that > > trust ("street cred") normally involves participating in smaller, less > > risky ways. Answering questions where you can, small patches to fix bugs, > > possibly reviewing code (although this can be iffy as well), etc. > > > > This facilitates understanding the process, who the players are and what > > sort of toes you are likely to step on. > > > > It also gives you time to ramp up on the internals of the code and > > philosophy/goals of the project better. With DPDK, performance is > obviously > > more important than portability. Until recently, very little care was > given > > to API stability or the impact that has on DPDK apps. Both of those are > > very different approaches than typical and it affects what you might do > > when approaching submitting a patch. > > > > If you want to build up the number of folks contributing, expect them to > > start small and make sure it actually GOES somewhere. > > > > The first patch I submitted in mid-December had some quick responses and > > questions back-and-forth, but then stalled on a couple of undocumented > > minor stylistic things (comment style and use of #ifdefs). I never heard > > anything back and 4.5 months later, a simple startup opto is still > sitting > > there. > > > > The second patch I submitted (also mid-December) got no response at all > for > > 4 months. I've replied to the feedback that came eventually, but once > > again, no subsequent answers. > > > > Neither of the patches were important, but the process doesn't exactly > > inspire a strong desire to contribute more. > > > > *Different Goals* > > I see at least two different sets of people on the mailing list. The > heavy > > hitters generally have a product reason for their high level of > involvement > > with DPDK. For Intel and 6Wind, the reasons are pretty obvious. Same deal > > with NIC vendors. For large companies, sometimes the reasons are less > > obvious, but supporting certain open source projects can be strategic for > > them for several reasons. > > > > For this group, improving DPDK itself is important enough to dedicate > > resources to. It's a goal in and of itself, even if it isn't the main > goal. > > > > The other group are what I'd call "DPDK users". They picked DPDK because > it > > fit a need they had in their product/project, just like they might pick > > Linux or FreeBSD, Apache, gcc and any number of libraries. > > > > I'm in that second group. DPDK has been tremendously valuable to me, so > I'm > > happy to contribute back where I can, but it isn't my goal. I've got a > > product to build and DPDK is another piece of the puzzle. The same is > true > > of Linux and all the various libraries we use. > > > > The nature of the contributions from those two groups are going to be > > different. > > So, thank you for your feedback, I think this is tremendously valuable. > What I > hear you saying here is that while you like the DPDK, you don't feel > motivated > to make any major contribution to it, because its not really your focus, > is that > about right? Thinking about that, I would say, thats actually great. Most > successful projects thrive off of a healthy community of contributors like > you. > While we always need people pushing the future of the project forward, we > just > as importantly need people making sure all the corner cases are tested via > regular usage, and any rough edges found during that testing is submitted > to fix > it. Agreed > To that end, let me ask you, do you think that most bugs that you find in > the DPDK you fix, or do you just report them? Or do you otherwise work > around > them? If its the first answer great. If its either of the other two, is > there > in your mind a way we can increase that conversion rate from finding the > bug, to > fixing the bug? > We either fix them or work-around them. I took a look at our DPDK repository and, ignoring build integration commits, we've made 12 commits to it so far. We are running DPDK 1.6.0r2. I break those down like this: - 6 commits to back-port fixes and enhancements from later versions of DPDK or patches that are pending still - 2 bug fixes/optos that we submitted patches for - 3 bug fixes that we haven't submitted patches for yet - 1 change definitely specific to our app Of the 3 bug fixes we haven't submitted patches for: - fixed a buffer overflow in the IP reassembly code we back-ported from 1.8. We need to submit a patch for this one. - one eliminates a bunch of "irq 0x11" spam in igb_uio when running in VMware Fusion. From what I've seen, it doesn't look like DPDK takes patches for these. - fixed rte_mempool_from_obj() to return non-const to fit with the rest of the rte_mempool APIs So not a lot... On the work-around side of things, it's mostly around port management and KNI. There are also parts of the DPDK library that we don't bother using. Minimally, they aren't suitable for our app. I suspect that is more broadly true than just our case, but you never know. In those cases, we end up rolling our own. Sorry, that's a long way of saying that I think we primarily fix the problems we run into if someone else hasn't already, but I always like having data :) > Can we also assume, for the sake of discussion that you have encountered > > > problems, or desired additions to the DPDK, for which you have > implemented > > > your > > > own code in the library that is not contributed back to the DPDK? > > > > > > > Yes, there are problems we've hit with DPDK that we haven't fed back the > > fixes for. We generally do, but sometimes it isn't clear that what we are > > doing would be considered a general problem. Sometimes we fix things with > > hacks that work for us, but aren't necessarily a good "real" fix that > > should go into DPDK. > > > > So this, this is the very thing I would like to address. If you were ever > curious, or wondered, let me be clear: If you find a bug, we want to see > the > fix you have for it. Even if its a hack, getting the report and an > initial fix > gives us data and a starting point to develop a real fix for the issue. > Thats > mututally beneficial. You get a more robust, maintained fix, and so does > everyone else. Plus you get increased recognition as a participant/leader > in > the community. Always, we always want your code, please never be shy about > sharing it. > Thanks. That's very helpful to know. Normally I'm unlikely to submit a patch unless I know it's rock solid - especially when I'm a relative newcomer. Might be useful to add something to that effect to the dpdk.org website. > > On the "desired additions" bit, it's less clear. Is it product specific > or > > something that is general purpose DPDK-wise? As a startup company, we > don't > > have the luxury yet of being able to spend the time required to refactor > > subsystems/modules so it can be shared. Hopefully we'll succeed to the > > point where those discussions are possible :) > > > This is an interesting thing to say. I come from a background in which the > conventional wisdom is that open source is the starting point on the path > to > success (in that it allows for leveraging of the minor bug fixes and > maintenence > from interested parties, much as you describe yourselves), while the core > developers push larger features forward. There also exists the equally > prevalent philosophy you describe in which a company has to be successfull, > prior to being able to 'afford' to open source a product so to speak. I > get the > impression that your company belongs more to the latter group. Neither really. I should probably clarify my statement a bit... I didn't mean to imply that once we were successful that we'd look at open-sourcing our product. I meant that for pieces and parts that aren't core IP, we should have more flexibility to look at spending the extra effort it takes to share larger patches (features and subsystems). > Do you feel like > that line of thinking is something that is bound to some immutable nature > of > your business, or do you feel like discussion, other other education might > lead > your, or other companies like yours to see open source as more of an > investment? > The former is probably a good way to describe it ("immutable nature of your business"). We are a product company, not a services company. That said, I'm fairly open to discussions, especially over a cold beverage :) > > In the meantime, we do provide feedback on RFCs that come across the > > mailing list on things where we have experience. Most of that seems to > just > > go in the bit bucket unfortunately. There's not a lot of actual > *discussion* / > > back-and-forth on things here. > > > I completely agree here, more conversation the list about proposed new > features > would be helpful. > > > If that is true, perhaps part of this conversation needs to revolve > around > > > the > > > tangible benefits of contributing that code back to the upstream > project > > > (the > > > aforementioned reduction of overhead) as well as the intangible > (thought > > > leadership as the project develops). Its been my experience, that > these > > > situations often arise because management at a company often places a > > > strong > > > bias on development of their product over participation in the open > source > > > portion of it, treating the latter as if they are a customer of it, > rather > > > than > > > a participant in it, and it would be my desire to see that bias > adjusted > > > so as > > > to allow you greater freedom to participate in the project. > > > > > > > It should be clear from above that yes, we have a strong bias on > > development of our product. We are a startup with a very finite runway. > > Just the reality that we live in... > > > Fair enough. > > > There are no executives or senior management telling us we can't > contribute > > more, so that isn't the case for us. However, it certainly could be at > > other companies. > > > Agreed, I've worked for several networking startups who all had the > mentality > that open source was a 'freebie', only as good as what you can take from > it, and > to which we should never give back, for fear of providing others with > competitive advantage. I'm glad thats not you, though I'm a bit concerned > that > there might be others lurking here for whoom it is true, and I would love > to > find a way to reach them. > That's tough to get past, especially with networking equipment vendors. I think the effort you've personally made to push for API stability has the potential to help significantly. DPDK has been notoriously bad about changing interfaces and one side-effect of that is that companies building apps on top of DPDK end up "stuck" at whatever version they started with. It's just too expensive to rewrite and retest everything. In that sort of environment, it really does remove the incentive to push patches back upstream. They just stick with whatever ancient version they have and hack on that because they have been left behind. FWIW, that isn't just theory-craft. I've seen it in action with DPDK at a former employer. Outside of that, make it as easy as you can for them to contribute patches. > > One thing I'd describe differently as a "DPDK user" is the notion of > > treating it as a customer. Treating it as a customer implies there are > > expectations of (or support contracts for) things being fixed, features > > being added, etc. > > > > Right, bad use of language on my part. By customer all I meant was that > some > users see it as a product for which they have paid $0. When its broken > they > would typically contact their vendor, but since they have none, they > understand > that they 'got what they paid for' and work around the various issues. I > only > meant to imply that a shift from that mentality, that of an 'owner', or > some > other entitiy that had a reason to help improve the DPDK. > > > I believe we treat it like we do any other open source project. If we run > > into problems, we search for answers and if we don't find anything, we > ask > > the community in case someone else can help. When others ask for help, we > > help when we can. Our ability to do so grows over time. > > > > Would you agree to that assessment? If so, how would you suggest that > we, > > > as a > > > community address this, and illustrate the appeal of contribution and > > > participation to your company and the benefits thereof? > > > > > > > Hopefully my comments above address your questions and what I see as the > > reasons. > > > They have, thank you for your thoughts! > Neil > Cheers, Jay ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-25 12:10 ` Neil Horman 2015-04-27 13:46 ` Jay Rolette @ 2015-04-28 6:22 ` Matthew Hall 1 sibling, 0 replies; 58+ messages in thread From: Matthew Hall @ 2015-04-28 6:22 UTC (permalink / raw) To: dev On Apr 25, 2015, at 5:10 AM, Neil Horman <nhorman@tuxdriver.com> wrote: > I'm more focused on why that level of participation is not higher Hi Neal, This mail is probably way too long, but here is what I saw about participation, in my case I used DPDK on two projects so far: 1) proprietary project for a L4-L7 stateful replay DPI firewall performance tester at a large network test and measurement corporation using the old original 6WIND DPDK 1.X under NDA before it became available to a wider channel 2) open-source self-created threat intelligence sensor project using DPDK 1.7.X, under development in my spare time I think the things that making more DPDK contributions are ironically more technical and social in nature than legal or bureaucratic in nature as one would normally suspect, and as you theorized in your original mail. Let me go through some things and see what people think. At the social level, there are not very many people in the world who are familiar and comfortable with the LKML style embedded coding workflow (heavy mailing list usage, sending and reviewing patches in emails, putting specific people in To or Cc to get patches approved and ACKed in subtrees, etc.) I happen to know some if not most of this tribally, because I used Linux since 1997, but very few developers have any clue about this stuff. However I never participated in the actual LKML flow any further than tester / bug reporter, and I actually use DPDK very deliberately, to avoid fighting with the headaches of the linux-net code and flamewars. This is why I was proposing that we try to find a way to allow contributions via Github or Bitbucket... their fork-and-pull model is much simpler for outsiders to comprehend and make quick patches when they find little bugs or issues as they integrate with the library... given we are BSD licensed, the low barrier to entry is the ultimate way to keep the patch velocity as high as possible, and keep the community going. At the technical level, I see two or three difficulties: 1) A lot of the various performance enhancements one can use are kind of "magical" or "jigsaw puzzle" and not presented in a unified way, where I can methodically go through a checklist and enable everything my app should use even though I have no clue what they all are. For example, 1) let's talk about hashing... there is RSS hashing (symmetric or asymmetric), JHASH, CRC hash, ... not sure how many different ones. 2) Let's talk about CPU models... SSE, SSE4, SSE4.1, SSE4.2, etc. I don't know what I have myself, much less what my users will have, much less what I actually need or should use, without guidance from some processor people. 3) Let's talk about PCIe bus... there is DCA, some other non-DCA acceleration that's faster if you are on the same NUMA node as the PCIe slot, but fails to work if you aren't... etc. A lot of the people from Intel, 6WIND, and the kernel people are just thinking "this stuff is obvious... we've used it since 200X and it's 2015!" That's true if you are a processor / kernel hacker... but if you spent your whole career on packet processing or network security like a lot of us app developers might have done, that's very orthogonal to Intel-specific and compiler-specific and hardware-specific performance hacks... so a lot of us have no real clue how to configure and test them all, much less enhance them and make some patches to it. We just blindly trust 6WIND and Intel to get it right, because as far as we can see, all the DPDK code is pretty clean and readable, and we're pretty sure we don't know anything better than what's already coded and put into the repository, if we don't have some checklists to follow to enable and test every combination, and find any more bugfixes to suggest. 2) A lot of the network adapters DPDK uses, especially when you begin using the more crazy accelerations, are either hard to obtain or expensive... for example from what I saw in my jobs, the 10 gigabit boards were a minimum ~$250 USD in manufacturing quantities. The 2-port gigabit latest-gen Intel board I got was $100 USD... I think a lot of higher-ed students and overseas people from less developed nations might have a hard time paying for some of this stuff to start hacking... some kind of program to get these sort of people some sample gear might help. I also hit difficulties with the virtio-net driver... it doesn't work with the virtio-net adapter in Virtualbox... which makes it harder for me to use cool, convenient environments configured by the tool Vagrant, to make very simple dev VM environments to quickly get new hackers up to speed on my open source running just a command or two, and by extension harder for me to show them why they should use DPDK for all their cool new network ${GADGET}s. The same difficulty comes into place if I wanted to do some performance patches... I don't have the money to buy the VTune profiler for my spare time project, that you would want if you're going to get in there and start dumping out all the CPU time and cache counters, so I could help you guys to squash the performance bugs more quickly by testing the behavior in a real packet processing app and not just some random microbenchmark that doesn't do any real work on real stuff. 3) The DPDK library itself only covers Layer 2 which makes it pretty esoteric for average Joes. This meant that I had to implement ARP, NDP, IPv4, IPv6, UDP, and TCP myself, which was very educational but probably not super efficient for attracting community attention. All except TCP weren't too bad... TCP was a ton of work... I had to go to the university library downtown in my city and get hold of Tanenbaum and some of the other networking textbooks and write quite a lot of paper notes, just to implement enough of the server half of TCP to process the traffic and pull out the data stream... and as Jay Rolette can attest since he gave me pointers... I cheated like hell to do it, totally ignoring reordering and retransmissions... but I am proud to say it seems to work great for how half-baked of a job I did coding it. I would gladly trade a first-born child for a better TCP implementation available with the DPDK. ;) But if I look at the world of coders out there... a lot of guys aren't going to have any idea what to do with an L2-only network stack that doesn't support the two most popular Transport protocols out of the box... they only know about what to do with TCP and UDP, not how to redo those themselves from the ground up. In my career I only knew a handful of guys who would be good enough and patient enough to go pound that stuff out... of course if I start my own company someday that's precisely who I'd try to hire, but there aren't so many of these people to go around. Matthew. ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [dpdk-dev] Beyond DPDK 2.0 2015-04-24 7:47 ` Luke Gorrie 2015-04-24 15:29 ` O'Driscoll, Tim 2015-04-24 17:39 ` Jay Rolette @ 2015-04-28 17:48 ` Stephen Hemminger 2 siblings, 0 replies; 58+ messages in thread From: Stephen Hemminger @ 2015-04-28 17:48 UTC (permalink / raw) To: Luke Gorrie; +Cc: dev On Fri, 24 Apr 2015 09:47:58 +0200 Luke Gorrie <luke@snabb.co> wrote: > Hi Tim, > > On 16 April 2015 at 12:38, O'Driscoll, Tim <tim.o'driscoll@intel.com> wrote: > > > Following the launch of DPDK by Intel as an internal development project, > > the launch of dpdk.org by 6WIND in 2013, and the first DPDK RPM packages > > for Fedora in 2014, 6WIND, Red Hat and Intel would like to prepare for > > future releases after DPDK 2.0 by starting a discussion on its evolution. > > Anyone is welcome to join this initiative. > > > > Thank you for the open invitation. > > I have a couple of questions about the long term of DPDK: > > 1. How will DPDK manage overlap with other project over time? > In general DPDK will be successful only if it stick to differentiating technology and avoids NIH and reinvention. I.e if DPDK tries to redo things in libc or have special needs, then DPDK becomes harder to use for many things and makes DPDK applications hard to integrate with other libraries. It is bad enough now that each library has its own view of threads. > DPDK into the kernel than the rest of the good bits of the kernel into DPDK? If DPDK tries to become too general it will lose the performance advantage. The kernel has to serve all types of applications, and have many layers of services therefore it is slow. For example, if every DPDK facility had its own locking and was thread safe the performance would end up being about the same as just using kernel. > 2. How will DPDK users justify contributing to DPDK upstream? > > Engineers in network equipment vendors want to contribute to open source, > but what is the incentive for the companies to support this? This would be > easy if DPDK were GPL'd (they are compelled) or if everybody were > dynamically linking with the upstream libdpdk (can't have private patches). > However, in a world where DPDK is BSD-licensed and statically linked, is it > not both cheaper and competitively advantageous to keep fixes and > optimizations in house? There are several incentives. a. Brocade views open source as a differentiator from competitors and wants to contribute as much as possible to open source, this includes DPDK, Open Daylight and Openstack. Marketing benefit. b. By contributing what we do back we get benefits of more testing and review. Several bugs have been spotted in areas that were not covered because the current product usage and testing will not cover all possibilities. c. By contributing back, the contributor gets to set the agenda and make the API's. If you go first, you set the API and you can make life hard for competitors or other users who do the same thing but haven't contributed. In fact, the worst pain for us was cases where there were two or more parallel implementations of something to deal with (ie vmxnet3). "Lead, follow, or get of the way" ^ permalink raw reply [flat|nested] 58+ messages in thread
end of thread, other threads:[~2015-05-08 16:23 UTC | newest] Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-04-30 21:31 [dpdk-dev] Beyond DPDK 2.0 Wiles, Keith 2015-04-30 21:38 ` Wiles, Keith -- strict thread matches above, loose matches on Subject: below -- 2015-04-16 10:38 O'Driscoll, Tim 2015-04-22 15:11 ` O'Driscoll, Tim 2015-04-22 15:33 ` Stephen Hemminger 2015-04-23 11:36 ` O'Driscoll, Tim 2015-04-24 21:02 ` Dave Neary 2015-05-07 14:02 ` Avi Kivity 2015-05-07 14:34 ` Ivan Boule 2015-05-07 15:27 ` Wiles, Keith 2015-05-07 15:33 ` Avi Kivity 2015-05-07 15:33 ` Avi Kivity 2015-05-07 15:49 ` Wiles, Keith 2015-05-07 16:05 ` Avi Kivity 2015-05-08 4:16 ` Wiles, Keith 2015-05-08 5:29 ` Luke Gorrie 2015-05-08 9:06 ` Bruce Richardson 2015-05-08 9:32 ` Luke Gorrie 2015-05-08 9:42 ` Bruce Richardson 2015-05-08 10:02 ` Luke Gorrie 2015-05-08 14:44 ` Wiles, Keith 2015-05-08 16:16 ` Stephen Hemminger 2015-05-08 10:26 ` Hobywan Kenoby 2015-05-08 13:31 ` Neil Horman 2015-05-08 16:22 ` Stephen Hemminger 2015-05-07 15:34 ` Luke Gorrie 2015-05-08 4:31 ` Wiles, Keith 2015-04-24 7:47 ` Luke Gorrie 2015-04-24 15:29 ` O'Driscoll, Tim 2015-04-24 17:00 ` Neil Horman 2015-04-26 9:07 ` Luke Gorrie 2015-04-24 17:39 ` Jay Rolette 2015-04-24 17:51 ` Matthew Hall 2015-04-25 13:30 ` Marc Sune 2015-04-25 16:08 ` Wiles, Keith 2015-04-26 21:56 ` Neil Horman 2015-04-27 2:29 ` Jim Thompson 2015-04-27 13:07 ` Neil Horman 2015-04-27 16:07 ` Stephen Hemminger 2015-04-28 7:20 ` Dor Laor [not found] ` <D162FA4E.1DED8%keith.wiles@intel.com> 2015-04-27 9:52 ` Marc Sune 2015-04-27 13:39 ` Wiles, Keith 2015-04-27 15:34 ` Marc Sune 2015-04-27 10:29 ` Neil Horman 2015-04-27 13:50 ` Wiles, Keith 2015-04-27 15:23 ` Neil Horman 2015-04-27 12:38 ` Dave Neary 2015-04-27 13:41 ` Neil Horman 2015-04-27 16:09 ` Stephen Hemminger 2015-04-24 18:12 ` Matt Laswell 2015-04-24 18:51 ` Neil Horman 2015-04-24 19:55 ` Jay Rolette 2015-04-25 12:10 ` Neil Horman 2015-04-27 13:46 ` Jay Rolette 2015-04-28 17:26 ` Neil Horman 2015-04-28 20:02 ` Jay Rolette 2015-04-28 6:22 ` Matthew Hall 2015-04-28 17:48 ` Stephen Hemminger
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).