Governance Model - DRAFT FOR REVIEW ONLY - NOT FINAL
Governance of the ONOS project is a hybrid. It attempts to take what has worked well for open source projects and leave out what didn’t work so well. Mostly, it is governed as a technical meritocracy – those who contribute the most have the most influence. There is also an element of benevolent dictatorship. This is what gives the project its strong vision, goals, and technical shepherding. More specifically, ONOS governance is
A technical meritocracy because technical teams manage themselves to do what is technically right for the community. People who make the most contributions to their teams have the most influence. In addition, technical project leaders and steering team members are elected by active contributors.
A benevolent dictatorship because ON.lab’s board of directors retains the right to select the chairman of the advisory board and the leaders of the technical steering team, release management team, and community team.
Goals
The goals of ONOS project governance are to:
Provide an environment that thrives on technical meritocracy. Merit is based on technical contribution, not on financial contribution.
- Have strong technical vision and shepherding. This ensures architectural integrity of the codebase.
Provide a framework for ONOS teams and projects – how they are started, how they are managed, how members are elected, how conflicts are resolved, how they are disbanded when no longer needed.
Be clear on how ONOS software evolves – how is code added to (or removed from) the project.
Be clear on how decisions are made and conflicts resolved in the community.
Make it easy for community members to participate.
Avoid bureaucracy.
- Create a great codebase.
Principles
The principles of ONOS governance are in line with these community values:
Serve our Customers.
Practice true Meritocracy.
Operate with Transparency.
Strive for Quality, consistently.
Value and enable Innovation.
Respect others in all Interactions.
In addition, the over-arching governance principle is To act in the best interest of the broader community.
Governance Structure
The ONOS project is governed by four teams and a board of advisors. The four teams are the technical steering team, the use case team, the release management team, and the community team. ONOS subprojects are formed as part of one of the four teams.
Board of Advisors
The board of advisors is a group of representatives from the member organizations. It is governed by the Chairman of the Board. The board of advisors has the following roles and responsibilities:
Strategic direction
New member recruiting
Conflict resolution between teams
Ambassadors for ONOS
ONOS trademark management
- Elect the lead of the Use Case Steering Team
The board of advisors leaves all technical decisions to the technical steering team in the spirit of open source technical meritocracy practice.
Steering Teams
Four steering teams govern the ONOS project.
Technical Steering Team
The technical steering team is responsible for all technical decisions in the project. They are responsible for the content and structure of the code base and for all technical priorities with respect to the code base. The ONOS chief architect is the team lead of the technical steering team.
Email: onos-tech-steering-team@onosproject.org - Archive
Use Case Steering Team
The use case steering team is responsible for prioritizing the use cases that will be developed. They are responsible for the prioritization of all use cases and for all capabilities within those use cases. The use case steering team provides the customer requirements to the ONOS technical team. The use case steering team is lead by an elected representative nominated from the group of members who are customers (in this case, service providers).
Email: onos-use-case-team@onosproject.org - Archive
Release Management Team
The release management team owns the release management process and is responsible to make sure that releases happen on time with the highest quality. The release management team owns the responsibility for determining the priority of features targeted for a particular release. The release management team is lead by the ONOS product manager, or the person appointed by the ON.Lab board of directors.
Email: onos-release-team@onosproject.org - Archive
Community Advocacy Team
The community advocacy team is responsible for the care and feeding of the community. They are responsible to address community issues, to grow the community and to make sure that the community thrives. The community advocacy team is lead by the ONOS community manager, or the person appointed by the ON.Lab board of directors.
Email: onos-community-team@onosproject.org - Archive
Subprojects
Subprojects are formed when needed as part of a steering team. Subprojects are self-forming, self-managing groups of people with a common goal. The people in the subproject decide how to choose the subproject leader.
Governance Details
Classes of Participation
There are four classes of participation in the governance process. Each plays a different role in governance.
- Open Networking Lab - the board of directors and employees of Open Networking Laboratory
- Service Providers - the primary end users of the ONOS derived products
- Vendors - the companies who build products for consumption by the service providers
- Community - independent members of the community
Advisory Board
Composition of the Board of Advisors
The Board of Advisors is composed of a chairman and one member from ON.Lab and each partner organization. The maximum number of board members is 15. Each organization may only have one member on the board. The initial board is
Chairman - ON.Lab Executive Director
AT&T -
NTT Communications -
Ciena -
Ericsson -
Fujitsu -
Huawei -
Intel -
NEC -
Elections
The Chairman of the Board is chosen by the Open Networking Laboratory Board of Directors. Each organization is responsible for nominating their board member. The chairman of the board must approve the nomination. Board members are (re) elected every year. The first election will be in December 2015. If any board member must leave before the end of their term, their organization will nominate a new member and that member must be approved by the Chairman of the Board. If the Chairman of the Board must step down, then the ON.Lab Board of Directors will select a new Chairman.
Voting
There are three classes of voting: ON.Lab, Vendors and Service Providers. Each receives voting chits according to the following allocation of 100 chits. Chits may be fractional.
ON.Lab - 10 chits
Vendor - 40/(number of vendors)
Service Provider - 50/(number of service providers)
Should a tie occur on a vote, the Chairman of the Board will break the tie.
Technical Steering Team
The technical steering team is responsible for all technical decisions having to do with the ONOS core codebase. The ONOS core codebase is the set of modules that is represented by the ONOS trademark. Use case applications, southbound plug-ins for non-OpenFlow devices, sample applications, vendor proprietary extensions may or may not be part of the ONOS core. It is entirely up to the technical steering team to decide what constitutes the ONOS core codebase.
Initial Membership of Technical Steering Team
The membership will initially be the following people:
Thomas Vachuska, Team Lead
Ali Al-Shabibi - southbound maintainer
Madan Jampani - core maintainer
Brian O’Connor - northbound maintainer
Roles
Submitter - submits code to Gerrit. Submissions must be reviewed and approved by a committer. Anyone, who has signed the CLA, can be a submitter.
Committer - allowed to move code submissions from Gerrit into the official ONOS repository. Submitters may be nominated at any time, by any person to become a committer. Approval to change role from a submitter to a committer is given by the technical steering team.
Maintainer - is a committer with responsibility for the integrity of some portion of the ONOS core codebase. Maintainers volunteer, but must be approved by the technical team. A list of maintainers and their area(s) of responsibility is kept on the technical steering team wiki page.
Team leader - is a committer with the responsibility for the integrity of the the overall ONOS core codebase. May also be a maintainer.
Membership Elections
The technical steering team members will be elected on a yearly basis. The first member election will be held in December 2015. At the time of election the following occurs:
- The lead is (re) appointed by the board of Open Networking Laboratory.
- The lead decides the appropriate size of the technical steering team. The ON.Lab board of directors has veto power on the choice of size.
- Technical members are nominated by anyone, including themselves. They must already be active committers/maintainers.
- The technical community of committers and maintainers votes for the number of approved steering team members.
- Ties are broken by the technical steering team leader.
If a team member leaves the team during the year, it is up to the team leader whether or not to hold an election to put someone else into the position before the next scheduled election.
Other Changes
If the ONOS Chief Architect leaves ON.Lab for any reason the ON.Lab board of directors reserves the right to appoint a new ONOS Chief Architect.
If any member of the technical steering team changes their corporate affiliation during their tenure the ON.Lab board of directors reserves the right to remove them from their role on the technical steering team.
- The ON.Lab board of directors reserves the right to select a new Chief Architect at any time.
Technical Advisory Group
The Technical Steering Team may organize a technical advisory group of 3-5 architects that are leading SDN. They do not have to have any affiliation with the ONOS project. The goal of this group is twofold: solicit input from other experts in the field to guide the ONOS architecture and generate advocacy in the larger ecosystem for the work being done with ONOS. The people on the technical advisory group are all chosen by the technical steering team. The following people are the first candidates
(VMWare)
(Ciena)
TBD (Google) -
The technical steering team will meet with the technical advisory group 2-4 times a year.
Use Case Steering Team
The use case steering team is responsible for choosing and prioritizing the use cases worked on by the community.
Initial Membership of Use Case Steering Team
Each service provider has one representative on the use case steering team.
The team will initially include the following people:
AT&T
NTT
Membership Additions
The team representatives will be appointed on a yearly basis by their organization, or when they join ONOS, except for the team lead who will be elected every year by the Board of Advisors. How each service provider chooses their representative is outside the scope of this document. The first election of team lead and members will be held in January 2015. At the time of the election, the following will take place:
- Members of the team are nominated by anyone, including themselves, to be the team lead.
- The Advisory Board votes on the candidates to select the team lead.
A service provider may change its representative for any reason at any time at the sole discretion of the service provider.
If the team lead must step down before an election then a special election will be called to elect a new team leader.
Release Management Team
The Release Management team is responsible for all decisions having to do with requirements and release (note, one can substitute the Agile term “stories” for “requirements” - in this context it is the same thing). More specifically, they own the
Requirements database maintenance (Jira)
Requirements acceptance process
Requirements prioritization process
Release content prioritization
Release process (how subprojects get project code integrated)
Initial Membership
The membership will initially be the following people:
Bill Snow, Team Lead
- Prajakta Joshi
TBD, additional team members
Team Lead Election
The team lead is initially Bill Snow. Starting in December 2015 the team lead of the release management team will be (re) appointed by the ON.Lab board of directors.
Members
Anyone may volunteer to be a member of the team. It is up to the team lead to decide how large the team is and who is accepted onto the team. If you would like to volunteer for one or more of the above teams, please send an email to the email address of the team (see above).
Community Steering Team
The community steering team is responsible for the care and feeding of the community. This team will be responsible to make sure the community has what it needs to function effectively. That may include
proactively checking in with members to see what can be improved
starting projects to improve the community
providing a structured way to handle conflict in the community
making sure communication tools work well for the community
owning the on-ramp process for the community
Initial Membership of Community Steering Team
The membership will initially be the following people:
Prajakta Joshi, Team Lead
Bill Snow
- TBD, additional team members
Team Lead Election
The team lead is initially Prajakta Joshi. Starting in December 2015 the team lead of the release management team will be (re) appointed by the ON.Lab board of directors.
Membership
Anyone may volunteer to be a member of the team. It is up to the team lead to decide how large the team is and who is accepted onto the team.
Subprojects
It is up to the subproject team to govern themselves as they feel appropriate. Since subprojects are attached to steering teams, the steering team may get involved to help with decision making and/or conflict resolution.
Decision Making
Subprojects govern themselves and are driven by those who volunteer to be on them. When a more formal decision must be made (outside impact or coordination with other teams/subprojects is needed) lazy consensus is used: a few positive votes with no negative votes is sufficient to get things moving. Negative votes must provide an alternative proposal and a detailed explanation of the reason for the negative vote. The subproject team will then work to resolve the negative vote.
Conflict Resolution and Escalation
When conflicts cannot be resolved in a subproject, the appropriate steering team will take responsibility to make the decision for the subproject. If the steering team cannot reach agreement then the board of advisors will make the decision.