Skip to content

Create GOVERNANCE.md #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
Aug 27, 2024
193 changes: 193 additions & 0 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# Atlantis Governance

**Atlantis** is committed to building an open, inclusive, productive, and self-governing community focused on creating a high-quality infrastructure orchestration system. This document governs the community and defines how it should work together to achieve this goal.

Atlantis follows a two-tier governance model. The higher tier comprises the Atlantis Steering Committee, which is responsible for the project's overall health. [Maintainers](#Maintainer), [Core-Contributors](#Core-Contributor), and [Members](#Member) make up the lower tier. They are the main contributors to one or more repositories within the overall project.

The governance policies defined here apply to all repositories in the [`runatlantis`](https://github.com/runatlantis) GitHub organization.

## Atlantis Steering Committee

The Atlantis project has a steering committee of 5 members, with a maximum of 1 member from any organization. The steering committee has the final say in any decision concerning the Atlantis project, with the exceptions of deciding steering committee membership and changes to project governance. See [Updating Governance](#Updating-Governance).

The project's current maintainers will nominate the initial steering committee to ensure the continuity of the project charter and vision as additional members come on board. Once the terms of the initial committee members expire, new members will be selected through the election process outlined below.

A list of the steering committee members will be published once it is decided upon and voted on.

Any decision made must not conflict with CNCF policy.

Each steering committee member's maximum term length is two years, with no term limit restriction.

Voting for steering committee members is open to all current steering committee members and maintainers.

## Repository Governance

The Atlantis project consists of multiple repositories published and maintained on GitHub. Each repository will be subject to the same overall governance model but will be allowed to have different teams of contributors (“members,” “core-contributor,” and “maintainers”) with permissions and access to the repository. This will increase the diversity of people in the Atlantis organization and also increase the velocity of code changes.

### Member

**Defined by:** Member of the Atlantis GitHub organization

Members are continuously active contributors in the community. They can have issues and PRs assigned to them. Members are expected to remain active contributors to the community. This affiliation only comes with the base permissions (triage-only) for the organization, so the requirements are fairly low. Adding new members has the following benefits:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Members are continuously active contributors in the community. They can have issues and PRs assigned to them. Members are expected to remain active contributors to the community. This affiliation only comes with the base permissions (triage-only) for the organization, so the requirements are fairly low. Adding new members has the following benefits:
Members are continuously active contributors in the community. They can have issues and Pull Requests assigned to them. Members are expected to remain active contributors to the community. This affiliation only comes with the base permissions (triage-only) for the organization, so the requirements are fairly low. Adding new members has the following benefits:


- Encourages a sense of belonging to the community and encourages collaboration
- Promotes visibility of the project by being displayed on each member’s profile
- Demonstrated tangible growth of the community and adoption of the project
- Allows issues to be assigned to the user

#### Requirements

- Enabled two-factor authentication on their GitHub account
- Have joined the Atlantis Slack channel.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Have joined the Atlantis Slack channel.
- Have joined the Atlantis Slack channel

- Have read the contributor guide
- Are actively contributing to 1 or more repositories in the Atlantis GitHub organization. Examples include:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Are actively contributing to 1 or more repositories in the Atlantis GitHub organization. Examples include:
- Are actively contributing to one or more repositories in the Atlantis GitHub organization. Examples include:

- opening issues
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- opening issues
- Opening issues

- providing feedback on the project
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- providing feedback on the project
- Providing feedback on the project

- engaging in discussions on issues, pull requests, Slack, etc.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- engaging in discussions on issues, pull requests, Slack, etc.
- Engaging in discussions on issues, Pull Requests, Slack, etc.

- attending community meetings
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- attending community meetings
- Attending community meetings

- Sponsored by 2 Atlantis members. Note the following requirements for sponsors:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Sponsored by 2 Atlantis members. Note the following requirements for sponsors:
- Sponsored by two Atlantis members. Note the following requirements for sponsors:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sponsors here kept going to commercial sponsors; could alternative wording like mentor or advisor be used to describe this role?

Sponsors must interact closely with prospective members, e.g., reviewing code/design/proposal, coordinating on issues, etc.
- Sponsors must be core-contributors or maintainers in at least one OWNERS file within one of the Atlantis GitHub organizations.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Sponsors must be core-contributors or maintainers in at least one OWNERS file within one of the Atlantis GitHub organizations.
- Sponsors must be core-contributors or maintainers in at least one OWNERS file within the Atlantis GitHub organization.

- Sponsors must be from multiple member companies to demonstrate integration across community.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand the meaning of this one, specifically "companies" part - its the first and only place "companies" and "company" are mentioned


Once you've met the requirements, do the following steps:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you feels out of place here, since everything else so far have not been addressing the reader - its the first you in the doc and kinda comes at you (no phun intended) out of nowhere. I omitted suggested edits to the bullet list that has the you/your wording as well pending feedback here

Suggested change
Once you've met the requirements, do the following steps:
Once the member has met the requirements, the following steps must be taken:


- Open an issue against the runatlantis/org repo
- Ensure your sponsors are @mentioned on the issue
- Complete every item on the checklist (preview the current version of the template)
- Make sure that the list of contributions included is representative of your work on the project.
- Have your sponsoring reviewers reply confirmation of sponsorship: +1
- Once your sponsors have responded, your request will be reviewed by the Atlantis Steering Committee

#### Responsibilities and privileges

- Have the ability to _moderate_ GitHub discussions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't really use _ italic anywhere else in the document but this section; I do like that we highlight words with special meaning throughout the doc, for example the various roles names, and technical terms, but more importantly, we should be consistent in one direction or the other

Suggested change
- Have the ability to _moderate_ GitHub discussions
- Have the ability to _moderate_ GitHub discussions

- This includes editing and hiding comments, labeling and closing discussions, and selecting an answer (when applicable)
- This does _not_ include editing the opening comment
- Have the ability to _triage_ GitHub issues and pull requests
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm torn on PR => Pull Request or pull request; however the doc is doing all three of them; I think we should be consistent in usage

Suggested change
- Have the ability to _triage_ GitHub issues and pull requests
- Have the ability to _triage_ GitHub issues and Pull Requests

- This includes labeling, closing or re-opening, adding to projects, assigning, and adding reviewers
- This does _not_ include editing or hiding comments nor creating, deleting, or modifying labels or projects themselves
Comment on lines +68 to +69
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might ease reading to break this into more lines with stronger focus, its a long list to parse and grok effectively

Suggested change
- This includes labeling, closing or re-opening, adding to projects, assigning, and adding reviewers
- This does _not_ include editing or hiding comments nor creating, deleting, or modifying labels or projects themselves
- This includes labeling, closing or re-opening, adding to projects, assigning, and adding reviewers
- This does _not_ include editing or hiding comments nor creating, deleting, or modifying labels on projects themselves

- Responsive to issues and PRs assigned to them
- Responsive to mentions of subprojects they are members of
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Responsive to mentions of subprojects they are members of
- Responsive to `@mentions` of subprojects they are members of

- Active owner of code they have contributed (unless ownership is explicitly transferred)
- Code is well-tested
- Tests consistently pass
- Addresses bugs or issues discovered after code is accepted
- Members are welcome and encouraged to review PRs and proposals.
- They can be assigned to issues and PRs, and people can ask members for reviews with a `/cc @username`.
Comment on lines +76 to +77
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Members are welcome and encouraged to review PRs and proposals.
- They can be assigned to issues and PRs, and people can ask members for reviews with a `/cc @username`.
- Members are welcome and encouraged to review PRs and proposals.
- Members can be assigned to issues and PRs, and people can ask members for reviews with a `/cc @username`.


**Note:** Members who frequently contribute code are expected to proactively
perform code reviews and work towards becoming a *core-contributor* for the
subproject/repo that they are active in.
Comment on lines +79 to +81
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Note:** Members who frequently contribute code are expected to proactively
perform code reviews and work towards becoming a *core-contributor* for the
subproject/repo that they are active in.
**Note:** Members who frequently contribute code are expected to proactively perform code reviews and work towards becoming a core contributor for the subproject/repository in which they are active.


### Core-Contributor

Core-Contributors are able to both review and approve code contributions as well as
help maintainers triage issues and with project management.

While code review is focused on code quality and correctness, approval is focused on
holistic acceptance of a contribution including: backwards / forwards
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
holistic acceptance of a contribution including: backwards / forwards
holistic acceptance of a contribution including (but not limited to): backward / forward

compatibility, adhering to API and flag conventions, subtle performance and
correctness issues, interactions with other parts of the system, etc.
Comment on lines +88 to +91
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
While code review is focused on code quality and correctness, approval is focused on
holistic acceptance of a contribution including: backwards / forwards
compatibility, adhering to API and flag conventions, subtle performance and
correctness issues, interactions with other parts of the system, etc.
While code review is focused on code quality and correctness, approval is focused on holistic acceptance of a contribution, including backward/forward compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, etc.


**Defined by:** *Core contributors* entry in an OWNERS file in a repo owned by the
Atlantis project.

#### Requirements

The following applies to the part of the codebase for which one would be an approver in an `OWNERS` file.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the codebase here might be a bit too specific since the org has multiple code-bases within the org?

Suggested change
The following applies to the part of the codebase for which one would be an approver in an `OWNERS` file.
The following applies to the part of a repository for which one would be an approver in an `OWNERS` file.


- Member for at least 3 months
- Author of at least 3 substantial PRs to the codebase, with the
Comment on lines +100 to +101
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Member for at least 3 months
- Author of at least 3 substantial PRs to the codebase, with the
- Member for at least three months
- Author of at least three substantial PRs to the codebase, with the

definition of substantial subject to the lead's discretion (e.g.
refactors, enhancements rather than grammar correction or one-line pulls).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
refactors, enhancements rather than grammar correction or one-line pulls).
refactors, enhancements rather than grammar correction or one-line pulls)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I see the irony of this suggested edit 😆

