Additions to the contributing document explaining our new decision-making process.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13962 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
89ea98ca56
commit
136bf00615
|
@ -812,6 +812,42 @@ repository:
|
||||||
Subversion and Trac so that any commit message in that format will
|
Subversion and Trac so that any commit message in that format will
|
||||||
automatically post a comment to the appropriate ticket.
|
automatically post a comment to the appropriate ticket.
|
||||||
|
|
||||||
|
Reverting commits
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Nobody's perfect; mistakes will be committed. When a mistaken commit is
|
||||||
|
discovered, please follow these guidelines:
|
||||||
|
|
||||||
|
* Try very hard to ensure that mistakes don't happen. Just because we
|
||||||
|
have a reversion policy doesn't relax your responsibility to aim for
|
||||||
|
the highest quality possible. Really: double-check your work before
|
||||||
|
you commit it in the first place!
|
||||||
|
|
||||||
|
* If possible, have the original author revert his/her own commit.
|
||||||
|
|
||||||
|
* Don't revert another author's changes without permission from the
|
||||||
|
original author.
|
||||||
|
|
||||||
|
* If the original author can't be reached (within a reasonable amount
|
||||||
|
of time -- a day or so) and the problem is severe -- crashing bug,
|
||||||
|
major test failures, etc -- then ask for objections on django-dev
|
||||||
|
then revert if there are none.
|
||||||
|
|
||||||
|
* If the problem is small (a feature commit after feature freeze,
|
||||||
|
say), wait it out.
|
||||||
|
|
||||||
|
* If there's a disagreement between the committer and the
|
||||||
|
reverter-to-be then try to work it out on the `django-developers`_
|
||||||
|
mailing list. If an agreement can't be reached then it should
|
||||||
|
be put to a vote.
|
||||||
|
|
||||||
|
* If the commit introduced a confirmed, disclosed security
|
||||||
|
vulnerability then the commit may be reverted immediately without
|
||||||
|
permission from anyone.
|
||||||
|
|
||||||
|
* The release branch maintainer may back out commits to the release
|
||||||
|
branch without permission if the commit breaks the release branch.
|
||||||
|
|
||||||
Unit tests
|
Unit tests
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
@ -1159,11 +1195,8 @@ file. Then copy the branch's version of the ``django`` directory into
|
||||||
|
|
||||||
.. _path file: http://docs.python.org/library/site.html
|
.. _path file: http://docs.python.org/library/site.html
|
||||||
|
|
||||||
Deciding on features
|
How we make decisions
|
||||||
====================
|
=====================
|
||||||
|
|
||||||
Once a feature's been requested and discussed, eventually we'll have a decision
|
|
||||||
about whether to include the feature or drop it.
|
|
||||||
|
|
||||||
Whenever possible, we strive for a rough consensus. To that end, we'll often
|
Whenever possible, we strive for a rough consensus. To that end, we'll often
|
||||||
have informal votes on `django-developers`_ about a feature. In these votes we
|
have informal votes on `django-developers`_ about a feature. In these votes we
|
||||||
|
@ -1183,23 +1216,44 @@ Although these votes on django-developers are informal, they'll be taken very
|
||||||
seriously. After a suitable voting period, if an obvious consensus arises
|
seriously. After a suitable voting period, if an obvious consensus arises
|
||||||
we'll follow the votes.
|
we'll follow the votes.
|
||||||
|
|
||||||
However, consensus is not always possible. Tough decisions will be discussed by
|
However, consensus is not always possible. If consensus cannot be reached, or
|
||||||
all full committers and finally decided by the Benevolent Dictators for Life,
|
if the discussion towards a consensus fizzles out without a concrete decision,
|
||||||
Adrian and Jacob.
|
we use a more formal process.
|
||||||
|
|
||||||
|
Any core committer (see below) may call for a formal vote using the same
|
||||||
|
voting mechanism above. A proposition will be considered carried by the core team
|
||||||
|
if:
|
||||||
|
|
||||||
|
* There are three "+1" votes from members of the core team.
|
||||||
|
|
||||||
|
* There is no "-1" vote from any member of the core team.
|
||||||
|
|
||||||
|
* The BDFLs haven't stepped in and executed their positive or negative
|
||||||
|
veto.
|
||||||
|
|
||||||
|
When calling for a vote, the caller should specify a deadline by which
|
||||||
|
votes must be received. One week is generally suggested as the minimum
|
||||||
|
amount of time.
|
||||||
|
|
||||||
|
Since this process allows any core committer to veto a proposal, any "-1"
|
||||||
|
votes (or BDFL vetos) should be accompanied by an explanation that explains
|
||||||
|
what it would take to convert that "-1" into at least a "+0".
|
||||||
|
|
||||||
|
Whenever possible, these formal votes should be announced and held in
|
||||||
|
public on the `django-developers`_ mailing list. However, overly sensitive
|
||||||
|
or contentious issues -- including, most notably, votes on new core
|
||||||
|
committers -- may be held in private.
|
||||||
|
|
||||||
Commit access
|
Commit access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Django has two types of committers:
|
Django has two types of committers:
|
||||||
|
|
||||||
Full committers
|
Core committers
|
||||||
These are people who have a long history of contributions to Django's
|
These are people who have a long history of contributions to Django's
|
||||||
codebase, a solid track record of being polite and helpful on the mailing
|
codebase, a solid track record of being polite and helpful on the
|
||||||
lists, and a proven desire to dedicate serious time to Django's development.
|
mailing lists, and a proven desire to dedicate serious time to Django's
|
||||||
|
development. The bar is high for full commit access.
|
||||||
The bar is very high for full commit access. It will only be granted by
|
|
||||||
unanimous approval of all existing full committers, and the decision will err
|
|
||||||
on the side of rejection.
|
|
||||||
|
|
||||||
Partial committers
|
Partial committers
|
||||||
These are people who are "domain experts." They have direct check-in access
|
These are people who are "domain experts." They have direct check-in access
|
||||||
|
@ -1208,10 +1262,12 @@ Partial committers
|
||||||
is likely to be given to someone who contributes a large subframework to
|
is likely to be given to someone who contributes a large subframework to
|
||||||
Django and wants to continue to maintain it.
|
Django and wants to continue to maintain it.
|
||||||
|
|
||||||
Like full committers, partial commit access is by unanimous approval of all
|
Partial commit access is granted by the same process as full
|
||||||
full committers (and any other partial committers in the same area).
|
committers. However, the bar is set lower; proven expertise in the area
|
||||||
However, the bar is set lower; proven expertise in the area in question is
|
in question is likely to be sufficient.
|
||||||
likely to be sufficient.
|
|
||||||
|
Decisions on new committers will follow the process explained above in `how
|
||||||
|
we make decisions`_.
|
||||||
|
|
||||||
To request commit access, please contact an existing committer privately. Public
|
To request commit access, please contact an existing committer privately. Public
|
||||||
requests for commit access are potential flame-war starters, and will be ignored.
|
requests for commit access are potential flame-war starters, and will be ignored.
|
||||||
|
|
Loading…
Reference in New Issue