From 119774e1be7ac701da1dc17be01a4368f1e50677 Mon Sep 17 00:00:00 2001 From: David Martin Date: Thu, 1 Aug 2024 16:05:05 +0100 Subject: [PATCH 1/2] Steering committee establishing Signed-off-by: David Martin --- GOVERNANCE.md | 247 +++++++++++++++++++++++- ROLES.md | 25 +++ elections/steering/2024/README.md | 80 ++++++++ elections/steering/2024/candidates.yaml | 3 + elections/steering/2024/voters.yaml | 3 + 5 files changed, 356 insertions(+), 2 deletions(-) create mode 100644 ROLES.md create mode 100644 elections/steering/2024/README.md create mode 100644 elections/steering/2024/candidates.yaml create mode 100644 elections/steering/2024/voters.yaml diff --git a/GOVERNANCE.md b/GOVERNANCE.md index d3baecf..cf90e2b 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -1,3 +1,246 @@ -## Kuadrant Governance +# Steering Committee Governance -Governance for the Kuadrant project is still a work in progress. You can participate in discussions via our project [slack channel](https://kubernetes.slack.com/archives/C05J0D0V525). +The Kuadrant Steering Committee is the governing body of the Kuadrant project, +providing decision-making and oversight pertaining to the project bylaws, +sub-organizations, and financial planning. The Steering Committee also defines +the project values and structure. + +This governance is an open, living document, and will continue to +evolve as the community and project change. + +## Values + +The Kuadrant and its leadership embrace the following values: + +* Openness: Communication and decision-making happens in the open and is discoverable for future + reference. As much as possible, all discussions and work take place in public + forums and open repositories. + +* Fairness: All stakeholders have the opportunity to provide feedback and submit + contributions, which will be considered on their merits. + +* Community over Product or Company: Sustaining and growing our community takes + priority over shipping code or sponsors' organizational goals. Each + contributor participates in the project as an individual. + +* Inclusivity: We innovate through different perspectives and skill sets, which + can only be accomplished in a welcoming and respectful environment. + +* Participation: Responsibilities within the project are earned through + participation, and there is a clear path up the contributor ladder into leadership + positions. + +## Charter + +The following responsibilities and powers belong to the Steering Committee. + +Technical governance is expected to be performed by the Maintainers of the +various project areas and subprojects, as defined in the appropriate OWNERS files. + +* Delegate ownership of, responsibility for and authority over areas of the + project to specific entities. +* Define, evolve, and defend the vision, mission and the values of the project. +* Charter and refine policy for defining new community groups, and establish + transparency and accountability policies for such groups +* Define and evolve project and group governance structures and policies. +* Act as a final escalation point for disputes in any project repository or + group. +* Request funds and other support from the CNCF (e.g. marketing, press, etc.) +* Coordinate with the CNCF regarding usage of the Kuadrant brand and deciding + project scope, core requirements, and conformance, as well as how that brand + can be used in relation to other efforts or vendors. +* Decide, for the purpose of elections, who is a member of standing, and what + privileges that entails. +* Control and delegate access to and establish processes regarding all project + repositories, resources, and assets. +* Appointing the members of the Code of Conduct Committee in order to ensure + responsiveness, diversity, and good judgement. + +## Example decisions + +* Decides to expand the project's scope to include new functionality related to data analytics, setting the strategic vision for the next major release. +* Decides that the project should support an additional Gateway API provider for a specific set of Kuadrant policies +* Decides to set up a special interest group to investigate and prototype a new type of policy focused on LLM integrations + +## Delegated authority + +The Steering Committee may choose to delegate its authority to other committees +as-needed. The committee currently recognizes this delegated authority for: + +- n/a + +## Committee Meetings + +The Steering Committee meets every 2 weeks, or as-needed. +Meetings are held online, and are public by default. + +Given the private nature of some of these discussions (e.g. privacy, private +emails to the committee, code of conduct violations, escalations, disputes +between members, security reports, etc.) some meetings are held in private. + +Meeting notes are available to members of the +[kuadrant mailing list](https://groups.google.com/g/kuadrant). +Public meetings will be recorded and the recordings made available publicly. + +Questions and proposals for changes to governance or community procedures are posted as +[issues or pull requests in the governance repo](https://github.com/Kuadrant/governance), and +the Steering Committee invites your feedback there. + +## Committee members + +Seats on the Steering Committee are held by an individual, not by their +employer. + +The current membership of the committee is currently (listed alphabetically by +first name): + +|   | Member | Organization | +| -------------------------------------------------------------- | ---------------- | ------------ | + +[TODO: Pending elections] + +## Decision process + +The Steering Committee desires to always reach consensus. + +Decisions requiring a vote include: issuing written policy, amending existing +written policy, creating, removing, or modifying a committee or SIG, all spending, +hiring, and contracting, official responses to publicly raised issues, or any +other decisions that at least two of the members present decide require a vote. + +Decisions are made in meetings when a quorum of more than half of the members +are present (and all members have been informed of the meeting), and may pass +with more than half the members of the committee supporting it. + +## Getting in touch + +Open an issue on [the governance repo](https://github.com/Kuadrant/governance) and indicate that you would like +attention from the steering committee. + +## Composition + +The steering committee has 3 seats. These seats are +open to any project contributor. See +[candidate eligibility](#candidate-eligibility) for a definition. + +## Election Procedure + +### Timeline + +Steering Committee elections are held annually. Six weeks or more before the +election, the Steering Committee will appoint Election Officer(s) (see below). +Four weeks or more before the election, the Election Officer(s) will issue a +call for nominations, publish the list of voters, and open the call for +exceptions. Three days before the election the call for nominations and exceptions +will be closed. The election will be open for voting not less than two weeks and +not more than four. The results of the election will be announced within one +week of closing the election. New Steering Committee members will take office on +October 1st of each year. + +### Election Officer(s) + +Six weeks or more before the election, the Steering Committee will appoint +between one and three Election Officer(s) to administer the election. Elections +Officers will be community members in good standing who are eligible to +vote, are not running for Steering in that election, who are not currently part +of the Steering Committee and can make a public promise of impartiality. They +will be responsible for: + +- Making all announcements associated with the election +- Preparing and distributing electronic ballots +- Judging exception requests +- Assisting candidates in preparing and sharing statements +- Tallying voting results according to the rules in this charter + +### Eligibility to Vote + +Anyone who has at least 10 contributions in the last 12 months is +eligible to vote in the Steering election. Contributions are defined as opening PRs, +reviewing and commenting on PRs, opening and commenting on issues, writing +design docs, commenting on design docs, helping people on community forums, participating +in working groups, and other efforts that help advance the project. + +[This dashboard](https://kuadrant.devstats.cncf.io/d/8/dashboards?orgId=1&refresh=15m) +shows only GitHub based contributions and does not capture all the contributions +we value. We expect this metric not to capture everyone who should be eligible +to vote. If a community member has had significant contributions over the past +year but is not captured in Devstats, +they will be able to submit an exception form to the Elections Officer(s) who +will then review and determine whether this member should be eligible to vote. +All exceptions, and the reasons for them, will be recorded and saved by the +officers. + +The electoral roll of all eligible voters will be captured in the [./elections](./elections) folder, as will the voters’ guide. + +We are committed to an inclusive process and will adapt future eligibility +requirements based on community feedback. + +### Candidate Eligibility + +Community members must be eligible to vote in order to stand for election (this +includes voters who qualify for an exception). Candidates may self-nominate or +be nominated by another eligible member. There are no term limits for Steering +Committee members. Nothing prevents a qualified member from serving on both Steering +and other groups simultaneously. + +To run for a seat, a candidate must additionally be at least a +project maintainer as defined in +[ROLES.md](./ROLES.md). + +### Voting Procedure + +Elections will be held using a time-limited +[Condorcet](https://en.wikipedia.org/wiki/Condorcet_method) ranking on +using the IRV method. The top vote-getters will be elected to the open seats, +with the exceptions for company representation discussed below. + +### Limitations on Company Representation + +When feasible, no more than 1 seats may be held by employees of the same organization (or +conglomerate, in the case of companies owning each other). If an +election results in greater than 1 employee of the same organization being +selected, the lowest vote getters from any particular employer will be removed until +representation on the committee is down to two. + +If employers change because of job changes, acquisitions, or other events, in a +way that would yield too many seats being held by employees of the same +organization, sufficient members of the committee must resign until only 1 +employee of the same employer are left. If it is impossible to find sufficient +members to resign, all employees of that organization will be removed and new +special elections held. In the event of a question of company membership (for +example evaluating independence of corporate subsidiaries) a majority of all +non-involved Steering Committee members will decide. + +## Vacancies + +In the event of a resignation or other loss of an elected SC member, the +candidate with the next most votes from the previous election will be offered +the seat, provided that person otherwise qualifies to join the SC. This process +will continue until the seat is filled. + +In case this fails to fill the seat, a special election for that position will +be held as soon as possible, unless the regular SC election is less than 7 weeks +away. Eligible voters from the most recent election will vote in the special +election. Eligibility will not be redetermined at the time of the special +election. Any replacement SC member will serve out the remainder of the term for +the person they are replacing, regardless of the length of that remainder. + +## Changes to the charter + +Changes to this charter may be proposed via a PR on the charter itself. +Amendments are accepted with majority consent of the committee as per the +[decision process](#decision-process) outlined above. + +Proposals and amendments to the charter are available for at least a period of +one week for comments and questions before a vote will occur. + +## Authority, Facilitation, and Decision Making + +Ideally most decisions will be made at the lowest possible level within the +project: within individual working groups. When this is not possible, Steering +can help facilitate a conversation to work through the contended issue. When +facilitation by the SC does not resolve the contention, the SC may have to +make a decision. + +Note that if the committee is called to resolve contended decisions regularly, it is a +symptom of a larger problem in the community that will need to be addressed. diff --git a/ROLES.md b/ROLES.md new file mode 100644 index 0000000..23c1176 --- /dev/null +++ b/ROLES.md @@ -0,0 +1,25 @@ +# Roles + +## Contributor + +A contributor is any person who has at least 50 contributor 'Activities' in the Contributor Leaderboard for the last 12 months, +or at least 5 pull requests merged in the last 12 months, +as shown in https://insights.lfx.linuxfoundation.org/foundation/cncf/overview/github?project=kuadrant&repository=all&routedFrom=Github&dateFilters=Last%2012%20Months&dateRange=2023-08-02%20to%202024-08-01&compare=PP&granularity=month&hideBots=true + +## Maintainer + +The list of maintainers for the project is at [./MAINTAINERS.md](./MAINTAINERS.md). +Generally, these people have the ability to create, approve and merge pull requests on any repository. + +[TODO: Decide & document rules for how someone can become a maintainer] + +### Component specific maintainers + +Some components have a subset of maintainers. The list of components and maintainers can be found in the [./MAINTAINERS.md#component-specific-maintainers](./MAINTAINERS.md#component-specific-maintainers) section. +These people have the same permissions as maintainers. +However, their role includes having domain expertise in those components. +They can be thought of as technical leads in a smaller part of the overall project. +There are no set rules for how a person can move from a maintainer role to a component specific maintainer role. +Generally, if a person is sufficiently active in a particular area, they may add themselves, be added, or request to be added to the list for a component. + +[TODO: Decide & document rules for how someone can become a component specific maintainer] diff --git a/elections/steering/2024/README.md b/elections/steering/2024/README.md new file mode 100644 index 0000000..8c9c75c --- /dev/null +++ b/elections/steering/2024/README.md @@ -0,0 +1,80 @@ +# 2024 VOTERS GUIDE - Kuadrant Steering Committee Election + +## Purpose + +The role of this election is to fill out the three (3) seats due for the first election on the Kuadrant Steering Committee. +Each elected member will serve a two year term. + +## Election Platform + +[TODO: something like https://elekto.dev/ ? https://elekto.dev/docs/voting/] + +## Background + +This election will shape the future of Kuadrant as a community and project. The [Steering Committee Charter](../GOVERNANCE.md) covers the health of the project and community as a whole. Some direct responsibilities of steering members to consider as you are deciding whether to run or who to vote for: + +* Delegate ownership of, responsibility for and authority over areas of the + project to specific entities. +* Define, evolve, and defend the vision, mission and the values of the project. +* Charter and refine policy for defining new community groups, and establish + transparency and accountability policies for such groups +* Define and evolve project and group governance structures and policies. +* Act as a final escalation point for disputes in any project repository or + group. +* Request funds and other support from the CNCF (e.g. marketing, press, etc.) +* Coordinate with the CNCF regarding usage of the Kuadrant brand and deciding + project scope, core requirements, and conformance, as well as how that brand + can be used in relation to other efforts or vendors. +* Decide, for the purpose of elections, who is a member of standing, and what + privileges that entails. +* Control and delegate access to and establish processes regarding all project + repositories, resources, and assets. + +## Eligibility + +Please refer to the [Steering Committee Charter](../GOVERNANCE.md) for [Steering Committee Charter](../GOVERNANCE.md#eligibility-for-candidacy) + +### Schedule + +| Date | Event | +|:------------------------|:----------------------------------------------------------------------| +| TBD | Steering Committee selects Election Committee | +| TBD | Announcement of Election and publication of voters.yaml | +| TBD | Steering Committee Q+A for the candidates | +| TBD | Candidate nominations due at the end of the day in AoE time | +| TBD | Election Begins | +| TBD | Election Closes at the end of the day in AoE time | +| TBD | Private announcement of Results to SC members not up for election | +| TBD | Private announcement of Results to all candidates | +| Tue, October 1 | Public announcement of Results at Public Steering Committee Meeting | +| TBD | Election Retro | + +## Candidacy Process + +**Nomination** + +1. If you want to stand for the election, create an issue in this GitHub repo +(kuadrant/governance) with the title `Steering Committee Nomination: Your Name (@yourgithub)`. +If you want to nominate someone else, you may do so, but PLEASE talk to them +first. + +2. After creating the issue, send an email to kuadrant@googlegroups.com +with a link to the issue. The subject line of the email should be same as +the title of the issue. This email should encourage people to second your +nomination on GitHub, as +1s via email will not count. Here's an example email: + + Hi! I'm nominating _candidate_ for steering committee this year. + If you are an eligible voter and think they should run, please add your +1 as + a comment on the issue _link_ and mention the organization you work for. + While supportive replies are very nice, only comments on the issue will count + towards their eligibility. + +3. If you wish to accept a nomination from someone else, reply to the nomination +**issue** saying something like "I accept the nomination". + +4. Finally, the candidate closes the **issue** (`#NNN`) by opening a Pull Request +to add their github id to the `candidates.yaml` file. + +## Voting Process + +[TODO] \ No newline at end of file diff --git a/elections/steering/2024/candidates.yaml b/elections/steering/2024/candidates.yaml new file mode 100644 index 0000000..8c98682 --- /dev/null +++ b/elections/steering/2024/candidates.yaml @@ -0,0 +1,3 @@ +# 2024 Steering Committee Election +candidates: +- \ No newline at end of file diff --git a/elections/steering/2024/voters.yaml b/elections/steering/2024/voters.yaml new file mode 100644 index 0000000..854fef8 --- /dev/null +++ b/elections/steering/2024/voters.yaml @@ -0,0 +1,3 @@ +# 2024 Steering Committee Election +eligible_voters: +- \ No newline at end of file From 46b71886403383090f22b52b71e399ecb65c9fbe Mon Sep 17 00:00:00 2001 From: David Martin Date: Mon, 26 Aug 2024 10:11:43 +0100 Subject: [PATCH 2/2] Update GOVERNANCE.md Co-authored-by: Jason Madigan <4467+jasonmadigan@users.noreply.github.com> --- GOVERNANCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index cf90e2b..e9f5ff6 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -20,7 +20,7 @@ The Kuadrant and its leadership embrace the following values: contributions, which will be considered on their merits. * Community over Product or Company: Sustaining and growing our community takes - priority over shipping code or sponsors' organizational goals. Each + priority over shipping code or sponsors' organizational goals. Each contributor participates in the project as an individual. * Inclusivity: We innovate through different perspectives and skill sets, which