DPDK: Data Plane Development Kit

Project Charter

Mission of the Data Plane Development Kit Project

The mission of DPDK is to:

  1. Create an open source, production quality, vendor neutral software platform for enabling fast dataplane I/O, upon which users can build and run data plane applications.
  2. Host the infrastructure for the DPDK community, establishing a neutral home for community assets, infrastructure, meetings, events and collaborative discussions.

Project Structure

The DPDK Project is comprised of one core software project which is DPDK itself, and a few smaller sub-projects that are closely related to DPDK.

The core DPDK project is comprised of a number of git repositories, including a master repository, several "next" repositories which are used to apply changes to specific parts of DPDK before these are pulled into the master repository, and a stable release repository. This structure is documented at: http://dpdk.org/browse/.

The sub-projects that are also hosted as part of the DPDK Project are typically applications that are closely related to DPDK. These are listed at: http://dpdk.org/browse/.

Changes to this structure, including approval for any new sub-projects, are the responsibility of the Technical Board (see section 3.2 below).

Project Governance

Governance for DPDK will be provided by two boards:

  1. A Governing Board which deals with budget, marketing, lab resources, administrative, legal and licensing issues.
  2. A Technical Board which deals with technical issues including approval of new sub-projects, deprecating old sub-projects, and resolution of technical disputes.

These two boards are peers and work together to oversee the DPDK project.

Governing Board

Scope

The Governing Board covers the full scope of DPDK, including all sub-projects. Responsibilities of the Governing Board are:

  1. Electing a Chair to preside over meetings, authorize expenditures approved by the Governing Board, and manage any day-to-day operations.
    1. The Chair will be elected on an annual basis.
    2. The existing Chair will be allowed to stand for re-election.
  2. Approving an annual budget comprising funds raised by DPDK from all sources of revenue, and approving expenditures in compliance with that budget.
  3. Overseeing all project business and marketing matters including planning and executing DPDK events.
  4. Planning and management of all project lab resources.
  5. Adopting and maintaining administrative policies and procedures for DPDK (subject to LF approval) including but not limited to a Code of Conduct, a trademark policy and any compliance or certification policies.
  6. Approving procedures for the nomination and election of (1) Silver Member representatives to the Governing Board, and (2) any officer or other positions created by the Governing Board.
  7. Recruiting and approving new Gold and Silver members of the project.
  8. Approving any exceptions to the Intellectual Property Policy.
  9. Defining any non-technical criteria (examples might include things like "no or minimal additional budgetary requirements for the project") that the Technical Board must consider when approving new sub-projects. In the interim period until these criteria are defined and agreed with the Technical Board, the Governing Board must approve new sub-projects after the Technical Board has approved them.
  10. Voting on all matters requiring a decision from the Governing Board.

Composition

The Governing Board shall consist of:

  1. One representative appointed by each Gold Member as specified in clause 4.d.a below.
  2. Up to two Silver Member representatives as specified in clause 4.e.a below.
  3. One representative of the Technical Board, to be nominated by the Technical Board on an annual basis.

Conduct

Conduct of Governing Board meetings:

  1. Governing Board meetings shall be limited to the Governing Board representatives, plus any other individuals that the Governing Board invites because their input is required on specific agenda topics. The Governing Board will allow a named representative to attend as an alternate if a Governing Board member cannot attend.
  2. The quorum required for a meeting to proceed is a majority (> 50%) of the Governing Board.
  3. For a vote to be passed on the following items, a ⅔ majority (> 66%) of the total Governing Board is required (not just a ⅔ majority of those in attendance at the meeting). In the event of a deadlock the Governing Board Chair shall have the casting vote.
    1. Approval of any exceptions to the Intellectual Property Policy (see section 6.c).
    2. Approval of any changes to this document (see section 12).
  4. For a vote to be passed on any other item, a majority (> 50%) of the total Governing Board is required (not just a majority of those in attendance at the meeting). In the event of a deadlock the Governing Board Chair shall have the casting vote.
  5. The Governing Board will encourage transparency, including the public publication of meeting minutes and reporting of budgets within a reasonable time following their approval by the Governing Board. When approving meeting minutes and budgets, the Governing Board must approve any items which cannot be included in the public versions for confidentiality reasons.
    Note: Examples of board discussions which should not be made public might include things like legal issues, confidential budget discussions, discussion on potential new project members that have not yet been made public, etc.

