You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: en/06_Project_Governance/03_Maintainer_Guidelines.md
+150-8Lines changed: 150 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -6,11 +6,9 @@ icon: clipboard-list
6
6
7
7
# Maintainer Guidelines
8
8
9
-
This doc outlines expectations on maintainers of Silverstripe CMS. It also forms the default expectations for maintainers of [supported modules](./supported_modules/), unless more specific contribution guidelines are available for a module.
9
+
The maintainer guidelines apply to [supported modules](./supported_modules/). Unsupported modules in the `silverstripe` GitHub organisation are not necessarily maintained by these roles. If there is an unsupported module in the `silverstripe` GitHub organisation that you would like to maintain, please email <community@silverstripe.org>.
10
10
11
-
Module maintainers are people taking care of the repositories, CI, documentation, source code, conventions, community communications, peer review, issue triage, and release management.
12
-
13
-
One of the most important maintainer responsibilities is to collaborate with other maintainers. Another important role is to facilitate community contributions (such as issue reports and pull requests).
11
+
This document outlines expectations on maintainers of Silverstripe CMS. It also forms the default expectations for maintainers of [supported modules](./supported_modules/), unless more specific contribution guidelines are available for a module.
14
12
15
13
[note]
16
14
A lot of extra information is available in the [Contributing](/contributing/) documentation.
@@ -21,9 +19,25 @@ Refer to the [triage and peer review](/contributing/triage_resources/) for infor
21
19
22
20
## Maintainer Roles
23
21
22
+
Module maintainers are people taking care of the repositories, CI, documentation, source code, conventions, community communications, peer review, issue triage, and release management.
23
+
24
+
One of the most important maintainer responsibilities is to collaborate with other maintainers. Another important role is to facilitate community contributions (such as issue reports and pull requests).
25
+
26
+
The [maintainer house rules](#house-rules) must followed by all maintainers.
27
+
28
+
The following table outlines the general responsibilities and privileges attributed to each maintainer group - see the section for each group for further details.
|Merge PRs without requiring additional maintainer approval|||x|x|
36
+
|Administer repositories||||x|
37
+
24
38
### Core Committers
25
39
26
-
The people looking after the Silverstripe Core modules.
40
+
The people looking after the Silverstripe CMS Core modules.
27
41
See the details on the [Core Committers](./core_committers) page.
28
42
29
43
### CMS Squad
@@ -36,23 +50,151 @@ often working alongside Core Committers.
36
50
37
51
CMS Squad members have write access to core repositories in order to work effectively with GitHub issues. They are expected to use those permissions with good judgement for merging pull requests.
38
52
53
+
The CMS Squad is managed by the CMS Squad team leader. The CMS Squad team leader acts as a product owner for Silverstripe CMS and is the primary point of contact between the Core Committers and Silverstripe.
54
+
55
+
### Peer Reviewers
56
+
57
+
[info]
58
+
This is a new role, and is currently in a trial period. It is likely to change over time as we learn what works and what doesn't.
59
+
[/info]
60
+
61
+
This role is made up of community members who have demonstrated a willingness and ability to improve Silverstripe CMS through their contributions to the open source supported modules. It empowers community members to have a more active role in ensuring pull requests get merged, and builds more momentum for community-created pull requests.
62
+
63
+
While anyone in the community can review a pull request, only reviews from maintainers have weight of authority - and only maintainers can meaningfully approve changes. The Peer Reviewer role ensures members of the community have that authority.
* Review pull requests, ensuring documented processes and best practices are being followed
68
+
* Refer to [how to review pull requests](/contributing/triage_resources/#how-to-review-pull-requests) and [contributing code](/contributing/code/)
69
+
* Escalate pull requests to Core Committers if the PR is very complex and you don't feel confident reviewing it
70
+
* If another reviewer feels confident, they can offer to review it instead
71
+
* Escalate pull requests to Core Committers if the contributor is rude/argumentative/hard to deal with
72
+
* If you feel confident doing so, politely request the contributor behave in accordance with our [code of conduct](./code_of_conduct), and close the pull request if they refuse to do so
73
+
* After two maintainers have approved the pull request, merge it
74
+
* The person who merges the PR can be one of the two approving reviewers
75
+
* The person who merges the PR must also understand and approve the changes
76
+
* The person who contributed the PR must not be included as one of the two approving reviewers
77
+
* If you don't feel confident clicking merge, ask for a second opinion. Don’t approve the pull request if you wouldn’t feel confident merging it - instead, say where you got to with it (e.g. tested, worked well locally, couldn’t find any problems but want another opinion) and get another reviewer to check it
78
+
* If no other reviewer feels confident about it, but it seems like it’s probably a good change in general, escalate to Core Committers
79
+
* If at any point there is a disagreement between reviewers that seems unresolvable, escalate the discussion to Core Committers.
80
+
81
+
If a reviewer doesn’t review any pull requests in a 12 month period, a member of the Core Committers or the CMS Squad team leader will reach out and ask if they want to continue being a reviewer. If they don’t respond within a month (or they respond saying they don’t want to be a reviewer anymore), their permissions will be revoked and they will be removed from the team.
82
+
83
+
If a reviewer fails to contribute for 18 months in a row, they will be removed from the team until such a time as they can commit to performing the responsibilities of the role.
84
+
85
+
#### Onboarding new peer reviewers
86
+
87
+
Members of the community may be invited by a Core Committer or the CMS Squad team leader to join the peer review team if they:
88
+
89
+
* have shown an interest in helping to maintain Silverstripe CMS
90
+
* have shown themselves to be trustworthy
91
+
* follow the code of conduct
92
+
* have provided good contributions.
93
+
94
+
Those contributions could be any combination of:
95
+
96
+
* good quality bug reports
97
+
* good quality pull requests
98
+
* help refining issues and PRs
99
+
* unofficial pull request reviews.
100
+
101
+
These contributions must demonstrate clear communication, adherence to our contribution guidelines, and good collaboration skills.
102
+
103
+
Usually members of the contribution refiners team will be given priority consideration over community members who have not been part of the contribution refiners team.
104
+
105
+
Anyone in the Core Committers or Peer Reviewers teams plus the CMS Squad team leader can put a name forward of someone they think would be a good fit. All core committers and reviewers and the CMS Squad team leader will have a (timeboxed) chance to object. Then if there’s no objections, the prospective member is invited to join the team.
106
+
107
+
There will be a low-touch background check before inviting the contributor to the team, to validate that they are who they appear to be.
108
+
109
+
### Contribution Refiners
110
+
111
+
[info]
112
+
This is a new role, and is currently in a trial period. It is likely to change over time as we learn what works and what doesn't.
113
+
[/info]
114
+
115
+
This role is made up of community members who have demonstrated a willingness and ability to improve Silverstripe CMS through their contributions to the open source supported modules. It empowers community members to have a more active role in identifying and refining bug reports and pull requests with high value potential so that they can be resolved more quickly.
116
+
117
+
While anyone can perform most of the reponsibilities of this role, having this role is a useful way for the maintainers to be aware of contributions people are making and ensuring there is a clear channel of communication for escalating anything which needs to be escalated.
118
+
119
+
Having a role for refining issues and pull requests helps to ensure:
120
+
121
+
* high impact and high value contributions are prioritised
122
+
* contributions are in a good state by the time someone comes to work on the issue or review the pull request
123
+
* low quality contributions are closed.
124
+
125
+
It also gives community members a low-effort entry point to being involved outside of contributing code themselves.
126
+
127
+
#### Responsibilities {#refiner-responsibilities}
128
+
129
+
##### Refine issues
130
+
131
+
* Perform triage tasks as documented in [how to triage](/contributing/triage_resources/#how-to-triage)
132
+
* Ensure bug reports contain valid reproduction steps and sufficient context to understand what the buggy behaviour is
133
+
* Ensure feature requests are either created by a maintainer, or the person who created the issue plans to implement it (see [feature requests](/contributing/issues_and_bugs/#feature-requests) and [make or find a GitHub issue](/contributing/code/#make-or-find-a-github-issue))
134
+
* Close feature requests if the person raising the issue indicates (either explicitly, or implicitly by not responding) that they aren’t going to implement the feature
135
+
* Encourage people raising issues to also raise pull requests to resolve the issue
136
+
* Close issues that aren’t in scope (e.g. spam, people seeking support, bug reports for non-supported versions, etc)
137
+
* Direct people opening such issues to the correct channels if there is one, e.g. [community channels](https://www.silverstripe.org/community) for support
138
+
* Make sure the CMS Squad and Core Committers are aware of any critical or near-critical issues that need to be addressed in a timely manner
139
+
* If any issues seem to be reporting a security issue, immediately notify the CMS Squad and Core Committers
140
+
141
+
##### Refine pull requests
142
+
143
+
The following apply to pull requests that nobody has started reviewing yet. Once someone has started reviewing a pull request, the refiner should step back.
144
+
145
+
* Ensure pull requests link to an issue that the PR resolves
146
+
* If one doesn’t exist, either open one or ask the pull request creator to open one
147
+
* Ensure pull requests have a clear description indicating the purpose of the change(s) if the linked issue doesn't provide enough context on its own
148
+
* Ensure commit messages in pull requests are appropriate and meaningful, and use the correct prefix (see [commit messages](/contributing/code/#commit-messages))
149
+
* Ensure pull requests target the correct branch (see [picking the right version](/contributing/code/#picking-the-right-version))
150
+
* If any pull requests seem to be fixing a security issue, immediately notify the CMS Squad and Core Committers
151
+
152
+
#### Onboarding new refiners
153
+
154
+
Members of the community may be invited by a Core Committer or the CMS Squad team leader to join the contribution refiners team if they:
155
+
156
+
* have shown an interest in helping to maintain Silverstripe CMS
157
+
* have shown themselves to be trustworthy
158
+
* follow the code of conduct
159
+
* have provided good contributions.
160
+
161
+
Those contributions can be:
162
+
163
+
* good quality bug reports
164
+
* good quality pull requests
165
+
* help refining issues and PRs
166
+
* unofficial pull request reviews.
167
+
168
+
These contributions must demonstrate clear communication, adherence to our contribution guidelines, and good collaboration skills.
169
+
170
+
Anyone in the Core Committers or Contribution Refiners teams plus the CMS Squad team leader can put a name forward of someone they think would be a good fit. All core committers and refiners and the CMS Squad team leader will have a (timeboxed) chance to object. Then if there’s no objections, the prospective member is invited to join the team.
171
+
172
+
There will be a low-touch background check before inviting the contributor to the team, to validate that they are who they appear to be.
173
+
39
174
## Guidelines
40
175
41
176
With great power (write access) comes great responsibility.
42
177
43
178
First and foremost rule of a maintainer is to collaborate with other maintainers. Follow the house rules and remember that others also care about the modules they maintain.
44
179
45
-
### House rules overview
180
+
### House rules
46
181
47
182
* Be friendly, encouraging and constructive towards other community members
183
+
* Be familiar with our contribution guidelines, especially the [definition of public API](./public_api/) and how that ties into our branching and release strategies
184
+
* If you have any questions or doubts, always ask - there's a lot of process and domain knowledge, and it is important that you feel confident to fulfil your role
48
185
* Frequently review pull requests and new issues (in particular, respond quickly to @mentions)
49
186
* Treat issues according to our [issue guidelines](/contributing/issues_and_bugs/), and use the [triage resources](/contributing/triage_resources/)
* Use forks to create feature branches for pull requests
52
189
* Only merge code you have tested and fully understand. If in doubt, ask for a second opinion.
53
190
* Follow the [Supported Modules Standard](https://www.silverstripe.org/software/addons/supported-modules-definition/)
54
191
* Ensure contributions have appropriate [test coverage](/developer_guides/testing/), are documented, and adhere to our [coding conventions](/getting_started/coding_conventions/)
55
-
* Keep the codebase "releasable" at all times (check our [release process](/contributing/release_process/))
56
-
* Follow [Semantic Versioning](/contributing/code/#picking-the-right-version) by putting any changes into the correct branch
192
+
* If the contributor has trouble adding tests or documentation, you can raise your own pull requests that adds tests or documentation for the change and then merge their change
193
+
* Keep the codebase stable at all times (check our [release process](/contributing/release_process/))
194
+
* If there are CI failures which are unrelated to the changes a given pull request, you can merge the pull request if all relevant tests are being run and passing
195
+
* Changes must be merged into the appropriate branches and follow semantic versioning (see [picking the right version](/contributing/code/#picking-the-right-version))
57
196
* Be inclusive. Ensure a wide range of Silverstripe CMS developers can obtain an understanding of your code and docs, and you're not the only one who can maintain it.
58
197
* Avoid `git push --force`, and be careful with your git remotes (no accidental pushes)
198
+
* Assign yourself to the issue(s) you are reviewing. If you’re reviewing one pull request in that issue, you’re reviewing them all.
199
+
* Before merging a pull request, check the linked issue for related pull requests which should be reviewed and merged together.
200
+
* Don’t merge documentation for code changes until the code changes have been merged.
0 commit comments