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.