Technical Board

Scope

The Technical Board shall be responsible technical decision making for the DPDK project. Its scope does not include the other sub-projects hosted on dpdk.org (Pktgen, SPP etc.). A separate Technical Board may be established for other sub-projects in future if any of them grows sufficiently large to require one. Responsibilities of the Technical Board are:

  1. Electing a Chair to preside over meetings, and manage any day-to-day operations.
    1. The Chair will be elected on an annual basis.
    2. The existing Chair will be allowed to stand for re-election.
  2. Approving any new sub-projects, including new "next" repositories for DPDK and new DPDK-based apps like Pktgen and SPP. The procedure and requirements for requesting a new sub-project will be defined by the Technical Board. The Technical Board will apply non-technical criteria for new sub-projects that are defined by the Governing Board (see section 3.1.1, point ix) when making its decision on proposed new projects. Requests can be submitted by emailing techboard@dpdk.org.
  3. Deprecating any existing sub-projects. The procedure for deprecation and archival will be defined by the Technical Board. Deprecation requests can be submitted by emailing techboard@dpdk.org.
  4. Resolving any technical disputes. Anybody who is unhappy with the resolution of a technical issue can request that the Technical Board review the issue and make a decision on it by emailing techboard@dpdk.org. This is only expected to happen in exceptional cases. Before escalating to the Technical Board it is required that all reasonable steps to resolve the dispute via consensus are taken and recorded on the dev@dpdk.org mailing list. If the Technical Board Chair does not feel that this has happened, they can refer the issue back to the complainant for further action to be taken before escalating it to the Technical Board.
    The decision of the Technical Board on any technical disputes will be final and all project contributors are expected to comply. If a Maintainer or Committer fails to comply with a decision of the Technical Board, the Technical Board will be empowered to take any necessary steps to enforce its decision, including replacing that Maintainer/Committer.
    Note: Examples of issues that fall into this category might include disagreements over which patches should/should not go into DPDK.
  5. Voting on all matters requiring a decision from the Technical Board.

Composition

