5225.2.7
by Martin Pool
Clean up and improve code review and contribution guidelines. |
1 |
Reviewing proposed changes to Bazaar |
2 |
#################################### |
|
3 |
||
4 |
All non-trivial code changes coming in to Bazaar are reviewed by someone else. |
|
5 |
||
6 |
Anyone is welcome to review any patch. You don't need to have a full |
|
7 |
understanding of the codebase to find problems in the code, the documentation, |
|
8 |
or the concept of the patch. |
|
9 |
||
5225.2.3
by Martin Pool
Split out code review guidelines, and (sadly) remove Bundle Buggy from it. RIP. |
10 |
Normally changes by core contributors are reviewed by one other core |
11 |
developer, and changes from other people are reviewed by two core |
|
5225.2.7
by Martin Pool
Clean up and improve code review and contribution guidelines. |
12 |
developers. Use intelligent discretion about whether if the patch is trivial. |
13 |
||
14 |
No one likes their merge requests sitting in a queue going nowhere: this |
|
15 |
is pure waste. We prioritize reviewing existing proposals. |
|
16 |
Canonical dedicates some staff time to providing prompt helpful reviews. |
|
17 |
(See <http://wiki.bazaar.canonical.com/PatchPilot/>.) |
|
18 |
||
19 |
From late 2009 on, we do all our code reviews through Launchpad's |
|
20 |
merge proposal interface. |
|
5225.2.3
by Martin Pool
Split out code review guidelines, and (sadly) remove Bundle Buggy from it. RIP. |
21 |
|
22 |
||
23 |
Reviewing proposed changes |
|
24 |
========================== |
|
25 |
||
26 |
There are three main requirements for code to get in: |
|
27 |
||
28 |
* Doesn't reduce test coverage: if it adds new methods or commands, |
|
29 |
there should be tests for them. There is a good test framework |
|
30 |
and plenty of examples to crib from, but if you are having trouble |
|
31 |
working out how to test something feel free to post a draft patch |
|
32 |
and ask for help. |
|
33 |
||
34 |
* Doesn't reduce design clarity, such as by entangling objects |
|
35 |
we're trying to separate. This is mostly something the more |
|
36 |
experienced reviewers need to help check. |
|
37 |
||
38 |
* Improves bugs, features, speed, or code simplicity. |
|
39 |
||
40 |
Code that goes in should not degrade any of these aspects. Patches are |
|
41 |
welcome that only cleanup the code without changing the external |
|
42 |
behaviour. The core developers take care to keep the code quality high |
|
43 |
and understandable while recognising that perfect is sometimes the enemy |
|
44 |
of good. |
|
45 |
||
46 |
It is easy for reviews to make people notice other things which should be |
|
47 |
fixed but those things should not hold up the original fix being accepted. |
|
5225.2.7
by Martin Pool
Clean up and improve code review and contribution guidelines. |
48 |
New things can easily be recorded in the bug tracker instead. |
5225.2.3
by Martin Pool
Split out code review guidelines, and (sadly) remove Bundle Buggy from it. RIP. |
49 |
|
50 |
It's normally much easier to review several smaller patches than one large |
|
51 |
one. You might want to use ``bzr-loom`` to maintain threads of related |
|
52 |
work, or submit a preparatory patch that will make your "real" change |
|
53 |
easier. |
|
54 |
||
55 |
||
56 |
Checklist for reviewers |
|
57 |
======================= |
|
58 |
||
59 |
* Do you understand what the code's doing and why? |
|
60 |
||
61 |
* Will it perform reasonably for large inputs, both in memory size and |
|
62 |
run time? Are there some scenarios where performance should be |
|
63 |
measured? |
|
64 |
||
65 |
* Is it tested, and are the tests at the right level? Are there both |
|
66 |
blackbox (command-line level) and API-oriented tests? |
|
67 |
||
68 |
* If this change will be visible to end users or API users, is it |
|
69 |
appropriately documented in NEWS? |
|
70 |
||
71 |
* Does it meet the coding standards below? |
|
72 |
||
73 |
* If it changes the user-visible behaviour, does it update the help |
|
74 |
strings and user documentation? |
|
75 |
||
76 |
* If it adds a new major concept or standard practice, does it update the |
|
77 |
developer documentation? |
|
78 |
||
79 |
* (your ideas here...) |
|
80 |
||
81 |
||
82 |
Reviews on Launchpad |
|
83 |
==================== |
|
84 |
||
85 |
Anyone can propose or comment on a merge proposal just by creating a |
|
86 |
Launchpad account. |
|
87 |
||
88 |
From <https://code.launchpad.net/bzr/+activereviews> you can see all |
|
89 |
currently active reviews, and choose one to comment on. This page also |
|
90 |
shows proposals that are now approved and should be merged by someone with |
|
91 |
PQM access. |
|
92 |
||
5225.2.7
by Martin Pool
Clean up and improve code review and contribution guidelines. |
93 |
<https://help.launchpad.net/Code/Review> explains the various merge proposal |
94 |
states. Note that we don't use state *Approved* until the patch is completely |
|
95 |
ready to merge. |
|
96 |
||
97 |
||
98 |
Landing approved changes |
|
99 |
======================== |
|
100 |
||
101 |
Once a merge proposal is approved and finished, it's sent to PQM (the patch |
|
102 |
queue manager) which will automatically test and integrate it. The recommended |
|
103 |
way to start this off is by running the ``feed-pqm`` script from |
|
104 |
<https://launchpad.net/hydrazine/>. |