1 |
Sorry for the long mail. I am hugely supportive of using Gerrit. |
2 |
|
3 |
|
4 |
Matt Turner wrote: |
5 |
> I find this model tedious |
6 |
|
7 |
Why tedious? It sounds like patches do get near-instant review, which |
8 |
is highly desirable if at all possible. |
9 |
|
10 |
|
11 |
> and lends itself to rapid-fire question and answer debate about a |
12 |
> proposed change, partly due to the medium, |
13 |
|
14 |
Why is that a bad thing? |
15 |
|
16 |
|
17 |
> partly due to pastebin'd patches having a significantly lesser |
18 |
> chance of containing a meaningful commit summary. |
19 |
|
20 |
Why does that matter much? I expect that they will come with a good |
21 |
commit message when they go into the repo? |
22 |
|
23 |
|
24 |
> I claim that if patches were sent to the mailing list they would |
25 |
> receive better review from a larger reviewer base and the committed |
26 |
> results would contain fewer errors. |
27 |
|
28 |
Sorry, but I do not agree at all. |
29 |
|
30 |
I am a very strong proponent of code review being a hard requirement |
31 |
for anything being included in any repository. I have used various |
32 |
systems for accomplishing or encouraging review in a few different |
33 |
teams. |
34 |
|
35 |
As much as I wish that code quality and code review would only |
36 |
require the right process, it doesn't. It all comes down to the |
37 |
people. No matter what the process is, if people want to commit |
38 |
then they will commit. |
39 |
|
40 |
|
41 |
> The process of git format-patch/send-email forces the author to at |
42 |
> least look at the patch before committing, |
43 |
|
44 |
No? The process of git diff or git show allows the author to look at |
45 |
the patch before publishing it, but it is absolutely impossible to |
46 |
force an author to critically review anything. Authors will review |
47 |
their commits only if they want to, and if they want to they do not |
48 |
need to be forced. Unfortunately my experience is that nearly noone |
49 |
wants to, or can, review code. Neither their own nor someone else's. |
50 |
|
51 |
|
52 |
> and reviewers are likely to give a better review to something they |
53 |
> find on a mailing list than in IRC. |
54 |
|
55 |
I disagree with this too. I think the reviewers should consider how |
56 |
on IRC they are actually *in* the process of the developer doing the |
57 |
work, that is the absolutely ideal spot for review. Once the email is |
58 |
out, the developer has task switched away from that commit. |
59 |
|
60 |
Another way to view this is that somehow email-driven review by |
61 |
neccessity means longer idle periods between each run of the task for |
62 |
everyone involved, both developer and reviewers. I find this |
63 |
extremely undesirable. I prefer working fast and hard on something, |
64 |
finish it perfectly, and move on. I think the key to success with |
65 |
that is to have small enough somethings that there are no blockers. |
66 |
|
67 |
I want review to be part of it, I really do want review, but that |
68 |
requires people who are open to task switching and review sprinting, |
69 |
if you will, for my commit. |
70 |
|
71 |
|
72 |
> At least personally, I find that I'm much more likely to forget |
73 |
> about something asked of me on IRC than via email. |
74 |
|
75 |
IMO the problem with email is that the queue is very very long and |
76 |
for many people (at least for me) it is constantly growing. |
77 |
|
78 |
|
79 |
> Patch review isn't about a power structure. It's about maintaining |
80 |
> quality and catching mistakes before they could affect anyone. |
81 |
|
82 |
Of course. But unfortunately everyone who does not already want to do |
83 |
review percept review to be *exactly* about a power structure. There |
84 |
is a huge gap, and closing that gap is a difficult training problem, |
85 |
which has nothing to do with coding or reviewing. :( |
86 |
|
87 |
|
88 |
> git is also not a review tool. Once it's in git, it's history, and I |
89 |
> don't like my mistakes being part of historical record. :) |
90 |
|
91 |
Yes and no. Gerrit is a git-native review tool. It allows to iterate |
92 |
changes at the cost of a Change-Id line in the commit message so that |
93 |
mistakes do not have to make it into the repository. |
94 |
|
95 |
|
96 |
> Chrome, I think, and other Google projects use a web-based review |
97 |
> tool called gerrit. |
98 |
|
99 |
Gerrit originated from the Android project. |
100 |
|
101 |
Note that Gerrit is *not* strictly web-based. |
102 |
|
103 |
Gerrit is a Java .war file with lots of stuff built-in, it does offer |
104 |
an HTTP server, but it also offers an SSH server as well as a Git |
105 |
server. It has native implementations of all these protocols and it |
106 |
allows to create very nice - though not perfect - workflows. |
107 |
|
108 |
I am a huge fan of Gerrit. It is by far the best system for code |
109 |
review that I have seen. |
110 |
|
111 |
|
112 |
> Either of these would be large improvements, with the mailing list |
113 |
> system having lower cost and probably the same effectiveness. |
114 |
|
115 |
The way I like to use Gerrit is as follows: |
116 |
|
117 |
I use git to push my commit(s) to Gerrit. |
118 |
Gerrit sends email(s) to the mailing list including the commitdiff. |
119 |
People can use the web interface *or* SSH to comment on the commit. |
120 |
People can use the web interface *or* SSH to include or veto the commit. |
121 |
|
122 |
There are two major things that Gerrit is missing: |
123 |
|
124 |
* The web interface allows making inline comments on every diff line. |
125 |
The SSH interface does not allow making inline comments. |
126 |
|
127 |
* When coupling Gerrit with a tool like Jenkins to do verification of |
128 |
commits (anything from a build smoke test to running test suites) |
129 |
it is unfortunately not possible to instruct Gerrit to include a |
130 |
commit until *after* the verification has completed. I am missing |
131 |
the possibility to say "if verification passes, please include." |
132 |
It can kinda-sorta be accomplished, but not as nicely as I'd like. |
133 |
|
134 |
Those two problems aside, I very much like using Gerrit, and in at |
135 |
least two projects where it has been introduced it has in fact led |
136 |
to more review and participation. |
137 |
|
138 |
In both projects it has done nothing (and can do nothing) to keep the |
139 |
people who do not care much about code quality from committing shit. |
140 |
|
141 |
The only way to filter what goes into the repo is by skilled human. |
142 |
|
143 |
Skilled humans are rare, and on top of that everyone who cares less |
144 |
about code quality than the skilled human will get pissed off by how |
145 |
(perceived) negative and/or critical and/or conservative and/or |
146 |
demanding the skilled human is. That's also not a lot of fun. |
147 |
|
148 |
|
149 |
//Peter |