- Exhibiting sound technical judgment through PR contributions
- Exhibiting sound technical judgment through PR reviews
- Sponsored by a Maintainer
- With no objections from other Maintainers or Steering Committee
- Done through PR to update the OWNERS file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand this item; suggesting edit based of m understanding

Suggested change
- Done through PR to update the OWNERS file
- Submitted a pull request to update the OWNERS file



Comment on lines +109 to +110
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

#### Responsibilities and privileges

The following applies to the part of the codebase for which one would be a core-contributor
in an `OWNERS` file.

- Core-contributor status may be a precondition to accepting large code contributions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can understand the sentiment of this one; but if the project can refuse a big submission (even one-off) based on membership role, it should probably be clearly started in the repo contributing guidelines to avoid frustrations?

- Demonstrate sound technical judgment
- Responsible for project quality control via code reviews
- Focus on holistic acceptance of contributions such as dependencies with other features, backward / forwards
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Focus on holistic acceptance of contributions such as dependencies with other features, backward / forwards
- Focus on holistic acceptance of contributions such as dependencies with other features, backward / forward

compatibility, API and flag definitions, etc
- Expected to be responsive to review requests (inactivity may result in suspension until active again)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it be worth defining what inactivity mean in terms of duration?

- Mentor Members
- May approve and merge code contributions for acceptance
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm missing some context here I think; what is merge code contributions for acceptance?