The Technical Board shall consist of:

  1. The composition of the Technical Board is documented at: http://dpdk.org/about/techboard.
  2. To be added to or removed from the Technical Board:
    1. A candidate must be nominated by an existing member of the Technical Board and
    2. The Technical Board must review and approve the change.
  3. When adding or removing members, the Technical Board must consider the following:
    1. Positions on the Technical Board are determined based on technical merit. A new member must have a strong history of contribution (including reviews of other people's contributions) to the project.
    2. The Technical Board must ensure that it represents all parts of DPDK, including support for all architectures that DPDK runs on.
    3. Employees of a single company should not occupy more than 40% of the Tech Board seats.
    4. The Technical Board needs to be kept to a manageable size so that decisions can be made in an effective way.

Conduct

Conduct of Technical Board meetings:

  1. Technical Board meetings shall be open to the public.
  2. The quorum required for a meeting to proceed is a 70% majority of the Technical Board.
  3. For a vote to be passed, a majority (> 50%) of the total Technical Board is required (not just a majority of those in attendance at the meeting). In the event of a deadlock the Technical Board Chair shall have the casting vote.
  4. Minutes of Technical Board meetings will be published publicly within a reasonable time following their approval by the Technical Board.

Membership

  1. DPDK is a free, open source project that welcomes all contributors. Anybody can use or contribute to DPDK. There is no requirement to be a member of the DPDK project or a member of The Linux Foundation ("LF") to do so.
  2. The DPDK project shall have Gold and Silver Members, independent of the technical contributors. All Gold and Silver Members must be current corporate members of The Linux Foundation (at any level). Details of LF membership levels and rates are available in The Linux Foundation Bylaws https://www.linuxfoundation.org/about/bylaws.
  3. All Gold and Silver Members enjoy the privileges and undertake the obligations described in this DPDK Project Charter, as from time to time amended by the Governing Board with the approval of The Linux Foundation. During the term of their membership, all members will comply with all such policies as the LF Board of Directors and/or the DPDK Governing Board may from time to time adopt with notice to members.
  4. Gold Members shall be entitled to:
    1. Appoint a representative to the Governing Board and any other committees established by the Governing Board.
    2. Participate in an open DPDK performance lab as outlined in section 4, clause f below.
    3. Be prominently identified as Gold sponsors of the project at DPDK-funded events. Specific details of how this will be implemented will be determined by the Governing Board.
    4. Identify themselves as Gold Members of the project.
  5. Silver Members shall be entitled to:
    1. Annually elect one representative to the Governing Board and any other committees established by the Governing Board for every five (5) Silver Members, up to a maximum of two (2) representatives. The election process shall be determined and published publicly by the Governing Board.
    2. Participate in an open DPDK performance lab as outlined in section 4, clause f below.
    3. Be identified as Silver sponsors of the project at DPDK-funded events. Specific details of how this will be implemented will be determined by the Governing Board.
    4. Identify themselves as Silver Members of the project.
  6. Gold and Silver Members shall be entitled to participate in an open DPDK Project performance lab (if created):
    1. They will be able to contribute hardware to be hosted in the lab for DPDK performance testing.
    2. They will be able to integrate software applications into the performance test configuration within the lab.
    3. Limits on hardware and software contributions for Gold and Silver Members will be determined by the Governing Board. A higher priority will be given to Gold members than to Silver members when determining these limits.
    4. Costs for hardware and software contributions for Gold and Silver Members will be determined by the Governing Board. The cost structure will take into account the fact that Gold members have already contributed significantly more funding to the project than Silver members.

Technical Governance

The Technical Board described in section 3.2 provides overall technical guidance and direction for DPDK.

Beyond that, each sub-project within DPDK shall be responsible for its own technical governance and technical decision making, including issues such as:

  1. Determining the process and tools to be used for development, CI, validation etc.
  2. Reviewing proposed changes (patches) and making decisions on which patches are and are not accepted into the project.
  3. Scheduling of releases.

For the core DPDK project, technical governance is documented in the Contributor's Guidelines (http://dpdk.org/doc/guides/contributing/) and on the DPDK.org Development web page (http://dpdk.org/dev).

For the other sub-projects within DPDK, technical governance will be documented in a CONTRIBUTING.txt file in the root directory for the sub-project. See http://dpdk.org/browse/apps/pktgen-dpdk/tree/CONTRIBUTING.TXT for an example.

Intellectual Property Policy

  1. All new inbound contributions to DPDK shall be made under the following licenses:
    1. The GPLv2 license (https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) shall be used for code that runs in the kernel. Current examples of this are:
      1. lib/librte_eal/linuxapp/igb_uio
      2. lib/librte_eal/linuxapp/kni
      3. lib/librte_eal/linuxapp/kni/ethtool/igb
      4. lib/librte_eal/linuxapp/kni/ethtool/ixgbe
    2. A dual 3-clause BSD/GPLv2 license (https://opensource.org/licenses/BSD-3-Clause, https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) or 3-clause BSD/LGPLv2 license (https://opensource.org/licenses/BSD-3-Clause, https://www.gnu.org/licenses/old-licenses/lgpl-2.0.en.html) shall be used for code that is shared between the kernel and userspace. Current examples of this are:
      1. BSD/GPLv2:
        1. All files in: drivers/crypto/qat/qat_adf/
        2. lib/librte_eal/common/include/rte_pci_dev_features.h, rte_pci_dev_feature_defs.h
        3. lib/librte_eal/linuxapp/xen_dom0/dom0_mm_dev.h, dom0_mm_misc.c
      2. BSD/LGPLv2:
        1. lib/librte_eal/bsdapp/eal/include/exec-env/rte_dom0_common.h
        2. lib/librte_eal/linuxapp/eal/include/exec-env/rte_dom0_common.h, rte_kni_common.h
    3. The 3-clause BSD license (https://opensource.org/licenses/BSD-3-Clause) shall be used for all other contributions.
  2. All contributions shall include a "Signed-off-by:" line which certifies that the contribution complies with the Developer Certificate of Origin (http://developercertificate).
  3. If an alternative inbound or outbound license is required for compliance with the license for a leveraged open source project or is otherwise required to achieve DPDK's Mission, the Governing Board may approve the use of an alternative license for specific inbound or outbound contributions on an exception basis. Any exceptions must be approved by a two-thirds vote of the entire Governing Board and must be limited in scope to what is required for such purpose.
  4. Subject to available Project funds, DPDK may engage The Linux Foundation to determine the availability of, and register, trademarks, service marks, and certification marks, which shall be owned by the LF.

Budget

  1. The Governing Board shall approve an annual budget and never commit to spend in excess of funds raised. The budget and the purposes to which it is applied shall be consistent with the non-profit mission of The Linux Foundation.
  2. The Linux Foundation shall provide the Governing Board with regular reports of spend levels against the budget. In no event will The Linux Foundation have any obligation to undertake any action on behalf of DPDK or otherwise related to DPDK that will not be covered in full by funds raised by DPDK.
  3. In the event any unbudgeted or otherwise unfunded obligation arises related to DPDK, The Linux Foundation will coordinate with the Governing Board to address gap funding requirements.
  4. As described in 3.1.3 clause v, the Governing Board will publish a public version of the budget. Questions on the budget should be addressed to the Governing Board.

General & Administrative Expenses

  1. The Linux Foundation shall have custody of and final authority over the usage of any fees, funds and other cash receipts.
  2. A General & Administrative (G&A) fee will be applied by the Linux Foundation to funds raised to cover Finance, Accounting, and operations. The G&A fee shall equal 9% of DPDK's first $1,000,000 of gross receipts and 6% of DPDK's gross receipts over $1,000,000.
  3. Under no circumstances shall The Linux Foundation be expected or required to undertake any action on behalf of DPDK that is inconsistent with the tax exempt purpose of The Linux Foundation.

Antitrust Guidelines

  1. All members shall abide by The Linux Foundation Antitrust Policy available at http://www.linuxfoundation.org/antitrust-policy.
  2. All members shall encourage open participation from any organization able to meet the membership requirements, regardless of competitive interests. Put another way, the Governing Board shall not seek to exclude any member based on any criteria, requirements or reasons other than those that are reasonable and applied on a non-discriminatory basis to all members.

Code of Conduct

  1. The Governing Board may adopt a specific Project code of conduct, with approval from the LF.
  2. All participants in LF Project events shall abide by The Linux Foundation Events Code of Conduct, available at: http://events.linuxfoundation.org/EVENT-CODE-OF-CONDUCT.

General Rules and Operations

The DPDK project shall be conducted so as to:

  1. Engage in the work of the project in a professional manner consistent with maintaining a cohesive community, while also maintaining the goodwill and esteem of The Linux Foundation in the open source software community;
  2. Respect the rights of all trademark owners, including any branding and usage guidelines;
  3. Engage The Linux Foundation for all DPDK press and analyst relations activities;
  4. Upon request, provide information regarding project participation, including information regarding attendance at project-sponsored events, to The Linux Foundation;
  5. Coordinate with The Linux Foundation in relation to any websites created directly for DPDK; and
  6. Operate under such rules and procedures as may from time to time be approved by the Governing Board and confirmed by The Linux Foundation.

Amendments

  1. This charter may be amended by a two-thirds vote of the entire Governing Board, subject to approval by The Linux Foundation. Proposed changes must be communicated publicly to the community prior to being approved by the Governing Board.