Maintainer Guidelines
The purpose of this document is to manage expectations and make contributing pleasurable.
We like contributors but, looking at the numbers, most contributors to a project only ever make one commit. They are often one-offs. It is the 1% who move the bulk of the code.
As such, we want to keep the barrier to entry for contributors as low as possible. We don't see it as reasonable for newcomers to the community to have to become intimately familiar with our way of doing things in order to make a meaningful contribution.
As such, we believe the responsibility falls to the maintainers to know and effectively communicate the rules of the road and, most importantly: to move to approve, quickly:
1. Move to Approve
We acknowledge that the reason someone creates a PR is likely:
- They're trying to solve their own problem
- They believe that their solution will help others
Therefore our responsibility is to:
- Determine if there's any reason the PR shouldn't go through:
- It's out of line with the project goals
- The project isn't actively maintained
- Help the contributor get 80% of the way there
- Determine criteria that need to be met to move forward
2. Pair to Prepare
We'll have a channel open on Keybase and set aside some "office hours" for pairing to work through PRs.
3. Opinions are the Burden of the Bearer
We need to clearly express broad over-archiving philosophy and values, and not sweat the small stuff.
Where possible we should be using tools that solve style issues so that they're not a concern.
Where that's not possible we shouldn't let style issues get in the way of bugfixes, new features, or anything that has real value to those that use the software.
If the maintainer has a strong opinion about a variable name, style of loop, etc, it becomes their responsibility to demonstrate that they care that much about it by making a follow-up PR (or requesting a follow-up PR), rather than to burden the contributor with non-essential opinions.
Iteration is better than perfection.
4. Remain Politically Neutral
First off, we recognize that everyone has moral (and amoral) values that they feel strongly about and want to enforce among other people. This is a natural human tendency. That doesn't make mud-slinging okay, but it does make it forgivable.
Erring on the side of Hypocrisy
To both hold a moral view, which morality dictates should be enforced, and to accept others who oppose that view is paradoxical - therefore we err on the side of hypocrisy:
It is better to accept than to oppose.
Being obnoxious makes it difficult for others to accept you.
Just as arsenic and selenium (which are deadly in high doses) are nutrients in microdoses, we view accepting, correcting, and forgiving a little toxicity to be more in line with our values of tolerance than blocking.
Safe to be Wrong
We value individuality (it comes with the name).
This is a safe space to have an opinion and to express it, even if it possibly offends someone, as long as you're also open to feedback and you don't become obnoxious (and don't swear like a sailor - this is Root, not San Francisco).
That said, please don't preach political views or mud-sling. Incidental conversation is fine. We'll block obnoxious people.
Our Politics
We are Root. All on it's own that expression, "We are Root", carries a lot of political bias - we care about individual ownership, control, identity, minimalism, etc. Creating a community that has those interests and values in common has a polarizing affect. Therefore we can't be perfectly neutral. In the absence of perfect neutrality, we strive for an "it is what it is" mentality.