- Monitor Atlantis Slack (delayed response is perfectly acceptable), particularly for the area of your repository
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Monitor Atlantis Slack (delayed response is perfectly acceptable), particularly for the area of your repository
- Monitor Atlantis Slack, particularly for the area of your repository - delayed response is perfectly acceptable.

- Periodically attend the recurring community meetings
- In general, continue to be willing to spend at least 5% of their time working on Atlantis (~0.25 business days per week)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this expected to be averages over a period of time or on a per week-to-week basis? If we want to be sensitive to responsiveness, sum'ing hours over 1 or 2 weeks makes sense, but if bursty contributions are fine, and latency is not important, looking at it monthly yields more flexibility for folks involved.


Each repository's current list of core-contributors is published and updated in each repo’s OWNERS.md file.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe just owners file?

Suggested change
Each repository's current list of core-contributors is published and updated in each repo’s OWNERS.md file.
Each repository's current list of core-contributors is published and updated in each repo’s OWNERS file.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are CODEOWNERS and OWNERS interchangeable here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OWNER.md is a separate file from CODEOWNERS. It is used to identify individual repo roles rather than the entire organization roles.


### Maintainer

Each Atlantis organization repository is allowed a unique set of maintainers. Maintainers have the most experience with the given repository and are expected to have the knowledge and insight to lead its growth and improvement.

New maintainers and subproject maintainers must be nominated by an existing maintainer and must be elected by a supermajority of existing maintainers. Likewise, maintainers can be removed by a supermajority of the existing maintainers or can resign by notifying one of the maintainers.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one of the maintainers is a bit fuzzy in expectation compared to many other statements in the document; should folks resigning perhaps notify the existing maintainer group and the steering committee, so its tracked and verified the maintainer stepping down is properly having all permissions and access revoked - and not accidentally being forgotten by "one of the maintainers" - that potentially also could be churning out of the project


