netdev-dpdk: fix mbuf leaks
[cascardo/ovs.git] / Documentation / committer-grant-revocation.md
1 OVS Committer Grant/Revocation Policy
2 =====================================
3
4 An OVS committer is a participant in the project with the ability
5 to commit code directly to the master repository. Commit access
6 grants a broad ability to affect the progress of the project as
7 presented by its most important artifact, the code and related
8 resources that produce working binaries of Open vSwitch. As such
9 it represents a significant level of trust in an individual's
10 commitment to working with other committers and the community at
11 large for the benefit of the project. It can not be granted
12 lightly and, in the worst case, must be revocable if the trust
13 placed in an individual was inappropriate.
14
15 This document suggests guidelines for granting and revoking commit
16 access. It is intended to provide a framework for evaluation of such
17 decisions without specifying deterministic rules that wouldn't be
18 sensitive to the nuance of specific situations. In the end the
19 decision to grant or revoke committer privileges is a judgment call
20 made by the existing set of committers.
21
22 Granting Commit Access
23 ----------------------
24
25 Granting commit access should be considered when a candidate has
26 demonstrated the following in their interaction with the project:
27
28 * Contribution of significant new features through the patch
29   submission process where:
30   * Submissions are free of obvious critical defects
31   * Submissions do not typically require many iterations of
32     improvement to be accepted
33 * Consistent participation in code review of other's patches,
34   including existing committers, with comments consistent with the
35   overall project standards
36 * Assistance to those in the community who are less knowledgeable
37   through active participation in project forums such as the
38   ovs-discuss mailing list.
39 * Plans for sustained contribution to the project compatible with
40   the project's direction as viewed by current committers.
41 * Commitment to meet the expectations described in the
42   "Expectations of Developer's with Open vSwitch Access"
43
44 The process to grant commit access to a candidate is simple:
45
46 * An existing committer nominates the candidate by sending an
47   email to all existing committers with information
48   substantiating the contributions of the candidate in the areas
49   described above.
50 * All existing committers discuss the pros and cons of granting
51   commit access to the candidate in the email thread.
52 * When the discussion has converged or a reasonable time has
53   elapsed without discussion developing (e.g. a few business days)
54   the nominator calls for a final decision on the candidate with a
55   followup email to the thread.
56 * Each committer may vote yes, no, or abstain by replying to the
57   email thread. A failure to reply is an implicit abstention.
58 * After votes from all existing committers have been collected or a
59   reasonable time has elapsed for them to be provided (e.g. a
60   couple of business days) the votes are evaluated. To be granted
61   commit access the candidate must receive yes votes from a
62   majority of the existing committers and zero no votes. Since a
63   no vote is effectively a veto of the candidate it should be
64   accompanied by a reason for the vote.
65 * The nominator summarizes the result of the vote in an email to
66   all existing committers.
67 * If the vote to grant commit access passed, the candidate is
68   contacted with an invitation to become a committer to the project
69   which asks them to agree to the committer expectations
70   documented on the project web site.
71 * If the candidate agrees access is granted by setting up commit
72   access to the repos on github.
73
74 Revoking Commit Access
75 ----------------------
76
77 There are two situations in which commit access might be revoked.
78
79 The straightforward situation is a committer who is no longer
80 active in the project and has no plans to become active in the near
81 future. The process in this case is:
82
83 * Any time after a committer has been inactive for more than 6
84   months any other committer to the project may identify that
85   committer as a candidate for revocation of commit access due to
86   inactivity.
87 * The plans of revocation should be sent in a private email to the
88   candidate.
89 * If the candidate for removal states plans to continue
90   participating no action is taken and this process terminates.
91 * If the candidate replies they no longer require commit
92   access then commit access is removed and a notification is
93   sent to the candidate and all existing committers.
94 * If the candidate can not be reached within 1 week of the first
95   attempting to contact this process continues.
96 * A message proposing removal of commit access is sent to the
97   candidate and all other committers.
98 * If the candidate for removal states plans to continue
99   participating no action is taken.
100 * If the candidate replies they no longer require commit
101   access then their access is removed.
102 * If the candidate can not be reached within 2 months of the
103   second attempting to contact them, access is removed.
104 * In any case, where access is removed, this fact is published
105   through an email to all existing committers (including the
106   candidate for removal).
107
108 The more difficult situation is a committer who is behaving in a
109 manner that is viewed as detrimental to the future of the project
110 by other committers. This is a delicate situation with the
111 potential for the creation of division within the greater
112 community and should be handled with care. The process in this
113 case is:
114
115 * Discuss the behavior of concern with the individual privately and
116   explain why you believe it is detrimental to the project. Stick
117   to the facts and keep the email professional. Avoid personal
118   attacks and the temptation to hypothesize about unknowable
119   information such as the other's motivations. Make it clear that
120   you would prefer not to discuss the behavior more widely but will
121   have to raise it with other contributors if it does not change.
122   Ideally the behavior is eliminated and no further action is
123   required. If not,
124 * Start an email thread with all committers, including the source
125   of the behavior, describing the behavior and the reason it is
126   detrimental to the project. The message should have the same
127   tone as the private discussion and should generally repeat the
128   same points covered in that discussion. The person whose
129   behavior is being questioned should not be surprised by anything
130   presented in this discussion. Ideally the wider discussion
131   provides more perspective to all participants and the issue is
132   resolved. If not,
133 * Start an email thread with all committers except the source of
134   the detrimental behavior requesting a vote on revocation of
135   commit rights. Cite the discussion among all committers and
136   describe all the reasons why it was not resolved satisfactorily.
137   This email should be carefully written with the knowledge that the
138   reasoning it contains may be published to the larger community
139   to justify the decision.
140 * Each committer may vote yes, no, or abstain by replying to the
141   email thread. A failure to reply is an implicit abstention.
142 * After all votes have been collected or a reasonable time has
143   elapsed for them to be provided (e.g. a couple of business days)
144   the votes are evaluated. For the request to revoke commit access
145   for the candidate to pass it must receive yes votes from two
146   thirds of the existing committers.
147 * anyone that votes no must provide their reasoning, and
148 * if the proposal passes then counter-arguments for the reasoning in
149   no votes should also be documented along with the initial reasons
150   the revocation was proposed. Ideally there should be no new
151   counter-arguments supplied in a no vote as all concerns should
152   have surfaced in the discussion before the vote.
153 * The original person to propose revocation summarizes the result
154   of the vote in an email to all existing committers excepting the
155   candidate for removal.
156 * If the vote to revoke commit access passes, access is removed and
157   the candidate for revocation is informed of that fact and the
158   reasons for it as documented in the email requesting the
159   revocation vote.
160 * Ideally the revoked committer peacefully leaves the community
161   and no further action is required. However, there is a
162   distinct possibility that he/she will try to generate support
163   for his/her point of view within the larger community. In
164   this case the reasoning for removing commit access as
165   described in the request for a vote will be published to the
166   community.
167
168 Changing the Policy
169 -------------------
170
171 The process for changing the policy is:
172
173 * Propose the changes to the policy in an email to all current
174   committers and request discussion.
175 * After an appropriate period of discussion (a few days) update
176   the proposal based on feedback if required and resend it to all
177   current committers with a request for a formal vote.
178 * After all votes have been collected or a reasonable time has
179   elapsed for them to be provided (e.g. a couple of business days)
180   the votes are evaluated. For the request to modify the policy to
181   pass it must receive yes votes from two thirds of the existing
182   committers.
183
184 Template Emails
185 ===============
186
187 Nomination to Grant Commit Access
188 ---------------------------------
189
190 I would like to nominate *[candidate]* for commit access. I believe
191 *[he/she]* has met the conditions for commit access described in the
192 committer grant policy on the project web site in the following
193 ways:
194
195 *[list of requirements & evidence]*
196
197 Please reply to all in this message thread with your comments and
198 questions. If that discussion concludes favorably I will request a
199 formal vote on the nomination in a few days.
200
201 Vote to Grant Commit Access
202 ---------------------------
203
204 I nominated *[candidate]* for commit access on *[date]*. Having
205 allowed sufficient time for discussion it's now time to formally
206 vote on the proposal.
207
208 Please reply to all in this thread with your vote of: YES, NO, or
209 ABSTAIN. A failure to reply will be counted as an abstention. If
210 you vote NO, by our policy you must include the reasons for that
211 vote in your reply. The deadline for votes is *[date and time]*.
212
213 If a majority of committers vote YES and there are zero NO votes
214 commit access will be granted.
215
216 Vote Results for Grant of Commit Access
217 ---------------------------------------
218
219 The voting period for granting to commit access to *[candidate]*
220 initiated at *[date and time]* is now closed with the following
221 results:
222
223 YES: *[count of yes votes]* (*[% of voters]*)
224
225 NO: *[count of no votes]* (*[% of voters]*)
226
227 ABSTAIN: *[count of abstentions]* (*[% of voters]*)
228
229 Based on these results commit access *[is/is NOT]* granted.
230
231
232 Invitation to Accepted Committer
233 --------------------------------
234
235 Due to your sustained contributions to the Open vSwitch (OVS)
236 project we would like to provide you with commit access to the
237 project repository. Developers with commit access must agree to
238 fulfill specific responsibilities described in the source
239 repository:
240
241 [Documentation/committer-responsibilities.md](committer-responsibilities.md)
242
243 Please let us know if you would like to accept commit access and if
244 so that you agree to fulfill these responsibilities. Once we
245 receive your response we'll set up access. We're looking forward
246 continuing to work together to advance the Open vSwitch project.
247
248
249 Proposal to Remove Commit Access for Inactivity
250 -----------------------------------------------
251
252 Committer *[candidate]* has been inactive for *[duration]*. I have
253 attempted to privately contacted *[him/her]* and *[he/she]* could not
254 be reached.
255
256 Based on this I would like to formally propose removal of commit
257 access. If a response to this message documenting the reasons to
258 retain commit access is not received by *[date]* access will be
259 removed.
260
261
262 Notification of Commit Removal for Inactivity
263 ------------------------------------------------
264
265 Committer *[candidate]* has been inactive for *[duration]*. *[He/she]*
266 *[stated no commit access is required/failed to respond]* to the
267 formal proposal to remove access on *[date]*. Commit access has
268 now been removed.
269
270
271 Proposal to Revoke Commit Access for Detrimental Behavior
272 ---------------------------------------------------------
273
274 I regret that I feel compelled to propose revocation of commit
275 access for *[candidate]*. I have privately discussed with *[him/her]*
276 the following reasons I believe *[his/her]* actions are detrimental
277 to the project and we have failed to come to a mutual
278 understanding:
279
280 *[List of reasons and supporting evidence]*
281
282 Please reply to all in this thread with your thoughts on this
283 proposal. I plan to formally propose a vote on the proposal on or
284 after *[date and time]*.
285
286 It is important to get all discussion points both for and against
287 the proposal on the table during the discussion period prior to the
288 vote. Please make it a high priority to respond to this proposal
289 with your thoughts.
290
291 Vote to Revoke Commit Access
292 ----------------------------
293
294 I nominated *[candidate]* for revocation of commit access on *[date]*.
295 Having allowed sufficient time for discussion it's now time to
296 formally vote on the proposal.
297
298 Please reply to all in this thread with your vote of: YES, NO, or
299 ABSTAIN. A failure to reply will be counted as an abstention. If
300 you vote NO, by our policy you must include the reasons for that
301 vote in your reply. The deadline for votes is *[date and time]*.
302
303 If 2/3rds of committers vote YES commit access will be revoked.
304
305 The following reasons for revocation have been given in the
306 original proposal or during discussion:
307
308 *[list of reasons to remove access]*
309
310 The following reasons for retaining access were discussed:
311
312 *[list of reasons to retain access]*
313
314 The counter-argument for each reason for retaining access is:
315
316 *[list of counter-arguments for retaining access]*
317
318 Vote Results for Revocation of Commit Access
319 --------------------------------------------
320
321 The voting period for revoking the commit access of *[candidate]*
322 initiated at *[date and time]* is now closed with the following
323 results:
324
325 * YES: *[count of yes votes]* (*[% of voters]*)
326
327 * NO: *[count of no votes]* (*[% of voters]*)
328
329 * ABSTAIN: *[count of abstentions]* (*[% of voters]*)
330
331 Based on these results commit access *[is/is NOT]* revoked. The
332 following reasons for retaining commit access were proposed in NO
333 votes:
334
335 *[list of reasons]*
336
337 The counter-arguments for each of these reasons are:
338
339 *[list of counter-arguments]*
340
341 Notification of Commit Revocation for Detrimental Behavior
342 ----------------------------------------------------------
343
344 After private discussion with you and careful consideration of the
345 situation, the other committers to the Open vSwitch (OVS) project
346 have concluded that it is in the best interest of the project that
347 your commit access to the project repositories be revoked and this
348 has now occurred.
349
350 The reasons for this decision are:
351
352 *[list of reasons for removing access]*
353
354 While your goals and those of the project no longer appear to be
355 aligned we greatly appreciate all the work you have done for the
356 project and wish you continued success in your future work.