Cross Project Council (CPC) Charter
Section 1. Guiding Principle.
The OpenJS Foundation will operate transparently, openly, collaboratively, and ethically. Project proposals, timelines, and status must not merely be open, but also easily visible to outsiders.
Section 2. Evolution of OpenJS Foundation Governance.
Most large, complex open source communities have both a business and a technical governance model. OpenJS Foundation’s technical leadership is the Cross Project Council (“CPC”). OpenJS Foundation’s business leadership is the Board of Directors (the “Board”).
This Cross Project Council Charter reflects a carefully constructed, balanced role for the CPC and the Board in the governance of OpenJS Foundation. The charter amendment process is for the OpenJS Foundation to propose changes using simple majority of the full OpenJS Foundation, the proposed changes being subject to review and approval by the Board. The Board may additionally make amendments to the OpenJS Foundation charter at any time, though the Board will not interfere with day-to-day discussions, votes or meetings of the CPC.
Section 3. Board’s Role in Setting OpenJS Foundation’s Strategic Direction.
The Board will set the overall CPC Policy. The policy will describe the overarching scope of the OpenJS Foundation initiative, OpenJS Foundation Foundation’s technical vision and direction and project release expectations in the form of expected cadence and intent. The Board will use the CPC as a delegate body for governing technical implementation, individual project scope and direction while they remain within the scope and direction of the policies as described in the CPC Policy document and approved by the Board.
The Board sets the overall CPC policy through Foundation mission and vision statements as well as within the Foundation bylaws. The policy describes the overarching scope of the OpenJS Foundation initiatives , technical vision, and direction. The Board uses the CPC as a delegate body for governing high-level technical policy and procedures while remaining within the scope and direction of the policies set by the Board.
Section 4. Establishment of the CPC.
The CPC is an inclusive group with three types of participants:
- Regular members
- Voting members
Observers are free to attend meetings and participate in the work of the CPC as well as the consensus seeking process.
Regular members have made a commitment to be involved in an ongoing manner and take on roles and responsibilities as outlined below. Regular member is implied when membership type is not specified. Anyone who has been a member of one of the projects under the OpenJS Foundation for at least three months may request to become a regular member by opening a PR to add themselves to the list of regular members. Regular members remain for as long as they are active within the work of the CPC. Regular members who have not been active in GitHub, participated in meetings, or other work of the CPC for 3 months may be removed from the list of Regular members. In addition, a Regular CPC member can be removed by voluntary resignation, or by a standard CPC motion.
Voting members are selected as follows:
Each Impact project may nominate up to two members through a process of their choosing. Once nominated the member must be ratified by the CPC Voting members before becoming a Voting member.
up to two Voting members may be nominated by the non Impact projects based on a process set by the CPC.
up to two Voting members may be nominated by the Regular members. Once nominated these members must be ratified by the CPC Voting members before becoming a Voting member.
Voting members are expected to make a time commitment which allows them to be responsive to CPC business, participate regularly in meetings and to participate in all voting matters (either by voting or specifically abstaining). They are also expected to help to enable work of the regular CPC members by providing leadership, help with interactions with the board and Foundation staff and to generally help keep things moving.
Voting members serve for a term of 1 year and must be re-nominated and ratified by the Voting CPC members each year. In addition, a Voting CPC member can be removed by voluntary resignation, by a standard CPC motion, or in accordance to the participation rules described for Regular members.
Changes to CPC membership should be posted in the agenda, and may be suggested as any other agenda item.
No more than one-fourth of the Voting CPC members may be affiliated with the same employer. Removal or resignation of a Voting CPC member, or a change of employment by a Voting CPC member could cause more than one-fourth of the Voting CPC membership to be affiliated with the same employer. Such a situation must be immediately remedied by the resignation or removal of one or more voting CPC members.
The public portion of the CPC discussions and meetings will be open to all observers and members.
The CPC shall meet regularly using tools that enable participation by the community. The meeting shall be directed by the CPC Chairperson. Responsibility for directing individual meetings may be delegated by the CPC Chairperson to any other CPC member. The CPC chairperson shall be one of the Voting members, and will be selected by the CPC members through consensus or if necessary a vote as described in the section titled "Voting". Minutes or an appropriate recording shall be taken and made available to the community through accessible public postings.
Voting members have the roles and responsibilities as outlined below.
Section 5. Responsibilities and Expectations of the CPC
Subject to such policies as may be set by the Board, the CPC is responsible for ensuring:
- When needed, members of the CPC will be expected to create subcommittees or working groups. The CPC will delegate responsibilities and empower these groups to make decisions. Any of the responsibilities listed below not identified as being responsibilities of the Voting members may be delegated. For the remaining responsibilities, day-to-day work, investigation, and building recommendations may be delegated, however, the final responsibility will remain with the Voting members.
- Ensuring collaboration is the driving principle within a Project, between OpenJS Foundation Projects, and between OpenJS Foundation Projects and the broader community.
- Defining and maintaining neutral consensus for the technical vision for the OpenJS Foundation.
- Creating conceptual architecture for how the projects fit together.
- Voting members are responsible for approving new projects within the scope for OpenJS Foundation set by the Governing Board, as outlined in the Project Progression Process.
- Voting members are responsible for making final decisions on aligning projects, removing or archiving projects, as outlined in Project Progression Process.
- Voting members are responsible for approving the charter (and any updates) for projects which are part of the OpenJS Foundation. As part of this review/approval the voting members will ensure that the updated charter is compatible with the mission of the OpenJS Foundation and reach consensus with the Board on more substantial changes before final approval by CPC.
- Voting members are responsible for approving funds for budgets delegated to the project.
- Following and be up to date on Board/OpenJS Foundation initiatives and communicate them to the projects.
- Defining common practices to be implemented across OpenJS Foundation projects, if any.
- Mediating technical conflicts between OpenJS Foundation Projects when attempts to resolve those conflicts within the Project were unsuccessful.
- Managing the process for creating a yearly budget and approving a yearly budget to be presented to the board.
- The CPC serves as the OpenJS Foundation's primary technical liaison body with external open source projects, consortiums and groups and is also responsible for ensuring that the OpenJS Foundation has appropriate technical participation in standards bodies by finding an encouraging members from individual projects to participate in these bodies.
- Managing the Individual membership program.
- Managing programs to improve inclusivity and diversity.
- Guiding projects into appropriate Foundation paths.
- Shared resources, tooling and funding for projects and Commons.js (Events Collaborator Summit, Travel fund).
- Supporting projects in their enforcement of Code of Conduct violations and escalation.
- Developing a framework for community end-user feedback.
- Managing programs to offer mentorship to external individuals.
- Managing developer outreach programs.
- Supporting project advocacy and recognition programs.
- Identifying, recruiting and engaging prospective projects.
- Voting members are responsible for making a final decision if consensus cannot be reached among members.
Section 6. Non-Responsibilities of the CPC
OpenJS Foundation Projects are self-governing entities. All policies and procedures for interacting with, contributing to and making decisions within a Project are defined, implemented, and documented by that Project’s maintainers and community during the mentorship process. Specific technical decisions within a Project will be the responsibility of the Project and establishment and implementation of the decision making process will be done within the guidelines as defined by CPC charter. Those Project decisions and responsibilities include but are not limited to:
- Setting release dates.
- Release quality standards.
- Technical direction.
- Project governance and process.
- GitHub repository hosting.
- Conduct guidelines.
- Maintaining the list of additional Collaborators.
- Development process and any coding standards.
- Mediating technical conflicts between Collaborators.
Not withstanding the above, the Projects and the entire technical community will follow any processes as may be specified by the Board relating to the intake and license compliance review of contributions, including the OpenJS Foundation IP Policy.
Section 7. Elections
Leadership roles in OpenJS Foundation will be peer elected representatives of the community.
For election of persons (such as the CPC Chairperson), a multiple-candidate method should be used, such as:
Multiple-candidate methods may be reduced to simple election by plurality when there are only two candidates for one position to be filled. No election is required if there is only one candidate and no objections to the candidates election. Elections shall be done within the Projects by the Collaborators active in the Project.
The CPC will elect from amongst voting CPC members a CPC Chairperson to work on building an agenda for CPC meetings and a CPC Director to represent the CPC to the Board for a term of one year according to the OpenJS Foundation’s By-laws. The Chair and Director may be (but are not required to be) the same person. The CPC shall hold annual elections to select a CPC Chairperson and Director; there are no limits on the number of terms a CPC Chairperson or Director may serve.
Section 8. Board Representation
There are 3 Board seats earmarked for representation from the OpenJS Foundation projects. The first of these board seats is filled by the CPC Director as outlined in Section 7 on Elections and is always in place.
The second board seat requires 2 Platinum board members to activate and will be filled based on processes defined by the CPC and approved by the Voting CPC members and then the Board. The CPC members will review and either re-confirm or update the processes once per year.
For the first year after the formation of the OpenJS Foundation, the processes for filling this seat will be as follows:
- As a constellation member of the OpenJS Foundation, the Node.js project will elect one Board representative from either the Technical Steering Committee (TSC) or Community Committee (CommComm). The representative will be selected according to a process defined by the TSC and CommComm.
As described in the Elections section a multiple candidate method will be be used for the voting for the first and second board members.
The third board seat is earmarked to represent the Individual membership program. 3 Platinum board members as well as 2000 members registered in the Individual membership program are required for it to activate. Candidates for the Individual Membership Director are to be nominated by voting members of the top-level committees of all projects and the voting CPC members. Active members of the Individual Membership program would then vote on the candidate of their choosing via an election system set by the CPC.
Section 9. Decision Making
For internal Project decisions, Collaborators shall operate under Lazy Consensus. The CPC follows a Consensus Seeking decision making model. When an agenda item has appeared to reach a consensus the moderator will ask "Does anyone object?" as a final call for dissent from the consensus.
If an agenda item cannot reach a consensus a CPC member can call for either a closing vote or a vote to table the issue to the next meeting. Votes shall follow the procedure described in the Voting section of this charter.
Section 10. Voting
The CPC follows a Consensus Seeking decision making model. When an agenda item has appeared to reach a consensus the moderator will ask "Does anyone object?" as a final call for dissent from the consensus.
If an agenda item cannot reach a consensus a CPC member can call for either a closing vote or a vote to table the issue to the next meeting. The call for a vote must be seconded by a majority of the CPC or else the discussion will continue.
For all votes, a simple majority of all Voting CPC members for, or against, the issue wins. A Voting CPC member may choose to participate in any vote through abstention.
Note that, in addition to requiring a simple majority vote of the CPC Voting CPC members, all changes to this charter are also subject to approval from the OpenJS Foundation board.
Section 11. Definitions
Project: a technical collaboration effort that is organized through the project mentorship process and approved by the TAC.
Contributors: contribute code or other artifacts, but do not have the right to commit to the code base. Contributors work with the Project's Collaborators to have code committed to the code base. A Contributor may be promoted to a Collaborator by the Project's Maintainers. Contributors should rarely be encumbered by the TAC or Board.
Collaborator: a Contributor within a Project that has made significant and valuable contributions and has been given commit-access to that Project repository.
Maintainer: a Collaborator within a Project elected to represent the Project in an official decision making role as defined in the Project's governance policies.