If a Maintainer feels she/he can not fulfill the "Expectations from Maintainers", they are free to step down.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm native english speaking, but I think they covers the intent here without gendering?

Suggested change
If a Maintainer feels she/he can not fulfill the "Expectations from Maintainers", they are free to step down.
If a Maintainer feels they can not fulfill the "Expectations from Maintainers", they are free to step down.


In general, adding and removing maintainers for a given repo is the responsibility of the existing maintainer team for that repo and therefore does not require approval from the steering committee. However, in rare cases, the steering committee can veto the addition of a new maintainer by following the conflict resolution process.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In general, adding and removing maintainers for a given repo is the responsibility of the existing maintainer team for that repo and therefore does not require approval from the steering committee. However, in rare cases, the steering committee can veto the addition of a new maintainer by following the conflict resolution process.
In general, adding and removing maintainers for a given repository is the responsibility of the existing maintainer team and, therefore, does not require approval from the steering committee. However, in rare cases, the steering committee can veto the addition of a new maintainer by following the conflict resolution process.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bonus for linking to the resolution process section / doc here

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In general, adding and removing maintainers for a given repo is the responsibility of the existing maintainer team for that repo and therefore does not require approval from the steering committee. However, in rare cases, the steering committee can veto the addition of a new maintainer by following the conflict resolution process.
In general, adding and removing maintainers for a given repository is the responsibility of the existing maintainer team for that repository and therefore does not require approval from the steering committee. However, in rare cases, the steering committee can veto the addition of a new maintainer by following the conflict resolution process.


Responsibilities include:

- Strong commitment to the project
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this, but how is that measured; its a bit more subjective than the other responsibilities listed.

- Participate in design and technical discussions
- Participate in the conflict resolution and voting process at the repository scope when necessary
- Seek review and obtain approval from the steering committee when making a change to central architecture that will have broad impact across multiple repositories
- Contribute non-trivial pull requests
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I understand the intent of this, but 20 "trivial" quality of life changes can easily outshine a single "non-trivial" change in terms of project health, quality, and improved velocity in the long term; so feels a bit weird calling out out "output" here rather than "outcomes" of the contributions

- Perform code reviews on other's pull requests
- Ensure that proposed changes to your repository adhere to the established standards, best practices, and guidelines, and that the overall quality and integrity of the code base is upheld
- Add and remove maintainers to the repository as described below
- Approve and merge pull requests into the code base
- Regularly triage GitHub issues. The areas of specialization possibly listed in OWNERS.md can be used to help with routing an issue/question to the right person.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Regularly triage GitHub issues. The areas of specialization possibly listed in OWNERS.md can be used to help with routing an issue/question to the right person.
- Regularly triage GitHub issues. The areas of specialization listed in OWNERS.md can help direct an issue or question to the right person

- Make sure that ongoing PRs are moving forward at the right pace or closing them
- Monitor Atlantis Slack (delayed response is perfectly acceptable), particularly for the area of your repository
- Regularly attend the recurring community meetings
- Periodically attend the recurring steering committee meetings to provide input
- In general, continue to be willing to spend at least 25% of their time working on Atlantis (~1.25 business days per week)

Each repository's current list of maintainers is published and updated in each repo’s OWNERS.md file.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question about the file for owners

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OWNER.md is a separate file from CODEOWNERS. It is used to identify individual repo roles rather than the entire organization roles.


#### Removing a core-contributor or maintainer

If a core-contributor or maintainer is no longer interested or cannot perform the the duties listed above, they should volunteer to be moved to emeritus status. In extreme cases this can also occur by a vote of the maintainers per the voting process below.
Copy link
Member

@chenrui333 chenrui333 May 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On paper, contributor/maintainer should opt out, but it is a bit tricky process.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any change that needs to be made here? Volunteer to emerius is the same as opting out or stepping down. Do we need to improve the language?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If a core-contributor or maintainer is no longer interested or cannot perform the the duties listed above, they should volunteer to be moved to emeritus status. In extreme cases this can also occur by a vote of the maintainers per the voting process below.
If a core contributor or maintainer is no longer interested or cannot perform the duties listed above, they should volunteer to be moved to emeritus status. In extreme cases, this can also occur by a vote of the maintainers per the voting process below.


