diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a9666bc4cf..ade77644c0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,6 +32,8 @@ If you're new to the project and want to help, but don't know where to start, lo These labels help you find issues that are well-suited for external contributions and where maintainers are actively looking for help. +For information on how project decisions are made, including voting and governance, see the [Agones Governance](./GOVERNANCE.md) documentation. + ## Submitting code via Pull Requests *Thank you* for considering submitting code to Agones! diff --git a/GOVERNANCE.md b/GOVERNANCE.md new file mode 100644 index 0000000000..4518cd75a4 --- /dev/null +++ b/GOVERNANCE.md @@ -0,0 +1,131 @@ +# Agones Project Governance + +The Agones project is dedicated to creating an open source, batteries-included, dedicated game server hosting platform built on Kubernetes. +This governance explains how the project is run. + +- [Values](#values) +- [Approvers](#approvers) +- [Becoming an Approver](#becoming-an-approver) +- [Meetings](#meetings) +- [CNCF Resources](#cncf-resources) +- [Code of Conduct Enforcement](#code-of-conduct) +- [Security Response Team](#security-response-team) +- [Voting](#voting) +- [Modifications](#modifying-this-charter) + +## Values + +The Agones project 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. + +## Approvers + +Agones Approvers have write access to the [project GitHub repository](https://github.com/agones-dev/agones). +They can merge their own patches or patches from others. The current approvers +can be found in [community_membership.md](./docs/governance/community_membership.md). Approvers collectively manage the project's +resources and contributors. + +This privilege is granted with some expectation of responsibility: approvers +are people who care about the Agones project and want to help it grow and +improve. An approver is not just someone who can make changes, but someone who +has demonstrated their ability to collaborate with the team, get the most +knowledgeable people to review code and docs, contribute high-quality code, and +follow through to fix issues (in code or tests). + +An approver is a contributor to the project's success and a citizen helping +the project succeed. + +The collective team of all Approvers is known as the Approver Council, which +is the governing body for the project. + +### Becoming an Approver + +Requirements and the nomination process for becoming an Approver are defined in +[community_membership.md](./docs/governance/community_membership.md#approver). + +Approvers who are selected will be granted the necessary GitHub rights, +invited to the [private approver mailing list](mailto:agones-admin@googlegroups.com), and provided access to all appropriate +resources. + +### Removing an Approver + +Resignation, removal criteria, and Emeritus status are defined in +[community_membership.md](./docs/governance/community_membership.md#resignation-and-removal). + +## Meetings + +Time zones permitting, Approvers are expected to participate in the public +community meeting as often as they are able, which occurs monthly. +Meeting details and calendar invites are available via the [mailing list](https://groups.google.com/forum/#!forum/agones-discuss) +and the [community calendar](https://calendar.google.com/calendar/embed?src=google.com_828n8f18hfbtrs4vu4h1sks218%40group.calendar.google.com&ctz=America%2FLos_Angeles). +Past meeting recordings are available on the [community YouTube playlist](https://www.youtube.com/playlist?list=PLhkWKwFGACw2dFpdmwxOyUCzlGP2-n7uF). + +Approvers will also have closed meetings in order to discuss security reports +or Code of Conduct violations. Such meetings should be scheduled by any +Approver on receipt of a security issue or CoC report. All current Approvers +must be invited to such closed meetings, except for any Approver who is +accused of a CoC violation. + +## CNCF Resources + +Any Approver may suggest a request for CNCF resources, either in the +[mailing list](https://groups.google.com/forum/#!forum/agones-discuss), the #development Slack channel, or during a +meeting. A simple majority of Approvers approves the request. The Approvers +may also choose to delegate working with the CNCF to non-Approver community +members, who will then be added to the [CNCF's Maintainer List](https://github.com/cncf/foundation/blob/main/project-maintainers.csv) +for that purpose. + +## Code of Conduct + +[Code of Conduct](./code-of-conduct.md) +violations by community members will be discussed and resolved +on the [private Approver mailing list](mailto:agones-admin@googlegroups.com) or on a private Slack channel. +If an Approver is directly involved in the report, the Approvers will instead designate two Approvers to work +with the CNCF Code of Conduct Committee in resolving it. + +## Security Response Team + +The Approvers will appoint a Security Response Team to handle security reports. +This committee may simply consist of the Approver Council themselves. If this +responsibility is delegated, the Approvers will appoint a team of at least two +contributors to handle it. The Approvers will review who is assigned to this +at least once a year. + +The Security Response Team is responsible for handling all reports of security +holes and breaches according to the [security policy](.github/SECURITY.md). + +## Voting + +While most business in Agones is conducted by "[lazy consensus](https://community.apache.org/committers/lazyConsensus.html)", +periodically the Approvers may need to vote on specific actions or changes. +A vote can be taken on [the developer mailing list](https://groups.google.com/forum/#!forum/agones-discuss), private Slack channels, +[the private Approver mailing list](mailto:agones-admin@googlegroups.com) for security or conduct matters, or via a GitHub issue for public matters. +Votes may also be taken at [the community meeting](https://calendar.google.com/calendar/embed?src=google.com_828n8f18hfbtrs4vu4h1sks218%40group.calendar.google.com&ctz=America%2FLos_Angeles). Any Approver may +demand a vote be taken. + +Most votes require a simple majority of all Approvers to succeed, except where +otherwise noted. Two-thirds majority votes mean at least two-thirds of all +existing approvers. + +## Modifying this Charter + +Changes to this Governance and its supporting documents may be approved by +a 2/3 vote of the Approvers. Proposed changes should be submitted as a GitHub Pull Request or Issue, +with the vote conducted on the PR or issue itself. diff --git a/README.md b/README.md index 82337569d2..514cc85668 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,8 @@ the [Project Security Policy](.github/SECURITY.md) ## Development and Contribution -Please read the [contributing](CONTRIBUTING.md) guide for directions on submitting Pull Requests to Agones, and community membership governance. +Please read the [contributing](CONTRIBUTING.md) guide for directions on submitting Pull Requests to Agones, +and the [governance](GOVERNANCE.md) documentation for decision-making and community membership governance. See the [Developing, Testing and Building Agones](build/README.md) documentation for developing, testing and building Agones from source. For adding a new field to one of the Custom Resource Definitions refer to [Development Work on Agones Custom Resource Definitions (CRDs)](install/helm/agones/README.md). diff --git a/code-of-conduct.md b/code-of-conduct.md index b5956e8a6c..d841b43494 100644 --- a/code-of-conduct.md +++ b/code-of-conduct.md @@ -1,74 +1,113 @@ -# Contributor Covenant Code of Conduct +## CNCF Community Code of Conduct v1.3 + +Other languages available: +- [Arabic/العربية](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/ar.md) +- [Bengali/বাংলা](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/bn.md) +- [Bulgarian/Български](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/bg.md) +- [Chinese/中文](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/zh.md) +- [Czech/Česky](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/cs.md) +- [Farsi/فارسی](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/fa.md) +- [French/Français](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/fr.md) +- [German/Deutsch](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/de.md) +- [Hebrew/עברית](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/he.md) +- [Hindi/हिन्दी](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/hi.md) +- [Hungarian/Magyar](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/hu.md) +- [Indonesian/Bahasa Indonesia](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/id.md) +- [Italian/Italiano](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/it.md) +- [Japanese/日本語](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/ja.md) +- [Korean/한국어](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/ko.md) +- [Polish/Polski](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/pl.md) +- [Portuguese/Português](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/pt.md) +- [Russian/Русский](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/ru.md) +- [Spanish/Español](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/es.md) +- [Traditional Chinese/繁體中文](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/zh-tw.md) +- [Turkish/Türkçe](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/tr.md) +- [Ukrainian/Українська](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/uk.md) +- [Vietnamese/Tiếng Việt](https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/vi.md) + +### Community Code of Conduct + +As contributors, maintainers, and participants in the CNCF community, and in the interest of fostering +an open and welcoming community, we pledge to respect all people who participate or contribute +through reporting issues, posting feature requests, updating documentation, +submitting pull requests or patches, attending conferences or events, or engaging in other community or project activities. + +We are committed to making participation in the CNCF community a harassment-free experience for everyone, regardless of age, body size, caste, disability, ethnicity, level of experience, family status, gender, gender identity and expression, marital status, military or veteran status, nationality, personal appearance, race, religion, sexual orientation, socioeconomic status, tribe, or any other dimension of diversity. -## Our Pledge +## Scope + +This code of conduct applies: +* within project and community spaces, +* in other spaces when an individual CNCF community participant's words or actions are directed at or are about a CNCF project, the CNCF community, or another CNCF community participant in the context of a CNCF activity. + +### CNCF Events -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. +CNCF events that are produced by the Linux Foundation with professional events staff are governed by the Linux Foundation [Events Code of Conduct](https://events.linuxfoundation.org/code-of-conduct/) available on the event page. This is designed to be used in conjunction with the CNCF Code of Conduct. ## Our Standards -Examples of behavior that contributes to creating a positive environment -include: +The CNCF Community is open, inclusive and respectful. Every member of our community has the right to have their identity respected. +Examples of behavior that contributes to a positive environment include but are not limited to: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community * Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission + + +Examples of unacceptable behavior include but are not limited to: + +* The use of sexualized language or imagery +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment in any form +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Violence, threatening violence, or encouraging others to engage in violent behavior +* Stalking or following someone without their consent +* Unwelcome physical contact +* Unwelcome sexual or romantic attention or advances +* Using CNCF projects or community spaces for political campaigning or promotion of political causes + that are unrelated to the advancement of cloud native technology. To clarify, this policy does not restrict individuals' personal attire, including attire that expresses personal beliefs or aspects of identity. * Other conduct which could reasonably be considered inappropriate in a professional setting -## Our Responsibilities +The following behaviors are also prohibited: +* Providing knowingly false or misleading information in connection with a Code of Conduct investigation or otherwise intentionally tampering with an investigation. +* Retaliating against a person because they reported an incident or provided information about an incident as a witness. -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. +By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect +of managing a CNCF project. +Project maintainers who do not follow or enforce the Code of Conduct may be temporarily or permanently removed from the project team. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +## Reporting -## Scope +For incidents occurring in the Kubernetes community, contact the [Kubernetes Code of Conduct Committee](https://git.k8s.io/community/committee-code-of-conduct) via . You can expect a response within three business days. + +For other projects, or for incidents that are project-agnostic or impact multiple CNCF projects, please contact the [CNCF Code of Conduct Committee](https://www.cncf.io/conduct/committee/) via . Alternatively, you can contact any of the individual members of the [CNCF Code of Conduct Committee](https://www.cncf.io/conduct/committee/) to submit your report. For more detailed instructions on how to submit a report, including how to submit a report anonymously, please see our [Incident Resolution Procedures](https://github.com/cncf/foundation/blob/main/code-of-conduct/coc-incident-resolution-procedures.md). You can expect a response within three business days. + +For incidents occurring at CNCF event that is produced by the Linux Foundation, please contact . -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. +## Frequently asked questions +For more information about this Code of Conduct, please see the [CNCF Code of Conduct Frequently Asked Questions](https://www.cncf.io/conduct/faq/). ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at [agones-coc@googlegroups.com](mailto:agones-coc@googlegroups.com). All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +Upon review and investigation of a reported incident, the CoC response team that has jurisdiction will determine what action is appropriate based on this Code of Conduct and its related documentation. -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +For information about which Code of Conduct incidents are handled by project leadership, which incidents are handled by the CNCF Code of Conduct Committee, and which incidents are handled by the Linux Foundation (including its events team), see our [Jurisdiction Policy](https://github.com/cncf/foundation/blob/main/code-of-conduct/coc-committee-jurisdiction-policy.md). -## Attribution +## Amendments -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +Consistent with the CNCF Charter, any substantive changes to this Code of Conduct must be approved by the Technical Oversight Committee. -[homepage]: https://www.contributor-covenant.org +## Acknowledgements +This Code of Conduct is adapted from the Contributor Covenant +(http://contributor-covenant.org), version 2.0 available at +http://contributor-covenant.org/version/2/0/code_of_conduct/ diff --git a/docs/governance/community_membership.md b/docs/governance/community_membership.md index cfe41a3fd1..6039abac74 100644 --- a/docs/governance/community_membership.md +++ b/docs/governance/community_membership.md @@ -1,6 +1,7 @@ # Community Membership This document outlines the responsibilities of contributor roles in Agones. +It is referenced by the [Agones Project Governance](../../GOVERNANCE.md). This is based on the [Kubernetes Community Membership](https://github.com/kubernetes/community/blob/master/community-membership.md). @@ -146,3 +147,18 @@ correctness issues, interactions with other parts of the system, etc. - Assigned PRs to review related based on expertise - Granted commit access to Agones repo +### Resignation and removal + +Approvers and releasers may resign at any time if they feel that they will not be able to +continue fulfilling their project duties. + +Approvers and releasers may also be removed after being inactive, failure to fulfill their +responsibilities, violating the Code of Conduct, or other reasons. +Inactivity is defined as a period of very low or no activity in the project +for a year or more, with no definite schedule to return to full role activity. + +An Approver or releaser may be removed at any time by a 2/3 vote of the remaining approvers. + +Depending on the reason for removal, an Approver or releaser may be converted to Emeritus +status. Emeritus members will still be consulted on some project matters +and can be rapidly returned to their original status if their availability changes.