Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Additions to the contributing document explaining our new decision-ma…

…king process.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13962 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 136bf00615c3dadd697e746185f5c35258aa418a 1 parent 89ea98c
Jacob Kaplan-Moss authored September 29, 2010

Showing 1 changed file with 76 additions and 20 deletions. Show diff stats Hide diff stats

  1. 96  docs/internals/contributing.txt
96  docs/internals/contributing.txt
@@ -812,6 +812,42 @@ repository:
812 812
       Subversion and Trac so that any commit message in that format will
813 813
       automatically post a comment to the appropriate ticket.
814 814
 
  815
+Reverting commits
  816
+-----------------
  817
+
  818
+Nobody's perfect; mistakes will be committed. When a mistaken commit is
  819
+discovered, please follow these guidelines:
  820
+
  821
+    * Try very hard to ensure that mistakes don't happen. Just because we
  822
+      have a reversion policy doesn't relax your responsibility to aim for
  823
+      the highest quality possible. Really: double-check your work before
  824
+      you commit it in the first place!
  825
+      
  826
+    * If possible, have the original author revert his/her own commit.
  827
+      
  828
+    * Don't revert another author's changes without permission from the
  829
+      original author.
  830
+      
  831
+    * If the original author can't be reached (within a reasonable amount
  832
+      of time -- a day or so) and the problem is severe -- crashing bug,
  833
+      major test failures, etc -- then ask for objections on django-dev
  834
+      then revert if there are none.
  835
+      
  836
+    * If the problem is small (a feature commit after feature freeze,
  837
+      say), wait it out.
  838
+      
  839
+    * If there's a disagreement between the committer and the
  840
+      reverter-to-be then try to work it out on the `django-developers`_
  841
+      mailing list. If an agreement can't be reached then it should
  842
+      be put to a vote.
  843
+      
  844
+    * If the commit introduced a confirmed, disclosed security
  845
+      vulnerability then the commit may be reverted immediately without
  846
+      permission from anyone.
  847
+    
  848
+    * The release branch maintainer may back out commits to the release
  849
+      branch without permission if the commit breaks the release branch.
  850
+
815 851
 Unit tests
816 852
 ==========
817 853
 
@@ -1159,11 +1195,8 @@ file. Then copy the branch's version of the ``django`` directory into
1159 1195
 
1160 1196
 .. _path file: http://docs.python.org/library/site.html
1161 1197
 
1162  
-Deciding on features
1163  
-====================
1164  
-
1165  
-Once a feature's been requested and discussed, eventually we'll have a decision
1166  
-about whether to include the feature or drop it.
  1198
+How we make decisions
  1199
+=====================
1167 1200
 
1168 1201
 Whenever possible, we strive for a rough consensus. To that end, we'll often
1169 1202
 have informal votes on `django-developers`_ about a feature. In these votes we
@@ -1183,24 +1216,45 @@ Although these votes on django-developers are informal, they'll be taken very
1183 1216
 seriously. After a suitable voting period, if an obvious consensus arises
1184 1217
 we'll follow the votes.
1185 1218
 
1186  
-However, consensus is not always possible.  Tough decisions will be discussed by
1187  
-all full committers and finally decided by the Benevolent Dictators for Life,
1188  
-Adrian and Jacob.
  1219
+However, consensus is not always possible. If consensus cannot be reached, or
  1220
+if the discussion towards a consensus fizzles out without a concrete decision,
  1221
+we use a more formal process.
  1222
+
  1223
+Any core committer (see below) may call for a formal vote using the same
  1224
+voting mechanism above. A proposition will be considered carried by the core team
  1225
+if:
  1226
+
  1227
+    * There are three "+1" votes from members of the core team.
  1228
+    
  1229
+    * There is no "-1" vote from any member of the core team.
  1230
+    
  1231
+    * The BDFLs haven't stepped in and executed their positive or negative
  1232
+      veto.
  1233
+
  1234
+When calling for a vote, the caller should specify a deadline by which
  1235
+votes must be received. One week is generally suggested as the minimum
  1236
+amount of time.
  1237
+
  1238
+Since this process allows any core committer to veto a proposal, any "-1"
  1239
+votes (or BDFL vetos) should be accompanied by an explanation that explains
  1240
+what it would take to convert that "-1" into at least a "+0".
  1241
+
  1242
+Whenever possible, these formal votes should be announced and held in
  1243
+public on the `django-developers`_ mailing list. However, overly sensitive
  1244
+or contentious issues -- including, most notably, votes on new core
  1245
+committers -- may be held in private.
1189 1246
 
1190 1247
 Commit access
1191 1248
 =============
1192 1249
 
1193 1250
 Django has two types of committers:
1194 1251
 
1195  
-Full committers
  1252
+Core committers
1196 1253
     These are people who have a long history of contributions to Django's
1197  
-    codebase, a solid track record of being polite and helpful on the mailing
1198  
-    lists, and a proven desire to dedicate serious time to Django's development.
1199  
-
1200  
-    The bar is very high for full commit access. It will only be granted by
1201  
-    unanimous approval of all existing full committers, and the decision will err
1202  
-    on the side of rejection.
1203  
-
  1254
+    codebase, a solid track record of being polite and helpful on the
  1255
+    mailing lists, and a proven desire to dedicate serious time to Django's
  1256
+    development. The bar is high for full commit access.
  1257
+    
1204 1258
 Partial committers
1205 1259
     These are people who are "domain experts." They have direct check-in access
1206 1260
     to the subsystems that fall under their jurisdiction, and they're given a
@@ -1208,10 +1262,12 @@ Partial committers
1208 1262
     is likely to be given to someone who contributes a large subframework to
1209 1263
     Django and wants to continue to maintain it.
1210 1264
 
1211  
-    Like full committers, partial commit access is by unanimous approval of all
1212  
-    full committers (and any other partial committers in the same area).
1213  
-    However, the bar is set lower; proven expertise in the area in question is
1214  
-    likely to be sufficient.
  1265
+    Partial commit access is granted by the same process as full
  1266
+    committers. However, the bar is set lower; proven expertise in the area
  1267
+    in question is likely to be sufficient.
  1268
+
  1269
+Decisions on new committers will follow the process explained above in `how
  1270
+we make decisions`_.
1215 1271
 
1216 1272
 To request commit access, please contact an existing committer privately. Public
1217 1273
 requests for commit access are potential flame-war starters, and will be ignored.

0 notes on commit 136bf00

Please sign in to comment.
Something went wrong with that request. Please try again.