## Conflict resolution and voting
In general, it is preferred that technical issues and team membership are amicably worked out between the persons involved. If a dispute cannot be decided independently, the leadership at the appropriate scope can be called in to decide an issue. If that group cannot decide an issue themselves, the issue will be resolved by voting.
Comment on lines +164 to +165
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Conflict resolution and voting
In general, it is preferred that technical issues and team membership are amicably worked out between the persons involved. If a dispute cannot be decided independently, the leadership at the appropriate scope can be called in to decide an issue. If that group cannot decide an issue themselves, the issue will be resolved by voting.
## Conflict resolution and voting
In general, it is preferred that technical issues and team membership be amicably worked out between the parties involved. If a dispute cannot be decided independently, the leadership at the appropriate scope can be called in to decide it. If that group cannot decide on an issue, it will be resolved by voting.

Copy link
Contributor

@jippi jippi May 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth calling out who is legible for voting when resolving it like that?


### Issue Voting Scopes
Issues can be resolved or voted on at different scopes:
Comment on lines +167 to +168
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Issue Voting Scopes
Issues can be resolved or voted on at different scopes:
### Issue Voting Scopes
Issues can be resolved or voted on at different scopes:


* **Repository**: When an issue or conflict only affects a single repository, then the maintainer team for that repository should resolve or vote on the issue. This includes technical decisions as well as team membership.
* **Organization**: If an issue or conflict affects multiple repositories or the Atlantis organizations and community at large, the steering committee must resolve or vote on the issue.

### Issue Voting Process

The issue voting process is usually a simple majority in which each entity within the voting scope gets a single vote. The following decisions require a super majority (at least 2/3 of votes). All other decisions and changes require only a simple majority:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what happens if voting is 50/50 (even number of legible voters) - who acts as tie breaker?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no guidance on this. See: https://github.com/cncf/project-template/blob/main/GOVERNANCE-maintainer.md#voting

The voting entities should prioritize membership count with odd numbers to avoid this, and most likely will be to prioritize nominating/voting new members to the role before proceeding with a vote.


* Updates to governance by the steering committee
* Additions and removals of maintainers by the repository’s current maintainer team
* Vetoes of maintainer additions by the steering committee

For organization scope voting, repository maintainers do not have a vote in this process, although steering committee members should consider their input.

For formal votes, a specific statement of what is being voted on should be added to the relevant GitHub issue or PR. Voting entities should indicate their yes/no vote on that issue or PR.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For formal votes, a specific statement of what is being voted on should be added to the relevant GitHub issue or PR. Voting entities should indicate their yes/no vote on that issue or PR.
The relevant GitHub issue or Pull Request should include a specific statement of what is being voted on for formal votes. Voting entities should indicate their yes/no vote on that issue or Pull Request.


The votes will be tallied after a suitable period of time (the goal is 5 business days), and the outcome noted. If any voting entities are unreachable during the voting period, postponing the completion of the voting process should be considered.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The votes will be tallied after a suitable period of time (the goal is 5 business days), and the outcome noted. If any voting entities are unreachable during the voting period, postponing the completion of the voting process should be considered.
The votes will be tallied after a suitable period of time (the goal is five business days), and the outcome will be noted. If any voting entities are unreachable during the voting period, postponing the completion of the voting process should be considered.


## Updating Governance

This governance will likely be a living document, and its policies will, therefore, need to be updated over time as the community grows. The steering committee has full ownership of this governance and only the committee may make updates to it. Changes can be made at any time, but a super-majority (at least 2/3 of votes) is required to approve any updates.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This governance will likely be a living document, and its policies will, therefore, need to be updated over time as the community grows. The steering committee has full ownership of this governance and only the committee may make updates to it. Changes can be made at any time, but a super-majority (at least 2/3 of votes) is required to approve any updates.
This governance will likely be a living document, and its policies will need to be updated over time as the community grows. The steering committee has full ownership of this governance, and only the committee may update it. Changes can be made anytime, but a supermajority (at least 2/3 of votes) must approve any updates.


Copy link
Member

@chenrui333 chenrui333 May 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wonder if it would be good to also include CoC

## Code of Conduct
--

The [Atlantis Code of Conduct](CODE_OF_CONDUCT.md) is aligned with the CNCF Code of Conduct.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we just remove our copy and link directly to the CNCF CoC.

## Credits

Sections of these documents have been borrowed from [Argoproj](https://github.com/argoproj/argoproj/blob/main/community/GOVERNANCE.md) and [Crossplane](https://github.com/crossplane/crossplane/blob/master/GOVERNANCE.md) projects.