From 9db1feb3da20348828bf16280a8eafa010a80522 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Thu, 6 Sep 2018 15:33:48 +0100 Subject: [PATCH] docs/Maintainer-Guidelines: add more guidelines. --- docs/Maintainer-Guidelines.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/Maintainer-Guidelines.md b/docs/Maintainer-Guidelines.md index d88d29ce26..3ac53b8147 100644 --- a/docs/Maintainer-Guidelines.md +++ b/docs/Maintainer-Guidelines.md @@ -7,6 +7,8 @@ definitely not a beginner’s guide. Maybe you were looking for the [Formula Cookbook](Formula-Cookbook.md)? +This document is a work in progress. If you wish to change or discuss any of the below: open a PR to suggest a change. + ## Quick checklist This is all that really matters: @@ -105,6 +107,29 @@ is a good opportunity to do it) provided the line itself has some kind of modification that is not whitespace in it. But be careful about making changes to inline patches—make sure they still apply. +### Adding formulae +Only one maintainer is necessary to approve and merge the addition of a new formula which passes CI. However, if the formula addition +is controversial the maintainer who adds it will be expected to fix issues that arise with it in future. + +### Removing formulae +Formulae that: + +- work on at least 2/3 of our supported macOS versions in the default Homebrew prefix +- do not require patches rejected by upstream to work +- do not have known security vulnerabilities/CVEs for the version we package +- are shown to be still installed by users in our analytics with a `BuildError` rate of <25% + + +should not be removed from Homebrew. The exception to this rule are [versioned formulae](Versions.md) for which there are higher standards of usage and a maximum number of versions for a given formula. + +### Closing issues/PRs +Maintainers (including the lead maintainer) should not close issues or pull requests opened by other maintainers unless they are stale (i.e. have seen no updates for 28 days) in which case they can be closed by any maintainer. If the close is undesirable: no big deal, they can be reopened when additional work will be done. + +Any maintainer can merge any PR passing CI that has been opened by any other maintainer. If you do not wish to have other maintainers merge your PRs: please use the `do not merge` label to indicate that until you're ready to merge it yourself. + +## Reverting PRs +Any maintainer can revert a PR created by another maintainer after a user submitted issue or CI failure that results. The maintainer who created the original PR should be given an hour to fix the issue themselves or decide to revert the PR themselves if they would rather. + ## Communication Maintainers have a variety of ways to communicate with each other: @@ -118,9 +143,13 @@ This makes it easier for other maintainers, contributors and users to follow alo All maintainers (and lead maintainer) communication through any medium is bound by [Homebrew's Code of Conduct](CODE_OF_CONDUCT.md#code-of-conduct). Abusive behaviour towards other maintainers, contributors or users will not be tolerated; the maintainer will be given a warning and if their behaviour continues they will be removed as a maintainer. +Healthy, friendly, technical disagreement between maintainers is actively encouraged and should occur in public on the issue tracker. Off-topic discussions on the issue tracker, [bike-shedding](https://en.wikipedia.org/wiki/Law_of_triviality) and personal attacks are forbidden. + ## Lead maintainer guidelines There should be one lead maintainer for Homebrew. Decisions are determined by a consensus of the maintainers. When a consensus is not reached, the lead maintainer has the final say in determining the outcome of any decision (though this power should be used sparingly). They should also be seen as the product manager for Homebrew itself and ensuring that changes made to the entire Homebrew ecosystem are consistent and providing an increasingly positive experience for Homebrew's users. In the same way that Homebrew maintainers are expected to be spending more of their time reviewing and merging contributions from non-maintainer contributors than making their own contributions, the lead maintainer should be spending most of their time reviewing work from and mentoring other maintainers. Individual Homebrew repositories should not have formal lead maintainers (although those who do the most work will have the loudest voices). + +Maintainers should feel free to pleasantly disagree with the work and decisions of the lead maintainer. Constructive criticism is actively solicited and will be iterated upon to make the project better. Technical criticism should occur on the issue tracker and interpersonal criticism should be handled privately in Slack. If work or decisions are insufficiently documented or explained any maintainer or contributor should feel free to ask for clarification. The lead maintainer may never justify a decision with e.g. "because I say so" or "it was I who did X" alone.