github.com/imran-kn/cilium-fork@v1.6.9/Documentation/commit-access.rst (about) 1 .. only:: not (epub or latex or html) 2 3 WARNING: You are looking at unreleased Cilium documentation. 4 Please use the official rendered version released here: 5 http://docs.cilium.io 6 7 .. This has been bluntly copied from the excellent committer guidelines 8 written for the Open vSwitch project and has then been adapted. It is 9 based on the following files: 10 https://github.com/openvswitch/ovs/blob/master/Documentation/committer-grant-revocation.rst 11 https://github.com/openvswitch/ovs/blob/master/Documentation/committer-responsibilities.rst 12 13 .. Licensed under the Apache License, Version 2.0 (the "License"); you may 14 not use this file except in compliance with the License. You may obtain 15 a copy of the License at 16 17 http://www.apache.org/licenses/LICENSE-2.0 18 19 .. Unless required by applicable law or agreed to in writing, software 20 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 21 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 22 License for the specific language governing permissions and limitations 23 under the License. 24 25 Cilium Committer Grant/Revocation Policy 26 ======================================== 27 28 A Cilium committer is a participant in the project with the ability to 29 commit code directly to the master repository. Commit access grants a 30 broad ability to affect the progress of the project as presented by its 31 most important artifact, the code and related resources that produce 32 working binaries of Cilium. As such it represents a significant level of 33 trust in an individual's commitment to working with other committers and 34 the community at large for the benefit of the project. It can not be 35 granted lightly and, in the worst case, must be revocable if the trust 36 placed in an individual was inappropriate. 37 38 This document suggests guidelines for granting and revoking commit 39 access. It is intended to provide a framework for evaluation of such 40 decisions without specifying deterministic rules that wouldn't be 41 sensitive to the nuance of specific situations. In the end the decision 42 to grant or revoke committer privileges is a judgment call made by the 43 existing set of committers. 44 45 Expectations for Developers with commit access 46 ---------------------------------------------- 47 48 Pre-requisites 49 ~~~~~~~~~~~~~~ 50 51 Be familiar with the :ref:`dev_guide`. 52 53 Review 54 ~~~~~~ 55 56 Code (yours or others') must be reviewed publicly (by you or others) 57 before you push it to the repository. With one exception (see below), 58 every change needs at least one review. 59 60 If one or more people know an area of code particularly well, code that 61 affects that area should ordinarily get a review from one of them. 62 63 The riskier, more subtle, or more complicated the change, the more 64 careful the review required. When a change needs careful review, use 65 good judgment regarding the quality of reviews. If a change adds 1000 66 lines of new code, and a review posted 5 minutes later says just "Looks 67 good," then this is probably not a quality review. 68 69 (The size of a change is correlated with the amount of care needed in 70 review, but it is not strictly tied to it. A search and replace across 71 many files may not need much review, but one-line optimization changes 72 can have widespread implications.) 73 74 Your own small changes to fix a recently broken build ("make") or tests 75 ("make check"), that you believe to be visible to a large number of 76 developers, may be checked in without review. If you are not sure, ask 77 for review. 78 79 Regularly review submitted code in areas where you have expertise. 80 Consider reviewing other code as well. 81 82 Git conventions 83 ~~~~~~~~~~~~~~~ 84 85 If you apply a change (yours or another's) then it is your 86 responsibility to handle any resulting problems, especially broken 87 builds and other regressions. If it is someone else's change, then you 88 can ask the original submitter to address it. Regardless, you need to 89 ensure that the problem is fixed in a timely way. The definition of 90 "timely" depends on the severity of the problem. 91 92 If a bug is present on master and other branches, fix it on master 93 first, then backport the fix to other branches. Straightforward 94 backports do not require additional review (beyond that for the fix on 95 master). 96 97 Feature development should be done only on master. Occasionally it makes 98 sense to add a feature to the most recent release branch, before the 99 first actual release of that branch. These should be handled in the same 100 way as bug fixes, that is, first implemented on master and then 101 backported. 102 103 Keep the authorship of a commit clear by maintaining a correct list of 104 "Signed-off-by:"s. If a confusing situation comes up, as it occasionally 105 does, bring it up in the development forums. If you explain the use of 106 "Signed-off-by:" to a new developer, explain not just how but why, since 107 the intended meaning of "Signed-off-by:" is more important than the 108 syntax. 109 110 Use Reported-by: and Tested-by: tags in commit messages to indicate the 111 source of a bug report. 112 113 Keep the `AUTHORS <https://github.com/cilium/cilium/blob/master/AUTHORS>`__ file up to date. 114 115 Granting Commit Access 116 ---------------------- 117 118 Granting commit access should be considered when a candidate has 119 demonstrated the following in their interaction with the project: 120 121 - Contribution of significant new features through the patch submission 122 process where: 123 124 - Submissions are free of obvious critical defects 125 - Submissions do not typically require many iterations of improvement 126 to be accepted 127 128 - Consistent participation in code review of other's patches, including 129 existing committers, with comments consistent with the overall 130 project standards 131 132 - Assistance to those in the community who are less knowledgeable 133 through active participation in project forums. 134 135 - Plans for sustained contribution to the project compatible with the 136 project's direction as viewed by current committers. 137 138 - Commitment to meet the expectations described in the "Expectations of 139 Developer's with commit access" 140 141 The process to grant commit access to a candidate is simple: 142 143 - An existing committer nominates the candidate by sending an email to 144 all existing committers with information substantiating the 145 contributions of the candidate in the areas described above. 146 147 - All existing committers discuss the pros and cons of granting commit 148 access to the candidate in the email thread. 149 150 - When the discussion has converged or a reasonable time has elapsed 151 without discussion developing (e.g. a few business days) the 152 nominator calls for a final decision on the candidate with a followup 153 email to the thread. 154 155 - Each committer may vote yes, no, or abstain by replying to the email 156 thread. A failure to reply is an implicit abstention. 157 158 - After votes from all existing committers have been collected or a 159 reasonable time has elapsed for them to be provided (e.g. a couple of 160 business days) the votes are evaluated. To be granted commit access 161 the candidate must receive yes votes from a majority of the existing 162 committers and zero no votes. Since a no vote is effectively a veto 163 of the candidate it should be accompanied by a reason for the vote. 164 165 - The nominator summarizes the result of the vote in an email to all 166 existing committers. 167 168 - If the vote to grant commit access passed, the candidate is contacted 169 with an invitation to become a committer to the project which asks 170 them to agree to the committer expectations documented on the project 171 web site. 172 173 - If the candidate agrees access is granted by setting up commit access 174 to the repos. 175 176 Revoking Commit Access 177 ---------------------- 178 179 There are two situations in which commit access might be revoked. 180 181 The straightforward situation is a committer who is no longer active in 182 the project and has no plans to become active in the near future. The 183 process in this case is: 184 185 - Any time after a committer has been inactive for more than 6 months 186 any other committer to the project may identify that committer as a 187 candidate for revocation of commit access due to inactivity. 188 189 - The plans of revocation should be sent in a private email to the 190 candidate. 191 192 - If the candidate for removal states plans to continue participating 193 no action is taken and this process terminates. 194 195 - If the candidate replies they no longer require commit access then 196 commit access is removed and a notification is sent to the candidate 197 and all existing committers. 198 199 - If the candidate can not be reached within 1 week of the first 200 attempting to contact this process continues. 201 202 - A message proposing removal of commit access is sent to the candidate 203 and all other committers. 204 205 - If the candidate for removal states plans to continue participating 206 no action is taken. 207 208 - If the candidate replies they no longer require commit access then 209 their access is removed. 210 211 - If the candidate can not be reached within 2 months of the second 212 attempting to contact them, access is removed. 213 214 - In any case, where access is removed, this fact is published through 215 an email to all existing committers (including the candidate for 216 removal). 217 218 The more difficult situation is a committer who is behaving in a manner 219 that is viewed as detrimental to the future of the project by other 220 committers. This is a delicate situation with the potential for the 221 creation of division within the greater community and should be handled 222 with care. The process in this case is: 223 224 - Discuss the behavior of concern with the individual privately and 225 explain why you believe it is detrimental to the project. Stick to 226 the facts and keep the email professional. Avoid personal attacks and 227 the temptation to hypothesize about unknowable information such as 228 the other's motivations. Make it clear that you would prefer not to 229 discuss the behavior more widely but will have to raise it with other 230 contributors if it does not change. Ideally the behavior is 231 eliminated and no further action is required. If not, 232 233 - Start an email thread with all committers, including the source of 234 the behavior, describing the behavior and the reason it is 235 detrimental to the project. The message should have the same tone as 236 the private discussion and should generally repeat the same points 237 covered in that discussion. The person whose behavior is being 238 questioned should not be surprised by anything presented in this 239 discussion. Ideally the wider discussion provides more perspective to 240 all participants and the issue is resolved. If not, 241 242 - Start an email thread with all committers except the source of the 243 detrimental behavior requesting a vote on revocation of commit 244 rights. Cite the discussion among all committers and describe all the 245 reasons why it was not resolved satisfactorily. This email should be 246 carefully written with the knowledge that the reasoning it contains 247 may be published to the larger community to justify the decision. 248 249 - Each committer may vote yes, no, or abstain by replying to the email 250 thread. A failure to reply is an implicit abstention. 251 252 - After all votes have been collected or a reasonable time has elapsed 253 for them to be provided (e.g. a couple of business days) the votes 254 are evaluated. For the request to revoke commit access for the 255 candidate to pass it must receive yes votes from two thirds of the 256 existing committers. 257 258 - anyone that votes no must provide their reasoning, and 259 260 - if the proposal passes then counter-arguments for the reasoning in no 261 votes should also be documented along with the initial reasons the 262 revocation was proposed. Ideally there should be no new 263 counter-arguments supplied in a no vote as all concerns should have 264 surfaced in the discussion before the vote. 265 266 - The original person to propose revocation summarizes the result of 267 the vote in an email to all existing committers excepting the 268 candidate for removal. 269 270 - If the vote to revoke commit access passes, access is removed and the 271 candidate for revocation is informed of that fact and the reasons for 272 it as documented in the email requesting the revocation vote. 273 274 - Ideally the revoked committer peacefully leaves the community and no 275 further action is required. However, there is a distinct possibility 276 that he/she will try to generate support for his/her point of view 277 within the larger community. In this case the reasoning for removing 278 commit access as described in the request for a vote will be 279 published to the community. 280 281 Changing the Policy 282 ------------------- 283 284 The process for changing the policy is: 285 286 - Propose the changes to the policy in an email to all current 287 committers and request discussion. 288 289 - After an appropriate period of discussion (a few days) update the 290 proposal based on feedback if required and resend it to all current 291 committers with a request for a formal vote. 292 293 - After all votes have been collected or a reasonable time has elapsed 294 for them to be provided (e.g. a couple of business days) the votes 295 are evaluated. For the request to modify the policy to pass it must 296 receive yes votes from two thirds of the existing committers. 297 298 Template Emails 299 =============== 300 301 Nomination to Grant Commit Access 302 --------------------------------- 303 304 :: 305 306 I would like to nominate *[candidate]* for commit access. I believe 307 *[he/she]* has met the conditions for commit access described in the 308 committer grant policy on the project web site in the following ways: 309 310 *[list of requirements & evidence]* 311 312 Please reply to all in this message thread with your comments and 313 questions. If that discussion concludes favorably I will request a formal 314 vote on the nomination in a few days. 315 316 Vote to Grant Commit Access 317 --------------------------- 318 319 :: 320 321 I nominated *[candidate]* for commit access on *[date]*. Having allowed 322 sufficient time for discussion it's now time to formally vote on the 323 proposal. 324 325 Please reply to all in this thread with your vote of: YES, NO, or ABSTAIN. 326 A failure to reply will be counted as an abstention. If you vote NO, by our 327 policy you must include the reasons for that vote in your reply. The 328 deadline for votes is *[date and time]*. 329 330 If a majority of committers vote YES and there are zero NO votes commit 331 access will be granted. 332 333 Vote Results for Grant of Commit Access 334 --------------------------------------- 335 336 :: 337 338 The voting period for granting to commit access to *[candidate]* initiated 339 at *[date and time]* is now closed with the following results: 340 341 YES: *[count of yes votes]* (*[% of voters]*) 342 343 NO: *[count of no votes]* (*[% of voters]*) 344 345 ABSTAIN: *[count of abstentions]* (*[% of voters]*) 346 347 Based on these results commit access *[is/is NOT]* granted. 348 349 Invitation to Accepted Committer 350 -------------------------------- 351 352 :: 353 354 Due to your sustained contributions to the Cilium project we 355 would like to provide you with commit access to the project repository. 356 Developers with commit access must agree to fulfill specific 357 responsibilities described in the source repository: 358 359 /Documentation/commit-access.rst 360 361 Please let us know if you would like to accept commit access and if so that 362 you agree to fulfill these responsibilities. Once we receive your response 363 we'll set up access. We're looking forward continuing to work together to 364 advance the Cilium project. 365 366 Proposal to Remove Commit Access for Inactivity 367 ----------------------------------------------- 368 369 :: 370 371 Committer *[candidate]* has been inactive for *[duration]*. I have 372 attempted to privately contacted *[him/her]* and *[he/she]* could not be 373 reached. 374 375 Based on this I would like to formally propose removal of commit access. 376 If a response to this message documenting the reasons to retain commit 377 access is not received by *[date]* access will be removed. 378 379 Notification of Commit Removal for Inactivity 380 --------------------------------------------- 381 382 :: 383 384 Committer *[candidate]* has been inactive for *[duration]*. *[He/she]* 385 *[stated no commit access is required/failed to respond]* to the formal 386 proposal to remove access on *[date]*. Commit access has now been removed. 387 388 Proposal to Revoke Commit Access for Detrimental Behavior 389 --------------------------------------------------------- 390 391 :: 392 393 I regret that I feel compelled to propose revocation of commit access for 394 *[candidate]*. I have privately discussed with *[him/her]* the following 395 reasons I believe *[his/her]* actions are detrimental to the project and we 396 have failed to come to a mutual understanding: 397 398 *[List of reasons and supporting evidence]* 399 400 Please reply to all in this thread with your thoughts on this proposal. I 401 plan to formally propose a vote on the proposal on or after *[date and 402 time]*. 403 404 It is important to get all discussion points both for and against the 405 proposal on the table during the discussion period prior to the vote. 406 Please make it a high priority to respond to this proposal with your 407 thoughts. 408 409 Vote to Revoke Commit Access 410 ---------------------------- 411 412 :: 413 414 I nominated *[candidate]* for revocation of commit access on *[date]*. 415 Having allowed sufficient time for discussion it's now time to formally 416 vote on the proposal. 417 418 Please reply to all in this thread with your vote of: YES, NO, or ABSTAIN. 419 A failure to reply will be counted as an abstention. If you vote NO, by our 420 policy you must include the reasons for that vote in your reply. The 421 deadline for votes is *[date and time]*. 422 423 If 2/3rds of committers vote YES commit access will be revoked. 424 425 The following reasons for revocation have been given in the original 426 proposal or during discussion: 427 428 *[list of reasons to remove access]* 429 430 The following reasons for retaining access were discussed: 431 432 *[list of reasons to retain access]* 433 434 The counter-argument for each reason for retaining access is: 435 436 *[list of counter-arguments for retaining access]* 437 438 Vote Results for Revocation of Commit Access 439 -------------------------------------------- 440 441 :: 442 443 The voting period for revoking the commit access of *[candidate]* initiated 444 at *[date and time]* is now closed with the following results: 445 446 - YES: *[count of yes votes]* (*[% of voters]*) 447 448 - NO: *[count of no votes]* (*[% of voters]*) 449 450 - ABSTAIN: *[count of abstentions]* (*[% of voters]*) 451 452 Based on these results commit access *[is/is NOT]* revoked. The following 453 reasons for retaining commit access were proposed in NO votes: 454 455 *[list of reasons]* 456 457 The counter-arguments for each of these reasons are: 458 459 *[list of counter-arguments]* 460 461 Notification of Commit Revocation for Detrimental Behavior 462 ---------------------------------------------------------- 463 464 :: 465 466 After private discussion with you and careful consideration of the 467 situation, the other committers to the Cilium project have 468 concluded that it is in the best interest of the project that your commit 469 access to the project repositories be revoked and this has now occurred. 470 471 The reasons for this decision are: 472 473 *[list of reasons for removing access]* 474 475 While your goals and those of the project no longer appear to be aligned we 476 greatly appreciate all the work you have done for the project and wish you 477 continued success in your future work.