Skip to content
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

Update Homebrew's governance documentation. #13073

Merged
merged 1 commit into from
Apr 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
46 changes: 29 additions & 17 deletions docs/Homebrew-Governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

## 2. Members

1. New members will be admitted by an ordinary resolution of the PLC and added to the Homebrew organisation on GitHub.
1. New members (unless nominated as maintainers, see below) will be admitted by an ordinary resolution of the PLC and added to the Homebrew organisation on GitHub.

2. Members may vote in all general elections and resolutions, hold office for Homebrew, and participate in all other membership functions.

Expand All @@ -20,9 +20,7 @@

5. All members will follow the [Homebrew Code of Conduct](https://github.com/Homebrew/.github/blob/HEAD/CODE_OF_CONDUCT.md#code-of-conduct). Changes to the code of conduct must be approved by the PLC.

6. Homebrew members will comply with the Software Freedom Conservancy's [conflict of interest policy](https://sfconservancy.org/projects/policies/conflict-of-interest-policy.html).

7. Members should abstain from voting when they have a conflict of interest not shared by other members. No one may be compelled to abstain from voting.
6. Members should abstain from voting when they have a conflict of interest not shared by other members. No one may be compelled to abstain from voting.

## 3. General Meetings of Members

Expand All @@ -48,13 +46,11 @@

4. Any approved amendments will take effect three weeks after the close of voting.

5. No amendment may be proposed which violates Software Freedom Conservancy policies. The PLC may veto such an amendment by an ordinary resolution.

## 4. Project Leadership Committee

1. The governance and operation of Homebrew is determined by the PLC. The PLC will represent Homebrew in all dealings with the Software Freedom Conservancy (SFC). The PLC has final authority in all matters related to the operation of Homebrew, and will comply with all Software Freedom Conservancy policies.
1. The financial administration of Homebrew, organisation of the AGM, enforcement of the code of conduct and removal of members are performed by the PLC. The PLC will represent Homebrew in all dealings with OpenCollective.

2. The PLC consists of five members. Committee members are elected by Homebrew members in a [Meek Single Transferable Vote](https://en.wikipedia.org/wiki/Counting_single_transferable_votes#Meek) election using the Droop quota. Each PLC member will serve a term of two years or until the member's successor is elected. Any sudden vacancy in the PLC will be filled by the usual procedure for electing PLC members at the next general meeting, typically the next AGM.
2. The PLC consists of five members including the Project Leader. Committee members are elected by majority vote of Homebrew members. Each PLC member will serve a term of two years or until the member's successor is elected. Any sudden vacancy in the PLC will be filled by the usual procedure for electing PLC members at the next general meeting, typically the next AGM.
Rylan12 marked this conversation as resolved.
Show resolved Hide resolved
MikeMcQuaid marked this conversation as resolved.
Show resolved Hide resolved

3. Three weeks prior to the AGM, the PLC will nominate at least one candidate for each upcoming vacant seat. Any member may also nominate any other member as a candidate for the PLC at this time.

Expand All @@ -66,44 +62,60 @@

## 5. Meetings of the Project Leadership Committee

1. A meeting of the PLC may be called by any two of its members with at least three weeks notice, unless all PLC members agree to a shorter notice period.
1. A synchronous meeting of the PLC may be called by any two of its members with at least three weeks notice, unless all PLC members agree to a shorter notice period.

2. The quorum to vote on resolutions at a meeting of the PLC is a majority of its members.
2. The quorum to vote on resolutions at a synchronous meeting of the PLC is a majority of its members. In a Slack vote, there a time limit instead of quorum: it will take effect after a week, assuming vote passes.
MikeMcQuaid marked this conversation as resolved.
Show resolved Hide resolved

3. A majority of the entire membership of the PLC is required to pass an ordinary resolution.

4. The PLC will meet annually to review the status of all members and remove inactive members and those who have not affirmed a commitment to Homebrew in the past year. Voting in the AGM confirms that a member wishes to remain active with the project. After the AGM, the PLC will ask the members who did not vote whether they wish to remain active with the project. The PLC removes any members who don't respond to this second request after three weeks.
4. The PLC will meet synchronously and annually to review the status of all members and remove members who did not vote in the AGM and then did not re-affirm a commitment to Homebrew. Voting in the AGM confirms that a member wishes to remain active with the project. After the AGM, the PLC will ask the members who did not vote whether they wish to remain active with the project. The PLC removes any members who don't respond to this second request after three weeks.

5. The PLC will appoint the members of the TSC.

6. Any member may refer any question or dispute to the PLC. All technical matters should first be referred to the TSC. Non-technical matters may be referred directly to the PLC. Members will make a good faith effort to resolve any disputes with compromise prior to referral to the PLC.
6. Any member may refer any financial questions, AGM questions or code of conduct violations to the PLC. All technical matters should instead be referred to the Project Leader and technical disputes to the TSC. Members will make a good faith effort to resolve any disputes with compromise prior to referral to the PLC, Project Leader or TSC.

7. The PLC may meet by any mutually agreeable means, such as text chat, voice or video call, and in person. Members of the PLC must meet at least once per quarter. Members of the PLC must meet by video call or in person at least once per year.
7. The PLC may synchronously meet by any mutually agreeable means, such as text chat, voice or video call, and in person. Members of the PLC must meet synchronously at least once per quarter. Members of the PLC must meet by synchronous video call or in person at least once per year.

## 6. Project Leader

1. The Project Leader will represent Homebrew publicly, manage all day-to-day technical decisions, and resolve disputes related to the operation of Homebrew between maintainers, members, other contributors, and users.

2. The Project Leader will be elected annually by Homebrew members in a [Schulze Condorcet method](https://en.wikipedia.org/wiki/Schulze_method) (aka 'beatpath') election. The PLC will nominate at least one candidate for Project Leader. Any member may nominate a candidate, or self-nominate. Nominations must be announced to the membership three weeks before the AGM.
2. The Project Leader will be elected annually by a majority vote of Homebrew members. The PLC will nominate at least one candidate for Project Leader. Any member may nominate a candidate, or self-nominate. Nominations must be announced to the membership three weeks before the AGM.

3. Any vacancy of the Project Leader will be filled by appointment of the PLC.

4. The Project Leader may not be a member of the PLC.
4. The Project Leader's seat on the PLC is non-voting, unless a tie-breaker vote is required.

5. A technical decision of the Project Leader may be overruled by an ordinary resolution of the TSC.

6. A non-technical decision of the Project Leader may be overruled by an ordinary resolution of the PLC.

7. The Project Leader may be removed from the position by a special resolution of the membership.

8. The Project Leader must be included in all PLC communications with or about Open Collective and in all communications related to joint responsibilities.
MikeMcQuaid marked this conversation as resolved.
Show resolved Hide resolved

9. The Project Leader must be a maintainer, not just a member.

## 7. Technical Steering Committee

1. The TSC has the authority to decide on any technical matter, including technical disputes between Homebrew members.
1. The TSC has the authority to decide on any technical disputes between any maintainer and the Project Leader. Disputes not involving the Project Leader should be addressed through the Project Leader.

2. The PLC will appoint between three and five members to the TSC. The Project Leader must be one of these appointees. After the 2021 AGM, PLC members should not be any of these appointees. Appointed TSC members will serve a term of one year or until the member's successor is appointed.
2. The PLC will appoint between three and five maintainers to be members of the TSC. Voting PLC members should not be any of these appointees. Appointed TSC members will serve a term of one year or until the member's successor is appointed.

3. Any member may refer any technical question or dispute to the TSC. Members will make a good faith effort to resolve any disputes with compromise prior to referral to the TSC.

4. No more than two employees of the same employer may serve on the TSC.

5. A member of the TSC, except the Project Leader, may be removed from the TSC by an ordinary resolution of the PLC.

## 8. Maintainers

1. All maintainers are automatically members. Some, not all, members are maintainers.

2. Maintainers are members with commit/write-access to at least one of: Homebrew/brew, Homebrew/homebrew-core, Homebrew/homebrew-cask.

3. New maintainers can be nominated by any existing maintainer. They require one approval from the Project Leader or a member of the TSC and no opposition from these people in a 24 hour "working" period (i.e. 7pm on a Friday waits until 7pm on a Monday). If there is opposition, it will be subject to a TSC Slack vote with a majority taking effect after a week.

4. Maintainers' commit access will be reviewed yearly by the Project Leader before the AGM and removed from those who have not committed enough or not performing maintainer responsibilities (e.g. reviewing the PRs of other maintainers and contributors rather than just merging their own PRs) in a given repository. If they are not active enough on any of Homebrew/brew, Homebrew/homebrew-core, Homebrew/homebrew-cask: they will be asked to step down as a maintainer but can remain as a member. If a TSC member believes that a maintainer's removal is unwarranted, they can call a TSC vote on whether to remove the member.

5. Members of the PLC do not have to be maintainers but will have implicit write access to their repositories anyway as "Owners" of the GitHub organisation. If they are not maintainers, they should not make use of this write access.
71 changes: 71 additions & 0 deletions docs/Homebrew-Leadership-Responsibilities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Homebrew Governance Responsibilities

## Project Leadership Committee

### PLC Sole Responsibilities

- organising the AGM
- voting on maintainer hardware grants (before they are purchased)
- voting on maintainer hackathon/conference/AGM travel expenses (before they are booked)
- responding to and handling Code of Conduct complaints
- removing inactive members (that are not maintainers) that did not vote in the AGM

### PLC Shared Responsibilities

- approving OpenCollective expenses that are expected or have already been agreed upon by the PLC (e.g. Homebrew cloud usage on a personal credit card) (only one approval needed)
- blocking abusive GitHub users
- performing GitHub admin operations on the Homebrew GitHub organisation
- performing Slack admin operations on the Homebrew Slack

### PLC Dated Yearly Tasks

- January: check membership, announce AGM votes
- Ask for nominations for the for the PLC and project leader, and ask who is interested in serving on the TSC
- Create ballots for the elections on https://www.opavote.com
- Ask the project leader and representatives of the PLC and TSC to prepare reports for the AGM
- Ask for members interested in presenting lightning talks at the AGM
- February: organise the annual general meeting (AGM)
- Create a dedicated Slack channel
- Book a group dinner (which Homebrew pays for) and check for any dietary requirements
- Ask someone to bring a conference/table microphone for people to be able to remotely participate in AGM
- February after the AGM:
- Add the minutes of the AGM to https://github.com/Homebrew/homebrew-governance
- Create [issue in homebrew-governance](https://github.com/homebrew/homebrew-governance/issues) to ask members who did not vote in the election whether they wish to remain or step down as members
- Members that are not maintainers should be a least one of:
- An current or previously active maintainer, PLC/TSC member or Project Leader
- A long-standing member of the Homebrew community (e.g. been submitting good bug reports for over two years)
- October: arrange in-person AGM
- Offer to pay for Homebrew maintainers who are at least one of:
- active Homebrew maintainers (i.e. not just contributors)
- new Homebrew maintainers (i.e. this would be their first AGM)
- current members of or running for election for PLC/TSC/Project Leader
- Authorise people to book travel

## Project Leader

### PL Sole Responsibilities

- manage all day-to-day technical decisions
- resolve disputes related to the operation of Homebrew between maintainers, members, other contributors, and users
- [product management](https://en.wikipedia.org/wiki/Product_management) for the various Homebrew products
- in February, before the AGM: checking for activity of non-PLC/TSC maintainers and asking them to step down if they have not been active enough in the past 12 months

### PL Shared Responsibilities

- approving new Homebrew maintainers (only one approval needed)
- approving OpenCollective expenses that are expected or have already been agreed upon by the PLC (e.g. Homebrew cloud usage on a personal credit card) (only one approval needed)
- blocking abusive GitHub users
- performing GitHub admin operations on the Homebrew GitHub organisation
- performing Slack admin operations on the Homebrew Slack

## Technical Steering Committee

### TSC Sole Responsibilities

- decide on technical disputes between Homebrew maintainers and the Project Leader

### TSC Shared Responsibilities

- approving new Homebrew maintainers (only one approval needed)
- blocking abusive GitHub users
- performing GitHub admin operations on the Homebrew GitHub organisation
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,4 @@
## Governance

- [Homebrew Governance](Homebrew-Governance.md)
- [Homebrew Leadership Responsibilities](Homebrew-Leadership-Responsibilities.md)