blob: 302c998e4802eff760e26f34a55943903ed7a7af [file] [log] [blame]
Paul Kehrer0839aa82014-02-11 22:36:51 -06001Reviewing/Merging Patches
2=========================
3
Paul Kehrer91c776f2014-02-11 23:08:47 -06004Everyone is encouraged to review open pull requests. When reviewing a patch try
5to keep each of these concepts in mind:
Paul Kehrer0839aa82014-02-11 22:36:51 -06006
7Architecture
8------------
9
10* Is the proposed change being made in the correct place? Is it a fix in a
11 backend when it should be in the primitives?
12
13Intent
14------
15
16* What is the change being proposed?
17* Do we want this feature or is the bug they're fixing really a bug?
18
19Implementation
20--------------
21
22* Does the change do what the author claims?
23* Are there sufficient tests?
24* Has it been documented?
25* Will this change introduce new bugs?
26
27Grammar/Style
28-------------
29
30These are small things that are not caught by the automated style checkers.
31
32* Does a variable need a better name?
33* Should this be a keyword argument?
Paul Kehrer91c776f2014-02-11 23:08:47 -060034
35Merge Requirements
36------------------
37
38Because cryptography is so complex, and the implications of getting it wrong so
39devastating, ``cryptography`` has a strict merge policy for committers:
40
41* Patches must *never* be pushed directly to ``master``, all changes (even the
42 most trivial typo fixes!) must be submitted as a pull request.
43* A committer may *never* merge their own pull request, a second party must
44 merge their changes. If multiple people work on a pull request, it must be
45 merged by someone who did not work on it.
46* A patch that breaks tests, or introduces regressions by changing or removing
47 existing tests should not be merged. Tests must always be passing on
48 ``master``.
49* If somehow the tests get into a failing state on ``master`` (such as by a
50 backwards incompatible release of a dependency) no pull requests may be
51 merged until this is rectified.
52* All merged patches must have 100% test coverage.
53
54The purpose of these policies is to minimize the chances we merge a change
55that jeopardizes our users' security.
56