P4 TST Charter
Governance of the P4 project is intended to foster openness and technical meritocracy. Stewardship for the P4 project is provided by the P4 Technical Steering Team. The ONF provides additional stewardship and engineering resources to host and support the P4 Project.
The governance goals for the P4 project include:
- Providing an environment that thrives on meritocracy determined by technical contribution.
- Having a strong technical vision and shepherding to ensure the integrity of the design of the language and accompanying software implementations.
- Providing a framework for P4 working groups—e.g., how they are created, how they are managed, how leadership is chosen, how conflicts are resolved, and how they are disbanded when no longer needed.
- Being clear on how the P4 language and software evolves—e.g., the processes by which features are added to (or removed from) the language, and expectations about stability.
- Being clear on how decisions are made and how conflicts resolved in the community.
- Making it easy for community members to participate and avoiding bureaucracy.
- Creating a great language for expressing a wide range of data plane programs on a variety of target devices.
The overarching governance principle for the P4 project is to act in the best interest of the community. To this end, P4 project is guided by these core values:
- Serve the community.
- Practice meritocracy.
- Value and enable innovation.
- Operate with transparency.
- Strive for quality, consistently.
- Respect others in all Interactions.
The P4 project is governed by the P4 Technical Steering Team (TST), the P4 Chief Architect, and the ONF board of directors.
P4 Technical Steering Team
The TST is responsible for all technical decisions having to do with the P4 project. Together, the P4 language specifications and codebase are the software distribution ("P4 Core") represented by the P4 trademark. The technical steering team determines the specific artifacts that constitute the P4 Core. For example, sample applications and proprietary extensions may or may not be part of the P4 Core.
P4 Chief Architect
The P4 chief architect (“Chief Architect”) is responsible for managing the day-to-day operations of the P4 project. The Chief Architect may be a member of the TST or an individual from outside the TST. The TST itself is intended to be an oversight body, and is not intended to have responsibility for patch-level decisions affecting the P4 Core.
P4 Working Groups
Projects within the P4 Project are managed through Working Groups, which are in turn managed by the Chief Architect, in consultation with the TST. Currently there are five working groups: Language Design, API, Architecture, Applications, and Education. Working groups are created and disbanded by the TST. Working group chairs are appointed by the Chief Architect, and usually serve a term of 3 years.
The following technical roles have been defined. The TST, with approval of the Chief Architect, has the authority to modify, delete and create new technical roles from time to time.
- "Contributor": Any contributing member of the P4 project who contributes a patch set and has had their code accepted in review by any Project (whether an P4 Core Project or a non-Core Project). Anyone can participate in the project by submitting code for consideration. For additional information on how to start contributing code to the project please see https://github.com/p4lang/governance/wiki/Specification-Maintenance-Process
- "Reviewer": Anyone can review any patch set.
- "Module owner": Someone who can give a +2 review for a part of the codebase and submit code in that area
- "Project owner": Someone who can give a +2 review and submit anywhere in the codebase
- "Voting members:" The chief architect, TST members, module owners, project owners, and code contributors (who have submitted and had accepted, at least one patch set in the prior twelve (12) months).
Initial TST and Chief Architect
The initial members of the P4 Technical Steering Team will be:
- Nate Foster, (term ends Sept 2021),
- Nick McKeown (term ends Sept 2020),
- Guru Parulkar (term ends Sept 2021),
- Jennifer Rexford (term ends Sept 2020), and
- Amin Vahdat (term ends Sept 2021).
The initial TST will elect a Chief Architect.
Each P4 TST Member shall be elected to serve for a term of two (2) years, or until his or her earlier resignation or removal. TST elections shall be staggered, if possible, so that roughly half of the Elected Member seats are up for election each year. The first election will be held on a yearly basis, starting in September 2020, and then annually thereafter. Before each election, the Chief Architect will determine the appropriate size of the TST. The TST shall hold annual elections in the third calendar quarter of each year. In the event that any Elected Member seat becomes vacant prior to the distribution of nominations for the next annual election and it is more than one (1) month prior to the next planned election, the Chief Architect may optionally call for elections for any vacant seat(s).
The TST should use a multiple-candidate method of voting, such as Condorcet Helios or single transferable vote. Multiple-candidate methods may be replaced by a simple election by a plurality of votes when there are only two candidates for one position to be filled. No election is required if there is only one candidate running and no voting member voices an objection. In the event of a tied outcome, the Chief Architect may determine the winner or a process to resolve the tie.
At the time of an election, the following events occur:
- The TST shall solicit the voting members for nominations via mailing list;
- Voting members may nominate themselves or other voting members for election to the TST;
- The TST distributes the nominees to the P4 mailing lists and conducts the election;
- The Chief Architect posts the result to the P4 wiki upon conclusion of the election.
ONF Board Oversight
The ONF board of directors reserves the right to approve or reject the Chief Architect's choice for the size of the TST and the results of TST elections. In addition, the ONF board may appoint a new Chief Architect at any time.
Right to Separate P4 Project from ONF
The Asset Transfer Agreement, which defined the terms for moving the P4 Project to the ONF, allows the P4 TST to separate the P4 Project from the ONF by majority vote for a period of 5 years. During this period, should the ONF board take action to alter the governance of the P4 project, the existing P4 TST (prior to the ONF board changes taking effect) will have 30 days to elect to separate the P4 project as described under the terms of the Asset Transfer Agreement or to work out other mutually agreeable terms with the ONF board.