|
| 1 | +<!-- Synced from kumahq/.github update lifecycle action (and remove this comment) to stop syncing --> |
| 2 | +# Kuma Governance |
| 3 | + |
| 4 | +This document defines governance policies for the Kuma project. |
| 5 | + |
| 6 | +Anyone can become a Kuma contributor simply by contributing to the project, with code, documentation or other means. |
| 7 | +As with all Kuma community members, contributors are expected to follow |
| 8 | +the [Kuma Code of Conduct](./CODE_OF_CONDUCT.md). |
| 9 | + |
| 10 | +## Voting |
| 11 | + |
| 12 | +All changes are always initiated either by issue creation (organization members) or pull requests (governance, maintainership). |
| 13 | +Votes take place using the https://github.com/cncf/gitvote application (Already installed in the kumahq organization). |
| 14 | + |
| 15 | +## Steering committee |
| 16 | + |
| 17 | +Steering committee members demonstrate a strong commitment to the project with views in the interest of the broader Kuma |
| 18 | +community. |
| 19 | +They are the stewards of the entire Kuma organization and are expected to dedicate thoughtful and serious effort towards |
| 20 | +the goal of general success in the ecosystem. |
| 21 | + |
| 22 | +Responsibilities include: |
| 23 | + |
| 24 | +- Own the overall vision of the Kuma project |
| 25 | +- Provide guidance to maintainers |
| 26 | +- Review and approve core architecture and design changes |
| 27 | +- Add/Remove members and approve deleting or archiving repositories in the Kumahq organization |
| 28 | +- Regularly attend community meetings |
| 29 | +- Facilitate community process (votes, process changes...) |
| 30 | + |
| 31 | +The list of members of the steering committee are in [OWNERS.md](./OWNERS.md). All steering committee members are owners |
| 32 | +of the Kumahq github organization. |
| 33 | + |
| 34 | +### Bootstrapping the committee |
| 35 | + |
| 36 | +The bootstrapped committee will consist of the 3 most active committers namely: |
| 37 | + |
| 38 | +- [Jakub Dyszkiewicz](https://github.com/jakubdyszkiewicz) |
| 39 | +- [Michael Beaumont](https://github.com/michaelbeaumont) |
| 40 | +- [Charly Molter](https://github.com/lahabana) |
| 41 | + |
| 42 | +### Changes to the steering committee |
| 43 | + |
| 44 | +- Members are elected for 2 years. |
| 45 | +- Members can step down by submitting an update to [OWNERS.md](./OWNERS.md) |
| 46 | +- Reelection and new members are accepted after a 6 weeks voting period and super majority of the steering committee is |
| 47 | + required (at least 2/3 of votes) to make changes. |
| 48 | + |
| 49 | + |
| 50 | +## Maintainership |
| 51 | + |
| 52 | +The Kuma project consists of multiple repositories. |
| 53 | +Each repository is subject to the same governance model, but different maintainers and reviewers. |
| 54 | + |
| 55 | +### Maintainers |
| 56 | + |
| 57 | +Maintainers have write access to the repo. |
| 58 | +The current maintainers of a repo can be found in [OWNERS.md](./OWNERS.md) file of the repo. |
| 59 | + |
| 60 | +Maintainers have the most experience with the given repo and are expected to lead its growth and improvement. |
| 61 | +Adding and removing maintainers for a given repo is the responsibility of the existing maintainer team for that repo and |
| 62 | +therefore does not require approval from the steering committee |
| 63 | + |
| 64 | +This privilege is granted with some expectation of responsibility: maintainers are people who care about the Kuma |
| 65 | +project and want to help it grow and improve. |
| 66 | +A maintainer is not just someone who can make changes, but someone who has demonstrated his or her ability to |
| 67 | +collaborate with the team, get the most knowledgeable people to review code, contribute high-quality code, and follow |
| 68 | +through to fix issues (in code or tests). |
| 69 | + |
| 70 | +#### Becoming a Maintainer |
| 71 | + |
| 72 | +To become a maintainer you need to demonstrate the following: |
| 73 | + |
| 74 | +* commitment to the project |
| 75 | + * participate in discussions, contributions, code reviews for substantial time |
| 76 | + * perform code reviews on non-trivial pull requests, |
| 77 | + * contribute to non-trivial pull requests and have them merged into master, |
| 78 | +* ability to write good code, |
| 79 | +* ability to collaborate with the team, |
| 80 | +* understanding of how the team works (policies, processes for testing and code review, etc), |
| 81 | +* understanding of the project's code base and coding style. |
| 82 | + |
| 83 | +### Reviewers |
| 84 | + |
| 85 | +Each repository can have a list of reviewers. |
| 86 | +Reviewers help maintainers review new contributions. |
| 87 | +They're typically newer to the project and interested in working toward becoming a maintainer. |
| 88 | +Reviewers may approve but not merge PRs - all PRs must be approved by a maintainer. |
| 89 | + |
| 90 | +The process for adding/removing reviewers is the same as maintainers |
| 91 | + |
| 92 | +The current list of reviewers for each repository (if any) is published and updated in each repo’s OWNERS.md file. |
| 93 | + |
| 94 | +> Note about auto assignment of PR reviewers: |
| 95 | +> For simplicity we use [CODEOWNERS](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) in github |
| 96 | +> teams backing codeowners should be name `<repo>-maintainers` and the matching repo should have an OWNERS.md file with a maintainers section. |
| 97 | +> This avoids keeping maintainers lists in all repos that are closely related (for example all maintainers of kumahq/kuma are also maintainers of kumahq/kuma-tools). |
| 98 | +
|
| 99 | +### Emeritus Maintainers/Reviewers |
| 100 | + |
| 101 | +Any maintainer can become Emeritus maintainer in two ways: |
| 102 | + |
| 103 | +- Asking explicitly by opening a PR to [OWNERS.md](./OWNERS.md) (no vote). |
| 104 | +- Someone calling a vote which is open for 5 days with at least one +1 vote for the steering committee and no -1 vote |
| 105 | + from the steering committee. |
| 106 | + |
| 107 | +### Changes in Maintainership |
| 108 | +A new maintainer can be proposed by opening a PR (with title `Maintainer Nomination`) to the repository containing the following information: |
| 109 | + |
| 110 | +* nominee's first and last name, |
| 111 | +* nominee's email address and GitHub user name, |
| 112 | +* an explanation of why the nominee should be a maintainer/reviewer (adding links to significant contributions) |
| 113 | + |
| 114 | +At least two maintainers need to agree with the nomination (or all maintainers if there's a single maintainer). |
| 115 | +If no one objects in 5 days, the nomination is accepted and PR is merged. |
| 116 | +If anyone objects or wants more information, the maintainers discuss and usually come to a consensus. |
| 117 | +If issues can't be resolved, there's a simple majority vote among steering committee members. |
| 118 | + |
| 119 | +Maintainers and reviewers can be removed if 2 maintainers approve and none disapprove. |
| 120 | +Maintainers and reviewers can leave by just submitting a PR to the repository's OWNERS.md (no vote required in this case). |
| 121 | + |
| 122 | +## Organization members |
| 123 | + |
| 124 | +Organization members are people who have `triage` access to the organization. |
| 125 | +Community members who wish to become members of the organization should meet the following requirements, which are open to the discretion of the steering committee: |
| 126 | + |
| 127 | +- Have enabled 2FA on their GitHub account. |
| 128 | +- Have joined the Kuma slack. |
| 129 | +- Are actively contributing to the project. Examples include: |
| 130 | + - opening issues |
| 131 | + - providing feedback on the project |
| 132 | + - engaging in discussions on issues, pull requests, Slack, etc. |
| 133 | + - attending community meetings |
| 134 | + - Have reached out to two current organization members who have agreed to sponsor their membership request. |
| 135 | + |
| 136 | +To do so they need to open an issue in kumahq/kuma showing that they fill the above requirements. Sponsors express their support by adding `+1` as a comment. |
| 137 | + |
| 138 | +## Changes in Governance |
| 139 | + |
| 140 | +All changes in Governance require a 2/3 majority vote by the steering committee. |
| 141 | + |
| 142 | +## Other Changes |
| 143 | + |
| 144 | +Unless specified above, all other changes to the project require a 2/3 majority vote by the steering committee. |
| 145 | +Additionally, any maintainer may request that any change require a 2/3 majority vote by the steering committee. |
0 commit comments