Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-17 Thread Erik Moeller
On Mon, Jun 13, 2011 at 11:39 PM, Erik Moeller e...@wikimedia.org wrote:
 To keep the ball rolling, I've started a draft here, based in part on
 your comments:
 http://www.mediawiki.org/wiki/Development_process_improvement/20%25_policy

As a quick update, yesterday we had a conversation to think about how
we can make this real. In this discussion, the participants were the
Engineering Program Managers, Sumana and me. If you want the
play-by-play, you can see Sumana's notes here:

http://etherpad.wikimedia.org/Dev-Process-Improvement

The high level summary is that within the management group, there's
consensus that this is a good idea, and that we need to make it real
ASAP, principally within the parameters of the aforementioned policy
page.

The practical barriers are that we 1) need to ensure that we're not
adding to people's existing massive workload without taking something
off, in order to do this, 2) we need to plan for skills development
related to code review and deployment.

With regard to 1), managers are beginning conversations with their
reports with regard to project allocation, and we're working towards
getting every full-time engineer freed up ASAP to make that 20%
commitment.

With regard to 2), RobLa and Sumana are starting to think about a code
review/deployment boot camp (more WMF-focused than a hackathon, but
ideally with some options for remote participation) -- again, see the
notes for what's been discussed so far; Rob's going to talk more about
this in a couple of weeks or so (he's off next week).

All best,
Erik
-- 
Erik Möller
Deputy Director, Wikimedia Foundation

Support Free Knowledge: http://wikimediafoundation.org/wiki/Donate

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-14 Thread Erik Moeller
On Thu, Jun 2, 2011 at 2:26 AM, Roan Kattouw roan.katt...@gmail.com wrote:
 I like the 20% model as well. It goes a little bit further than my
 suggestion, which was 20, 25 or 33% model for certain senior devs, but
 if you're volunteering to give me more than what I asked for that's
 even better :) . For numerous reasons, I think getting /everyone/
 involved with service work is a great idea.

To keep the ball rolling, I've started a draft here, based in part on
your comments:
http://www.mediawiki.org/wiki/Development_process_improvement/20%25_policy

Please be bold and/or add your thoughts. As per the note on the page
and other comments in this thread, a policy like this isn't a
replacement for dedicated staff supporting the code review and release
process; it's merely one component of ensuring appropriate capacity is
available for relevant work.
-- 
Erik Möller
Deputy Director, Wikimedia Foundation

Support Free Knowledge: http://wikimediafoundation.org/wiki/Donate

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-14 Thread MZMcBride
Erik Moeller wrote:
 On Thu, Jun 2, 2011 at 2:26 AM, Roan Kattouw roan.katt...@gmail.com wrote:
 I like the 20% model as well. It goes a little bit further than my
 suggestion, which was 20, 25 or 33% model for certain senior devs, but
 if you're volunteering to give me more than what I asked for that's
 even better :) . For numerous reasons, I think getting /everyone/
 involved with service work is a great idea.
 
 To keep the ball rolling, I've started a draft here, based in part on
 your comments:
 http://www.mediawiki.org/wiki/Development_process_improvement/20%25_policy
 
 Please be bold and/or add your thoughts. As per the note on the page
 and other comments in this thread, a policy like this isn't a
 replacement for dedicated staff supporting the code review and release
 process; it's merely one component of ensuring appropriate capacity is
 available for relevant work.

This looks great! Both your post and Brion's yesterday have been spot-on.

I think with a few people doing shell bugs every week (as an example), the
backlog will be killed in no time. Shell bugs are generally some of the
most user-facing issues, so reducing time between filing and fulfillment on
those will go a long way toward keeping users happy. There are also
structural improvements that can be made (such as getting a Configure
extension working on Wikimedia wikis) that could eliminate the need for
sysadmin intervention a lot of the time. I'm not sure if working on projects
that like would fall within the 20% rule as written, but it's something to
think about.

The only other point from your list that I think maybe could possibly be
made explicit is a focus on the sister projects. It's pretty clear that
during the 80%, Wikipedia is the central focus. I've been doing some work on
Wikisource lately and without looking very hard, it's very easy to see how
some support structures on the sister sites (API support, rewrites of some
of these extensions, moving code from JavaScript to PHP, etc.) could really
enable third-party developers.

Overall, this seems like a really positive step in the right direction. :-)

MZMcBride



___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-06 Thread Rob Lanphier
On Sun, Jun 5, 2011 at 9:13 PM, MZMcBride z...@mzmcbride.com wrote:
 If there's any
 support or help that non-developers can offer in this process, please update
 the mailing list with information as to how. A lot of people are keen on
 seeing some steady progress forward. :-)

I think one thing to do is to help triage the 1.17 blockers:
https://bugzilla.wikimedia.org/show_bug.cgi?id=26676

It appears a few more were added to the list over the weekend,
including bug 24415 (tracking bug for Resource Loader 1.0), for which
there are many blockers.  If these bugs are all truly blockers, then
we'll have to pull people in from code review to fix those bugs.  If
we can wait until 1.18 or later, then we'll have the luxury of holding
out for volunteer help.

Rob

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-05 Thread MZMcBride
Rob Lanphier wrote:
 Here's an immediate challenge we face: in order to release 1.18, we
 need to get the red line in this graph to zero:
 http://toolserver.org/~robla/crstats/crstats.118all.html
 
 As of midnight UTC on June 3, we were at 1594 revisions.  Doing the
 math, in order to get close to zero by July 15, we have to review 265
 revisions/week.  That means:
 
 2011-Jun-03 1594
 2011-Jun-10 1329
 2011-Jun-17 1064
 2011-Jun-24 799
 2011-Jul-01 534
 2011-Jul-08 269
 2011-Jul-15 4
 
 So, can we make it a goal to get to 1329 by this time next week?  That
 first 265 should be a lot easier than the last 265, so if we can't get
 through the first 265, then we don't really stand a chance.

Thanks for posting this. This seems pretty reasonable. If there's any
support or help that non-developers can offer in this process, please update
the mailing list with information as to how. A lot of people are keen on
seeing some steady progress forward. :-)

MZMcBride



___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-03 Thread Rob Lanphier
On Wed, Jun 1, 2011 at 5:58 PM, Erik Moeller e...@wikimedia.org wrote:
 Right. And just to weigh in quickly on the resources issue -- the
 review/deploy/release train is clearly not moving at the pace we want.
 This does affect WMF staffers and contractors as well, but we know
 that it's especially frustrating for volunteers and third party
 committers. We kicked around the idea of a 20% rule for all funded
 engineers (IMO not just senior staff) in Berlin and in the office
 yesterday, and I think Roan mentioned it earlier in this thread: i.e.
 ensuring that every WMF-funded engineer spends one day a week on
 service work (code review, design/UX review, deployment, shell bugs,
 software bugs, bug triaging, etc.).

Expect to hear more from the other EPMs on this subject, but this is a
no-brainer for General Engineering to get on board with (we're already
pretty much doing this).

Here's an immediate challenge we face: in order to release 1.18, we
need to get the red line in this graph to zero:
http://toolserver.org/~robla/crstats/crstats.118all.html

As of midnight UTC on June 3, we were at 1594 revisions.  Doing the
math, in order to get close to zero by July 15, we have to review 265
revisions/week.  That means:

2011-Jun-03 1594
2011-Jun-10 1329
2011-Jun-17 1064
2011-Jun-24 799
2011-Jul-01 534
2011-Jul-08 269
2011-Jul-15 4

So, can we make it a goal to get to 1329 by this time next week?  That
first 265 should be a lot easier than the last 265, so if we can't get
through the first 265, then we don't really stand a chance.

Rob

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-03 Thread Brion Vibber
On Fri, Jun 3, 2011 at 3:33 PM, Rob Lanphier ro...@wikimedia.org wrote:

 So, can we make it a goal to get to 1329 by this time next week?  That
 first 265 should be a lot easier than the last 265, so if we can't get
 through the first 265, then we don't really stand a chance.


I accept this challenge! My 20% is committed for next week... are y'all with
us? :D

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-03 Thread Chad
On Fri, Jun 3, 2011 at 7:45 PM, Brion Vibber br...@pobox.com wrote:
 On Fri, Jun 3, 2011 at 3:33 PM, Rob Lanphier ro...@wikimedia.org wrote:

 So, can we make it a goal to get to 1329 by this time next week?  That
 first 265 should be a lot easier than the last 265, so if we can't get
 through the first 265, then we don't really stand a chance.


 I accept this challenge! My 20% is committed for next week... are y'all with
 us? :D


Which day? I'll pencil it in as well :)

-Chad

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-02 Thread Ariel T. Glenn
Στις 01-06-2011, ημέρα Τετ, και ώρα 15:58 -0600, ο/η bawolff έγραψε:
 On Wed, Jun 1, 2011 at 3:02 PM, Brion Vibber br...@pobox.com wrote:
  On Wed, Jun 1, 2011 at 1:53 PM, bawolff bawolff...@gmail.com wrote:
 
  As a volunteer person, I'm fine if code I commit is reverted based on
  it sucking, being too complicated, being too ugly, etc provided there
  is actually some objection to the code. However, I'd be rather
  offended if it was reverted on the basis of no one got around to
  looking at in the last 3 days, since that is something essentially out
  of my control.
 
  When someone looks at your commit within ~72 hours and reverts it because
  nobody's yet managed to figure out whether it works or not and it needs more
  research and investigation... what was the reason for the revert?
 
  Because 'no one reviewed it'? Or because someone looked at it and decided it
  needed more careful review than they could give yet?
 
  -- brion
 
 
 That's fine. I'm only concerned with the possibility of no one looks
 at the commit, and it gets summarily reverted (Which is what I thought
 was being proposed).
 
 --bawolff

One question is how thorough is thorough: if the code is reviewed for
security issues and doesn't apparently break things, does it need to get
gone over with a fine toothed comb before we accept it for deployment?
I would say no, and that we could live with the commit adheres to our
basic coding guidelines, looks like it will generally do what it says
(without necessarily having tested every detail personally), and follows
general usage patterns (appropriate use of hooks, cacheing, i18n, etc.
etc.).

Can we ensure that folks have (now and ongoing) enough available time to
review commits to trunk at that level within 72 hours?  This means
buy-in from reviewers *and from their managers* that they have X time
for this and that time will not get reassigned to other priorities.  

If we can't ensure this, we need to decide on the minimum level of
review we *can* get done, or extend the time period, or both.

Asking all committers to trunk to guess whether their reviewer can or
cannot make the 72-hour window for their commit seems like a recipe for
pissing people off.

Just my two cents.

Ariel

P.S. Oh and for the record I would like 4 releases a year ideally, I
could live with 3, and I would be pretty unhappy with two.  Deployment
from trunk should happen a lot more often.  I don't know if we can
manage weekly, but it's a good target.



___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-02 Thread Robert Leverington
Thank you for posting this Erik.

I initially didn't reply on this thread because to me it just seems to
be the same as the 3 or 4 times we've had the same discussion before.
No technical or procedural change is going to solve a problem that is
ultimately caused by a lack of time assigned to it.  I was somewhat
disappointed by the suggestion that the onus should be on volunteers to
find a reviewer for their code, as this is just as unworkable without
staff time assigned to doing it - and perhaps could be even more
demotivating than the status quo.

Having review be a portion of staff time was always how I assumed it
would be arranged.  The justification for not assigning time to review
has often been that one person or team doing it all the time would
result in burn-out, and I agree with this.  As a (part-time) developer I
certainly wouldn't want to spend all my time doing service work, even
for just one or two weeks at a time.  The idea of having a single
person/team assigned for each deploy/release cycle is nice, but I think
that it would lead to burn-outs and conflicts with existing
responsibilities those people have.  Whatever model is implemented, I
hope it can finally be successful.

I reject the notion that we need a change in our review processes.
Empirical evidence shows that when staff time is assigned to it, our
code review system *does* work.  (Of course there are always minor
changes that would improve efficiency, such as automating some of the
reporting tasks that have traditionally been done manually.)

Updates on how this is going would be nice, as again it took MZMcBride
to bring it up before anyone senior posted about it - and this is still
the big issue for volunteer developers.

Cheers,
Robert

On 2011-06-01, Erik Moeller wrote:
 On Wed, Jun 1, 2011 at 4:50 PM, Brion Vibber br...@pobox.com wrote:
  This is one of the reasons I tend to advocate shorter
  development/review/deployment cycles. By keeping the cycle short, we can
  help build up regular habits: run through some reviews every couple days. Do
  a deployment update *every* week. If you don't think your code will be
  working within that time, either work on it outside of trunk or break it up
  into pieces that won't interfere with other code.
 
  With a long cycle, review gets pushed aside until it's no longer habit, and
  gets lost.
 
 Right. And just to weigh in quickly on the resources issue -- the
 review/deploy/release train is clearly not moving at the pace we want.
 This does affect WMF staffers and contractors as well, but we know
 that it's especially frustrating for volunteers and third party
 committers. We kicked around the idea of a 20% rule for all funded
 engineers (IMO not just senior staff) in Berlin and in the office
 yesterday, and I think Roan mentioned it earlier in this thread: i.e.
 ensuring that every WMF-funded engineer spends one day a week on
 service work (code review, design/UX review, deployment, shell bugs,
 software bugs, bug triaging, etc.).
 
 An alternative model is to have rotating teams that do this work. I
 personally prefer the 20% model because it gives more
 consistency/predictability and less churn, but I'm curious what other
 folks think, and I'm comfortable with us continuing this discussion
 openly on this list.
 
 Whether that would get us to a healthier balance remains to be seen,
 but I think there's pretty broad agreement that adding more support to
 the review/deployment/release process is a necessary precondition for
 any other process changes like moving towards pre-commit review.
 
 Clearly what's been said in this thread is true -- there are lots of
 things that can be done to reduce our technical debt and make it
 easier to accommodate and manage new changes, but without added
 dedicated capacity, the train won't move at a speed that we're happy
 with. We can't change that overnight (because we need to figure out
 the right rhythm and the right processes together), but we will change
 it.
 
 Erik
 -- 
 Erik Möller
 Deputy Director, Wikimedia Foundation
 
 Support Free Knowledge: http://wikimediafoundation.org/wiki/Donate
 
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-02 Thread Roan Kattouw
On Thu, Jun 2, 2011 at 9:20 AM, Robert Leverington rob...@rhl.me.uk wrote:
 I reject the notion that we need a change in our review processes.
 Empirical evidence shows that when staff time is assigned to it, our
 code review system *does* work.  (Of course there are always minor
 changes that would improve efficiency, such as automating some of the
 reporting tasks that have traditionally been done manually.)

I agree that it's worth trying to add staff time without materially
changing the process, see how that works, then change things as
needed.

 Updates on how this is going would be nice, as again it took MZMcBride
 to bring it up before anyone senior posted about it - and this is still
 the big issue for volunteer developers.

FWIW, I was planning to bring this up at the staff meeting following
the Berlin hackathon. I said to a number of people that I wanted to
have a discussion about code review, both before and during the event.
This didn't end up happening, partly because some felt that people
that weren't around should be involved, or that the entire discussion
should be had in public, and partly because we were doing all sorts of
other things. I think MZ knew about my plans and the lack of a
post-conference update saying here's the outcome of our discussion,
what do you think may have driven him to bring this up. I care about
this issue, and I agree with MZ on most of the basics, but I'm also a
busy guy who took some time off after the conference to focus on
school.

So having said the obligatory but I care too! thing, you are right
that it seems, at least to people outside the office (both staff and
non-staff: apparently there are lots of hallway discussions about CR
these days, but they happen thousands of miles from my desk so working
for WMF doesn't help me there), that there isn't a lot of attention
given to this. Whether that's actually the case or just the impression
that's being created due to lack of communication doesn't matter all
that much; we can and should fix it.

Roan Kattouw (Catrope)

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-02 Thread Platonides
Chad wrote:
 On Wed, Jun 1, 2011 at 9:09 PM, Russell N. Nelson - rnnelson
 rnnel...@clarkson.edu  wrote:
 I've done release engineering before. It is my considered opinion that one 
 person needs to be on point for each release. It's possible that that person 
 could rotate in and out, but one person needs to be running through the 
 checklist of things that need to be done.


 I've mentioned on several occasions in the past that we should try this.
 If each branch (REL1_17, 1.17wmf1, REL1_18) had someone to babysit
 it, it would lead to less turnaround for things to get merged to various
 branches because someone would be the go-to person for getting a
 trunk change into the branch in question.

+1


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Ashar Voultoiz
On 31/05/11 23:13, Brion Vibber wrote:
 I tend to agree that a more active 'pull good fixes  features in from
 feeder branches' model can be helpful, for instance in allowing individual
 modules, extensions, etc to iterate faster in a shared-development
 environment without forcing the changes to trunk/mainlines's production
 deployment  release channels until they're ready.

What prevents us to actually implements this? We could just restrict the 
/trunk/ to a few merging people, they will only take care of merging 
revisions set from other branches.

Developers then build their fixes / features in their own branches and 
get it reviewed / signed-off by others.  Once done, it is submitted to 
the merge team.

This is much like the REL branches which only a few people are able to 
merge trunk changes in. Just with another layer :-)

The VCS would be up to the developer (thus solving the migrate from svn 
to git issue in the meantime). Subversion will only be used to actually 
merge patch sets in trunk or REL branches.


 But these need to be combined with really active, consistent management;
 just like keeping the deployment  release branches clean, working, and up
 to date consistently requires a lot of attention -- when attention gets
 distracted, the conveyor belt falls apart and fixes  features stop reaching
 the public until the next giant whole-release push, which turns into a
 circus.

Then we need merge windows. A date by which everyone would have to make 
sure their patch is ready: tested heavily, reviewed by people actually 
knowing the part of code impacted, test written, style fixed, i18n ...

If the patch does not make it in the current merge windows, it will 
apply for the next one.


-- 
Ashar Voultoiz


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Max Semenik
On Wed, Jun 1, 2011 at 1:13 AM, Brion Vibber br...@pobox.com wrote:

 OMG my commit will be wasted in 20
 minutes! Heeelponeone is not the best scenario for clear thinking.
 Time pressure might result in people reviewing stuff they're less
 familiar with, and reviews being done in a haste, so CR quality will
 suffer.


 I'd say better to do that continuously and confirm that things are being
 reviewed *and* run on automated tests *and* run against humans on
 actual-production-use beta servers *and* in actual production use within a
 reasonable time frame, than to let review slide for 10 months and rush it
 all right before a giant release.

 That IMO is what really hurts code review -- removing it from the context
 of code *creation*, and removing the iterative loop between writing,
 debugging, testing, debugging, deploying, debugging, fixing, and debugging
 code.


I would wholeheartedly supoport the idea of making tests a mandatory
accompaniment to code. One latest example: we made latest security releases
without tests. This is bad not only because bugs not tested for *will*
eventually reappear, but also because in my experience the process of
writing tests helps to discover more problems with code. If compared with
manual tests, writing low-level unit tests allows to look at possible
problems more methodicallly, uncovering more problems.

Ideally, I would like to see the same policy as Chome has:
1) All reasonably testable code must be accompanied with automatic tests,
period. (It's easier to enforce for them because they practice pre-commit
reviews.)
2) To commit, hang around on IRC. After committing, wait for buildbot to
post test results of your commit. If something's broken, fix it ASAP,
otherwise you'll be reverted.

To make this reasonable, we would also need to run tests for branches on the
central server, too - CruiseControl doesn't look flexible enough for this.
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Happy-melon

Chad innocentkil...@gmail.com wrote in message 
news:banlktinrbx45wsg6yyclwpzpo7mjb3r...@mail.gmail.com...
 On Tue, May 31, 2011 at 7:49 PM, Happy-melon happy-me...@live.com wrote:
 Every way of phrasing or describing the problem with MW CR can be boiled
 down to one simple equation: not enough qualified people are not 
 spending
 enough time doing Code Review (until a mad rush before release) to match 
 the
 amount of code being committed.


 Maybe people shouldn't commit untested code so often.

 I'm not joking.

 -Chad

That's a worthy goal, but one that's orthogonal to Code Review.  Every 
single person on this list will have committed some unreviewed code to some 
repository at some time; the fewer times you've done it, the more likely you 
are to have crashed the cluster the times you did.  People doing some 
unquantifiably greater amount of testing doesn't mean we can spend any less 
time on CR per revision.  Automated testing, regression testing, other 
well-defined infrastructures (I think Ryan's Nova Stack is going to be of 
huge benefit in this respect) *do* save CR time *because reviewers know 
exactly what has been tested*.  A policy like every bugfix must include 
regression tests would definitely improve things in that area.

Of course, it's undeniable that more testing would lead to fewer broken 
commits, and that that's a Good Thing.  If we implement processes which set 
a higher bar for commits 'sticking' in the repository, whether that's 
pre-commit review, a branch/integrate model, post-commit countdown, 
whatever; people will rise to that level.

--HM

 



___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Roan Kattouw
On Wed, Jun 1, 2011 at 1:49 AM, Happy-melon happy-me...@live.com wrote:
 By far the most likely outcome of this is that in the two months following
 its introduction, 95% of all commits are reverted, because the people who
 are supposed to be reviewing them don't spend any more time than usual
 reviewing them.  If I make a change to the preprocessor, HipHop, Sanitizer,
 SecurePoll, passwords, tokens, or any of a number of other things, I'm going
 to need Tim to review them.  I don't begrudge Tim the thousand-and-one other
 things he has to do besides review my code within 72 hours.  Does that mean
 that no one should make *any* changes to *any* of those areas?  More
 dangerously still, does that mean that **only people who can persuade Tim to
 review** be allowed to make changes to those areas?  I know what the answers
 to those questions are *supposed* to be, that's not the point.  The point is
 **what actually happens**.

This, for me, is the remaining problem with the 72-hour rule. If I
happen to commit a SecurePoll change during a hackathon in Europe just
as Tim leaves for the airport to go home, it's pretty much guaranteed
that he won't be able to look at my commit within 72 hours. Or maybe
I'm committing an UploadWizard change just after 5pm PDT on Friday,
and the next Monday is a federal holiday like the 4th of July. Or
maybe the one reviewer for a piece of code has just gone on vacation
for a week and we're all screwed.

So yes, before we implement this we need to 1) ensure that reviewers
spend enough time reviewing and 2) figure out what to do with
one-reviewer situations.

Roan Kattouw (Catrope)

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Chad
On Wed, Jun 1, 2011 at 11:23 AM, Roan Kattouw roan.katt...@gmail.com wrote:
 On Wed, Jun 1, 2011 at 1:49 AM, Happy-melon happy-me...@live.com wrote:
 By far the most likely outcome of this is that in the two months following
 its introduction, 95% of all commits are reverted, because the people who
 are supposed to be reviewing them don't spend any more time than usual
 reviewing them.  If I make a change to the preprocessor, HipHop, Sanitizer,
 SecurePoll, passwords, tokens, or any of a number of other things, I'm going
 to need Tim to review them.  I don't begrudge Tim the thousand-and-one other
 things he has to do besides review my code within 72 hours.  Does that mean
 that no one should make *any* changes to *any* of those areas?  More
 dangerously still, does that mean that **only people who can persuade Tim to
 review** be allowed to make changes to those areas?  I know what the answers
 to those questions are *supposed* to be, that's not the point.  The point is
 **what actually happens**.

 This, for me, is the remaining problem with the 72-hour rule. If I
 happen to commit a SecurePoll change during a hackathon in Europe just
 as Tim leaves for the airport to go home, it's pretty much guaranteed
 that he won't be able to look at my commit within 72 hours. Or maybe
 I'm committing an UploadWizard change just after 5pm PDT on Friday,
 and the next Monday is a federal holiday like the 4th of July. Or
 maybe the one reviewer for a piece of code has just gone on vacation
 for a week and we're all screwed.

 So yes, before we implement this we need to 1) ensure that reviewers
 spend enough time reviewing and 2) figure out what to do with
 one-reviewer situations.


I don't think revert in 72 hours if its unreviewed is a good idea. It
just discourages people from contributing to areas in which we only
have one reviewer looking at code.

I *do* think we should enforce a 48hr revert if broken rule. If you
can't be bothered to clean up your breakages in within 48 hours of
putting your original patch in, it must not have been very important.

-Chad

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Roan Kattouw
On Wed, Jun 1, 2011 at 5:28 PM, Chad innocentkil...@gmail.com wrote:
 I don't think revert in 72 hours if its unreviewed is a good idea. It
 just discourages people from contributing to areas in which we only
 have one reviewer looking at code.

I also don't really like it. But I do think we should be more liberal
about reverting things that won't be reviewed soon because they're
e.g. too large and should be branched or broken up, or whatever.

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.

+1. Serious breakage should be reverted on sight, however.

Roan Kattouw (Catrope)

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Max Semenik
On 01.06.2011, 7:59 Mark wrote:

 The Tiki community is a heavy user of SVN. While many open source
 communities have a send-a-patch-and-someone-else-will-commit
 approach, in Tiki, we encourage everyone to commit directly to the
 source code.  Think of it as applying the Wiki Way to software
 development. Over 220 people have done it so far and it works very well.

 http://dev.tiki.org/How+to+get+commit+access

 I don't know if this is feasible in this community - but wanted to
 put it out is as a possible direction.

Our  commit access approval is quite liberal already, however it's not
completely  instantaneous  -  people  still  need  to contribute a few
patches before being allowed to work on core, due to the importance of
security  in  MediaWiki  as  it's  being  used  on a top 5 website. We
already  have  315 commiters (a few of accounts are dupes though). The
problem   is  not  about  attracting  more  contributors,  it's  about
reviewing and deploying their code.

-- 
Best regards,
  Max Semenik ([[User:MaxSem]])


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Max Semenik
On 01.06.2011, 20:00 Roan wrote:

 On Wed, Jun 1, 2011 at 5:28 PM, Chad innocentkil...@gmail.com wrote:
 I don't think revert in 72 hours if its unreviewed is a good idea. It
 just discourages people from contributing to areas in which we only
 have one reviewer looking at code.

 I also don't really like it. But I do think we should be more liberal
 about reverting things that won't be reviewed soon because they're
 e.g. too large and should be branched or broken up, or whatever.

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.

 +1. Serious breakage should be reverted on sight, however.

+1.  Serious  should include breaking the tests though - otherwise
we'll  remain  with  our  current  situation when tests are broken
in multiple places and nobody knows who broke what:

[19:39:08] codurr Something broke.  See 
http://ci.tesla.usability.wikimedia.org/cruisecontrol/buildresults/mw.  
Possible culprits: aashrh/r89027 /r89028 /r89029 nbiabriket/r89035 
krenkli/r89036 eryed/r89037 /r89038 eixal/r89039 /r89040 /r89041 /r89043 
/r89044 /r89047 /r89049 /r89051 /r89061 /r89062 /r89063 /r89070 /r89071 /r89072 
yaor_mdn/r89074 /r89075 /r89076 osnenl/r89079 /r89082 /r89083 /r89084 /r89085 
/r89086 /r89087 eom-ylnphap/r89088 jedht/r89094 /r89099 /r89
[19:39:08] codurr /r89108 /r89110 /r89111 /r89112 /r89113 /r89114 /r89115 
/r89116 /r89117 /r89118 /r89119 iwkiunta/r89120 /r89122 /r89123 onraa/r89128 
/r89129 /r89134 /r89138 ^nmdoe/r89144 /r89145 /r89149 /r89150 algsinrtt/r89166 
/r89176 /r89179 /r89180 sxemma/r89181 /r89182 /r89186 ptolsaiedn/r89191 /r89197 
/r89204 /r89205 /r89206 /r89207 /r89208 /r89218 wadreoujdene/r89219 /r89223 
/r89224 rtemo/r89225 /r89226 /r89227 /r89228 /r89230 /r89241 oribn/r89243 
/r89244 /r89
[19:39:08] codurr kfoelokwrays/r89250 /r89251 /r89253 /r89254 
awnurotkaot/r89258 /r89260 rnabsedi/r89261 /r89262 /r89263

-- 
Best regards,
  Max Semenik ([[User:MaxSem]])


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Chad
That's because our phpunit setup is incredibly fragile. I'm trying to fix
it.

-Chad
On Jun 1, 2011 12:09 PM, Max Semenik maxsem.w...@gmail.com wrote:
 On 01.06.2011, 20:00 Roan wrote:

 On Wed, Jun 1, 2011 at 5:28 PM, Chad innocentkil...@gmail.com wrote:
 I don't think revert in 72 hours if its unreviewed is a good idea. It
 just discourages people from contributing to areas in which we only
 have one reviewer looking at code.

 I also don't really like it. But I do think we should be more liberal
 about reverting things that won't be reviewed soon because they're
 e.g. too large and should be branched or broken up, or whatever.

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.

 +1. Serious breakage should be reverted on sight, however.

 +1. Serious should include breaking the tests though - otherwise
 we'll remain with our current situation when tests are broken
 in multiple places and nobody knows who broke what:

 [19:39:08] codurr Something broke. See 
http://ci.tesla.usability.wikimedia.org/cruisecontrol/buildresults/mw.
Possible culprits: aashrh/r89027 /r89028 /r89029 nbiabriket/r89035
krenkli/r89036 eryed/r89037 /r89038 eixal/r89039 /r89040 /r89041 /r89043
/r89044 /r89047 /r89049 /r89051 /r89061 /r89062 /r89063 /r89070 /r89071
/r89072 yaor_mdn/r89074 /r89075 /r89076 osnenl/r89079 /r89082 /r89083
/r89084 /r89085 /r89086 /r89087 eom-ylnphap/r89088 jedht/r89094 /r89099 /r89
 [19:39:08] codurr /r89108 /r89110 /r89111 /r89112 /r89113 /r89114
/r89115 /r89116 /r89117 /r89118 /r89119 iwkiunta/r89120 /r89122 /r89123
onraa/r89128 /r89129 /r89134 /r89138 ^nmdoe/r89144 /r89145 /r89149 /r89150
algsinrtt/r89166 /r89176 /r89179 /r89180 sxemma/r89181 /r89182 /r89186
ptolsaiedn/r89191 /r89197 /r89204 /r89205 /r89206 /r89207 /r89208 /r89218
wadreoujdene/r89219 /r89223 /r89224 rtemo/r89225 /r89226 /r89227 /r89228
/r89230 /r89241 oribn/r89243 /r89244 /r89
 [19:39:08] codurr kfoelokwrays/r89250 /r89251 /r89253 /r89254
awnurotkaot/r89258 /r89260 rnabsedi/r89261 /r89262 /r89263

 --
 Best regards,
 Max Semenik ([[User:MaxSem]])


 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Rob Lanphier
On Wed, Jun 1, 2011 at 8:23 AM, Roan Kattouw roan.katt...@gmail.com wrote:
 This, for me, is the remaining problem with the 72-hour rule. If I
 happen to commit a SecurePoll change during a hackathon in Europe just
 as Tim leaves for the airport to go home, it's pretty much guaranteed
 that he won't be able to look at my commit within 72 hours. Or maybe
 I'm committing an UploadWizard change just after 5pm PDT on Friday,
 and the next Monday is a federal holiday like the 4th of July. Or
 maybe the one reviewer for a piece of code has just gone on vacation
 for a week and we're all screwed.

We could pick a different window, but I don't see how it can be much
longer if we're also pursuing much more frequent deployments.  If
we're deploying every week, and something hasn't been reviewed at
deploy time, the reviewer can either rush a review of code they may or
may not really understand, or revert.

I think using the word screwed here belies the fundamental social
problem we have with respect to reverts.  As Brion has pointed out
over and over, being reverted is not the end of the world.  It doesn't
mean this code must die, it means this code isn't ready for trunk
yet.  It still is in the repository and is available for comment and
debate, and recommitting the code can happen a week or two later.

The genesis of the 72-hour idea was our discussion about what is
stopping us from pre-commit review.  The set of us in the office
discussing this felt it was pretty much just a tools issue; from a
policy point of view, we think it makes sense.  Given that the 72-hour
rule is less severe than pre-commit review, do you believe that our
original premise is flawed (i.e. requiring pre-commit review is a bad
idea)?

Rob

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Brion Vibber
On Wed, Jun 1, 2011 at 8:23 AM, Roan Kattouw roan.katt...@gmail.com wrote:

 This, for me, is the remaining problem with the 72-hour rule. If I
 happen to commit a SecurePoll change during a hackathon in Europe just
 as Tim leaves for the airport to go home, it's pretty much guaranteed
 that he won't be able to look at my commit within 72 hours. Or maybe
 I'm committing an UploadWizard change just after 5pm PDT on Friday,
 and the next Monday is a federal holiday like the 4th of July. Or
 maybe the one reviewer for a piece of code has just gone on vacation
 for a week and we're all screwed.


I think rather than us being all screwed, this is a situation where we
*don't actually have to* commit that change to trunk right at that exact
time. Unless the change needs to be deployed immediately -- in which case
you really should have someone else looking it over to review it IMMEDIATELY
-- it can probably wait until reviewers are available.

And if it does get reverted before the reviewer gets to it -- what's wrong
with that? It'll get reviewed and go back in later.


Part of the reason we went so hog-wild with handing out commit access for a
long time is because we've never *been* as good as we want about following
up with patches submitting through the bug trackers and mailing lists;
sometimes things get reviewed and pushed through, but often they just get
forgotten. Letting people commit directly meant that things didn't get
forgotten -- they were right there in the code now -- with the caveat that
if there turned out to be problems, we would have to go through and take
them back out.

It's a trade-off we chose to make at the time, and it's a trade-off we can
revisit if we change the underlying conditions.

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Brion Vibber
On Wed, Jun 1, 2011 at 8:28 AM, Chad innocentkil...@gmail.com wrote:

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.


Officially speaking, since forever we have had an it's acceptable to revert
on sight if broken rule.

If you encounter something broken, correct responses include:
* revert it immediately to a known good state; send an explanation to the
author about what's wrong (usually a CR comment and reopening a 'fixed'
bugzilla entry)
* figure out the problem and fix it; send follow-up explanation to the
author (usually a CR comment and a Bugzilla comment if it's a followup on a
bug fix)
* take a stab at the problem and recommend a solution to someone else who
will fix it straight away; including a note on CR or Bugzilla summarizing
your IRC discussion is wise in case it ends up getting dropped
* tag it fixme and ask someone more familiar with the stuff than you to
handle it

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Andrew Garrett
On Thu, Jun 2, 2011 at 1:28 AM, Chad innocentkil...@gmail.com wrote:
 I don't think revert in 72 hours if its unreviewed is a good idea. It
 just discourages people from contributing to areas in which we only
 have one reviewer looking at code.

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.

I'm really not a fan of drop-dead deadlines in the one to two day
range in general. I occasionally have periods of about two or three
days when I don't have access to a computer (or time to use one).

I think that if we actually want pre-commit review (which I don't have
a problem with), we should have pre-commit review instead of excessive
reversion. Reverts make the revision log hard to follow, feel like a
slap in the face to many developers (especially new ones, who this
policy is supposed to be attracting!), and of course give us lots of
merge conflicts and what not.

I think it would combine with commits of code that's broken in the
first place to exacerbate the current situation where a single change
can have up to ten associated revisions where people fix little
things, revert, unrevert, and generally make things difficult to
review and follow.

-- 
Andrew Garrett
Wikimedia Foundation
agarr...@wikimedia.org

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Trevor Parscal
+1

I believe the way forward involves using pre-commit review, requiring test
coverage to pass review, and developers working in branches at all times.
SVN may be a pita when it comes to branches, but that's a solvable problem.

- Trevor

On Wed, Jun 1, 2011 at 10:52 AM, Andrew Garrett agarr...@wikimedia.orgwrote:

 On Thu, Jun 2, 2011 at 1:28 AM, Chad innocentkil...@gmail.com wrote:
  I don't think revert in 72 hours if its unreviewed is a good idea. It
  just discourages people from contributing to areas in which we only
  have one reviewer looking at code.
 
  I *do* think we should enforce a 48hr revert if broken rule. If you
  can't be bothered to clean up your breakages in within 48 hours of
  putting your original patch in, it must not have been very important.

 I'm really not a fan of drop-dead deadlines in the one to two day
 range in general. I occasionally have periods of about two or three
 days when I don't have access to a computer (or time to use one).

 I think that if we actually want pre-commit review (which I don't have
 a problem with), we should have pre-commit review instead of excessive
 reversion. Reverts make the revision log hard to follow, feel like a
 slap in the face to many developers (especially new ones, who this
 policy is supposed to be attracting!), and of course give us lots of
 merge conflicts and what not.

 I think it would combine with commits of code that's broken in the
 first place to exacerbate the current situation where a single change
 can have up to ten associated revisions where people fix little
 things, revert, unrevert, and generally make things difficult to
 review and follow.

 --
 Andrew Garrett
 Wikimedia Foundation
 agarr...@wikimedia.org

 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Thomas Gries
Dear friends,

please - can the discussion under this subject be continued in a forum ?

Tom

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Chad
On Wed, Jun 1, 2011 at 3:17 PM, Thomas Gries m...@tgries.de wrote:
 Dear friends,

 please - can the discussion under this subject be continued in a forum ?


What forum? I can't think of any place more suitable than this list.

-Chad

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Max Semenik
On 01.06.2011, 23:17 Thomas wrote:

 Dear friends,

 please - can the discussion under this subject be continued in a forum ?

What  forum?  wikitech-l is a list designed for discussions related to
MediaWiki  development  and  Wikimedia  technical  stuff. Exactly what
we're discussing right now.

-- 
Best regards,
  Max Semenik ([[User:MaxSem]])


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Aryeh Gregor
On Wed, Jun 1, 2011 at 12:38 PM, Rob Lanphier ro...@wikimedia.org wrote:
 The genesis of the 72-hour idea was our discussion about what is
 stopping us from pre-commit review.  The set of us in the office
 discussing this felt it was pretty much just a tools issue; from a
 policy point of view, we think it makes sense.  Given that the 72-hour
 rule is less severe than pre-commit review, do you believe that our
 original premise is flawed (i.e. requiring pre-commit review is a bad
 idea)?

The problem isn't reverting commits that are bad, it's reverting
commits solely because they haven't been reviewed.  In a pre-commit
review system, the equivalent to the proposed 72-hour rule would be
letting unreviewed code languish without comment.  Both of these are
bad things.

The point is, people's code should only be rejected with some specific
reason that either a) lets them fix it and resubmit, or b) tells them
definitively that it's not wanted and they shouldn't waste further
effort or hope on the project.  Whether you're using
review-then-commit or commit-then-review, one of the most demoralizing
things you can do to a volunteer's contributions is say nobody cares
enough to provide any feedback on your code, so we're just going to
reject it by default.

Of course, all this requires time spent reviewing.  It used to be that
we had enough time in practice, even though volunteers greatly
outnumbered paid staff.  Now we seem to have a comparable number of
paid staff and volunteers, so it seems clear that Wikimedia could find
enough time if it wanted.  But apparently Wikimedia's tech leadership
feels it's more important to work on projects Wikimedia has a specific
interest in, than to ensure that volunteer code is reviewed and
deployed speedily and reliably.  So the latter doesn't happen.

On Wed, Jun 1, 2011 at 2:01 PM, Trevor Parscal tpars...@wikimedia.org wrote:
 I believe the way forward involves using pre-commit review, requiring test
 coverage to pass review, and developers working in branches at all times.
 SVN may be a pita when it comes to branches, but that's a solvable problem.

So then what happens if volunteers' contributions aren't reviewed
promptly?  In commit-then-review, they sit in trunk for months, by
which point they're practically impossible to revert, so someone has
to review them no matter what.  In review-then-commit, they just never
get committed, so they bitrot and are never used.  The latter is
incomparably more damaging to volunteers' willingness to participate.

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Brion Vibber
On Wed, Jun 1, 2011 at 12:43 PM, Aryeh Gregor simetrical+wikil...@gmail.com
 wrote:
[snip]

 The point is, people's code should only be rejected with some specific
 reason that either a) lets them fix it and resubmit, or b) tells them
 definitively that it's not wanted and they shouldn't waste further
 effort or hope on the project.

[snip]

This isn't ready for core yet -- code looks a bit dense and we don't
understand some of what it's doing yet. Can you help explain why you coded
it this way and add some test cases?

It's usually better if you can do this at a pre-commit stage: when reviewing
a patch on bugzilla, when looking over a merge request from a branch, etc.
But it's ok to pull something back out of trunk to be reworked, too.

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Brion Vibber
On Wed, Jun 1, 2011 at 12:43 PM, Aryeh Gregor simetrical+wikil...@gmail.com
 wrote:

 So then what happens if volunteers' contributions aren't reviewed
 promptly?


Indeed, this is why we need to demonstrate that we can actually push code
through the system on a consistent basis... until we can, nobody seems
willing to trust pre-commit review.

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Aryeh Gregor
On Wed, Jun 1, 2011 at 4:06 PM, Brion Vibber br...@pobox.com wrote:
 This isn't ready for core yet -- code looks a bit dense and we don't
 understand some of what it's doing yet. Can you help explain why you coded
 it this way and add some test cases?

IMO, this is totally fine as a reason to reject a commit.  It gives
clear reasons why it's being rejected and suggests how to fix them.
Another good reason, which I've given in the past to at least one
thing I was asked to review on Bugzilla, is This is doing too many
things at once -- break it up into a bunch of smaller patches so I can
review them individually.  But just letting the patches languish with
no reason is really bad, and reverting them with no reason once they
were already committed is psychologically even worse (even though
practically it's similar).

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


[Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread bawolff
 The problem isn't reverting commits that are bad, it's reverting
 commits solely because they haven't been reviewed.  In a pre-commit
 review system, the equivalent to the proposed 72-hour rule would be
 letting unreviewed code languish without comment.  Both of these are
 bad things.

 The point is, people's code should only be rejected with some specific
 reason that either a) lets them fix it and resubmit, or b) tells them
 definitively that it's not wanted and they shouldn't waste further
 effort or hope on the project.  Whether you're using
 review-then-commit or commit-then-review, one of the most demoralizing
 things you can do to a volunteer's contributions is say nobody cares
 enough to provide any feedback on your code, so we're just going to
 reject it by default.

+1

As a volunteer person, I'm fine if code I commit is reverted based on
it sucking, being too complicated, being too ugly, etc provided there
is actually some objection to the code. However, I'd be rather
offended if it was reverted on the basis of no one got around to
looking at in the last 3 days, since that is something essentially out
of my control.

As it stands, trivial one line changes aren't even reviewed in 72 hours.

-bawolff

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Brion Vibber
On Wed, Jun 1, 2011 at 1:53 PM, bawolff bawolff...@gmail.com wrote:

 As a volunteer person, I'm fine if code I commit is reverted based on
 it sucking, being too complicated, being too ugly, etc provided there
 is actually some objection to the code. However, I'd be rather
 offended if it was reverted on the basis of no one got around to
 looking at in the last 3 days, since that is something essentially out
 of my control.


When someone looks at your commit within ~72 hours and reverts it because
nobody's yet managed to figure out whether it works or not and it needs more
research and investigation... what was the reason for the revert?

Because 'no one reviewed it'? Or because someone looked at it and decided it
needed more careful review than they could give yet?

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Sumana Harihareswara
On Wed, Jun 1, 2011 at 3:17 PM, Thomas Gries m...@tgries.de wrote:
 Dear friends,

 please - can the discussion under this subject be continued in a forum ?

 Tom

Tom, if you might feel more comfortable following the discussion via a
web interface, try

news://news.gmane.org/gmane.science.linguistics.wikipedia.technical

or

http://lists.wikimedia.org/pipermail/wikitech-l/2011-June/thread.html

-- 
Sumana Harihareswara
Volunteer Development Coordinator
Wikimedia Foundation

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread bawolff
On Wed, Jun 1, 2011 at 3:02 PM, Brion Vibber br...@pobox.com wrote:
 On Wed, Jun 1, 2011 at 1:53 PM, bawolff bawolff...@gmail.com wrote:

 As a volunteer person, I'm fine if code I commit is reverted based on
 it sucking, being too complicated, being too ugly, etc provided there
 is actually some objection to the code. However, I'd be rather
 offended if it was reverted on the basis of no one got around to
 looking at in the last 3 days, since that is something essentially out
 of my control.

 When someone looks at your commit within ~72 hours and reverts it because
 nobody's yet managed to figure out whether it works or not and it needs more
 research and investigation... what was the reason for the revert?

 Because 'no one reviewed it'? Or because someone looked at it and decided it
 needed more careful review than they could give yet?

 -- brion


That's fine. I'm only concerned with the possibility of no one looks
at the commit, and it gets summarily reverted (Which is what I thought
was being proposed).

--bawolff

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Platonides
Max Semenik wrote:
 I would wholeheartedly supoport the idea of making tests a mandatory
 accompaniment to code. One latest example: we made latest security releases
 without tests.

Actually, we have made security releases that *broke* tests.
(ie. tests got outdated)

 This is bad not only because bugs not tested for *will*
 eventually reappear, but also because in my experience the process of
 writing tests helps to discover more problems with code. If compared with
 manual tests, writing low-level unit tests allows to look at possible
 problems more methodicallly, uncovering more problems.

 (...)

The problem is that we don't have a proper architecture for testing 
everything.
For instance, I would have liked to add a test for 'stub color in 
contribution lists' when fixing it. But we have no tests able to check that.
Perhaps we could track it with Selenium or storing the html output 
files, but we would need a more advanced testing fake db.


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Brion Vibber
On Wed, Jun 1, 2011 at 4:41 PM, Happy-melon happy-me...@live.com wrote:

 +1.  Pre-commit-review, post-commit-lifetime, branching, testing, whatever;
 all of the suggestions I've seen so far are IMO doomed to fail because they
 do not fix the underlying problem that not enough experienced manhours are
 being dedicated to Code Review for the amount of work (not the 'number of
 commits', the amount of *energy* to make changes to code) in the system.  A
 pre-commit-review system doesn't reduce the amount of work needed to get a
 feature into deployment, it just changes the nature of the process.


This is one of the reasons I tend to advocate shorter
development/review/deployment cycles. By keeping the cycle short, we can
help build up regular habits: run through some reviews every couple days. Do
a deployment update *every* week. If you don't think your code will be
working within that time, either work on it outside of trunk or break it up
into pieces that won't interfere with other code.

With a long cycle, review gets pushed aside until it's no longer habit, and
gets lost.

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread K. Peachey
On Thu, Jun 2, 2011 at 2:28 AM, Chad innocentkil...@gmail.com wrote:
 That's because our phpunit setup is incredibly fragile. I'm trying to fix
 it.

 -Chad
Instead of the auto tests like we have now, could we some how (might
need another testing suite?) perhaps have some sort of commit hook
that tells the testing server a new commit has been entered to do a
test against it up to that point compared to the guessing what
commit between two points did it, although if there is multiple sets
of tests going due to the closeness of commits, they may all fail but
it would be easier to track back to the first one that failed.

On Thu, Jun 2, 2011 at 4:01 AM, Trevor Parscal tpars...@wikimedia.org wrote:
 I believe the way forward involves using pre-commit review, requiring test
 coverage to pass review, and developers working in branches at all times.
 SVN may be a pita when it comes to branches, but that's a solvable problem.

 - Trevor
Wouldn't working in branches just hide the mess and move it else
where?, the same problems would still arise and could potentially
increase workload (eg: if someone finds a bug and works on fixing it
whilst someone else has noticed the same thing and worked on it as
well but not checked to see if anyone else has).

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Michael Dale
On 06/01/2011 08:28 AM, Chad wrote:
 I don't think revert in 72 hours if its unreviewed is a good idea. It
 just discourages people from contributing to areas in which we only
 have one reviewer looking at code.

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.

 -Chad
I think a revert on sight, if broken is fair ... you can always re-add
it in after you fix it ... if its a 'works diffrently than expected'
type issue / not perfectly following coding conventions a 48hr window to
make progress ( during the work week ) sounds reasonable.

--michael

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Aryeh Gregor
On Wed, Jun 1, 2011 at 5:02 PM, Brion Vibber br...@pobox.com wrote:
 When someone looks at your commit within ~72 hours and reverts it because
 nobody's yet managed to figure out whether it works or not and it needs more
 research and investigation... what was the reason for the revert?

 Because 'no one reviewed it'? Or because someone looked at it and decided it
 needed more careful review than they could give yet?

Yet is the keyword here.  Currently the only guarantee anyone has
that their code will be reviewed at all is that it's in trunk, and
historically releases and Wikimedia deployments have always been based
on trunk, so someone's got to either review or revert it at some
point, and it's eventually easier to review than revert once enough
changes have accumulated on top of it.  If a 72-hour revert rule were
instituted with no additional policy changes, there's no reason to
believe any of the reverted commits would ever be reviewed.  And if it
is reviewed weeks or months later, you've got to hope it hasn't
bitrotted, which is a nonissue if it was on trunk the whole time.
Plus it gets testing, if it's on trunk, so the longer it's been there,
the more certain the reviewer can be that it doesn't cause serious
issues.

If the policy worked out to be 95% of volunteer commits get reviewed
within three days, and the rest get temporarily reverted but put on a
list where someone gets to them within a week or two -- that would be
fine.  Heck, if 95% of volunteer commits got reviewed in three days
and the rest got reverted never to see the light of day again, that
would probably be a big improvement over the status quo.  But
*currently*, what percentage of volunteer commits get reviewed within
three days?

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Erik Moeller
On Wed, Jun 1, 2011 at 4:50 PM, Brion Vibber br...@pobox.com wrote:
 This is one of the reasons I tend to advocate shorter
 development/review/deployment cycles. By keeping the cycle short, we can
 help build up regular habits: run through some reviews every couple days. Do
 a deployment update *every* week. If you don't think your code will be
 working within that time, either work on it outside of trunk or break it up
 into pieces that won't interfere with other code.

 With a long cycle, review gets pushed aside until it's no longer habit, and
 gets lost.

Right. And just to weigh in quickly on the resources issue -- the
review/deploy/release train is clearly not moving at the pace we want.
This does affect WMF staffers and contractors as well, but we know
that it's especially frustrating for volunteers and third party
committers. We kicked around the idea of a 20% rule for all funded
engineers (IMO not just senior staff) in Berlin and in the office
yesterday, and I think Roan mentioned it earlier in this thread: i.e.
ensuring that every WMF-funded engineer spends one day a week on
service work (code review, design/UX review, deployment, shell bugs,
software bugs, bug triaging, etc.).

An alternative model is to have rotating teams that do this work. I
personally prefer the 20% model because it gives more
consistency/predictability and less churn, but I'm curious what other
folks think, and I'm comfortable with us continuing this discussion
openly on this list.

Whether that would get us to a healthier balance remains to be seen,
but I think there's pretty broad agreement that adding more support to
the review/deployment/release process is a necessary precondition for
any other process changes like moving towards pre-commit review.

Clearly what's been said in this thread is true -- there are lots of
things that can be done to reduce our technical debt and make it
easier to accommodate and manage new changes, but without added
dedicated capacity, the train won't move at a speed that we're happy
with. We can't change that overnight (because we need to figure out
the right rhythm and the right processes together), but we will change
it.

Erik
-- 
Erik Möller
Deputy Director, Wikimedia Foundation

Support Free Knowledge: http://wikimediafoundation.org/wiki/Donate

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Russell N. Nelson - rnnelson
I've done release engineering before. It is my considered opinion that one 
person needs to be on point for each release. It's possible that that person 
could rotate in and out, but one person needs to be running through the 
checklist of things that need to be done.

From: wikitech-l-boun...@lists.wikimedia.org 
[wikitech-l-boun...@lists.wikimedia.org] on behalf of Erik Moeller 
[e...@wikimedia.org]

Whether that would get us to a healthier balance remains to be seen,
but I think there's pretty broad agreement that adding more support to
the review/deployment/release process is a necessary precondition for
any other process changes like moving towards pre-commit review.

Clearly what's been said in this thread is true -- there are lots of
things that can be done to reduce our technical debt and make it
easier to accommodate and manage new changes, but without added
dedicated capacity, the train won't move at a speed that we're happy
with. We can't change that overnight (because we need to figure out
the right rhythm and the right processes together), but we will change
it.

Erik
--
Erik Möller
Deputy Director, Wikimedia Foundation

Support Free Knowledge: http://wikimediafoundation.org/wiki/Donate

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-06-01 Thread Chad
On Wed, Jun 1, 2011 at 8:31 PM, Michael Dale md...@wikimedia.org wrote:
 On 06/01/2011 08:28 AM, Chad wrote:
 I don't think revert in 72 hours if its unreviewed is a good idea. It
 just discourages people from contributing to areas in which we only
 have one reviewer looking at code.

 I *do* think we should enforce a 48hr revert if broken rule. If you
 can't be bothered to clean up your breakages in within 48 hours of
 putting your original patch in, it must not have been very important.

 -Chad
 I think a revert on sight, if broken is fair ... you can always re-add
 it in after you fix it ... if its a 'works diffrently than expected'
 type issue / not perfectly following coding conventions a 48hr window to
 make progress ( during the work week ) sounds reasonable.


As long as we can agree that committing big things on a Friday is
bad, because you might leave trunk broken all weekend :)

-Chad

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


[Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Rob Lanphier
On Tue, May 31, 2011 at 10:35 AM, Neil Kandalgaonkar
ne...@wikimedia.org wrote:
 Are we all in deadlock or something? Are the users who can push waiting
 from some proposals/work from the rest of the community?

We had a hallway conversation about this just now (Neil, Trevor, Brion
and I, and then just Brion and I), which I think was pretty useful.
Here's where we went with it:

1.  We rehashed the pre-commit review proposal that Neil suggested a
few months ago, and agreed that pre-commit would be helpful in keeping
the backlog down
2.  Given our current tools/process, we agreed that insisting on
pre-commit review would be a pain in the butt.
3.  Brion and I further discussed review process, trying to come up
with a system that give us the benefits of pre-commit review, without
actually switching to pre-commit review

Here's where things I think got interesting.  Brion pointed out that
in ye olden days, he was much more aggressive about reverting things
he didn't understand.  I pointed out that, as we broaden the pool of
committers, I don't understand-based reversions lead to a lot of
ugliness, since very few people claim to have a broad understanding of
the system and therefore an expectation of understanding every change.
 Most reviewers, faced with a commit they don't understand, will leave
it for others to comment on.  There's been a lot of unnecessary drama
and churn over reversions because of misunderstandings about what a
reversion means.

So, there's a number of possible solutions to this problem.  These are
independent suggestions, but any of these might help:
1.  We say that a commit has some fixed window (e.g. 72 hours) to get
reviewed, or else it is subject to automatic reversion.  This will
motivate committers to make sure they have a reviewer lined up, and
make it clear that, if their code gets reverted, it's nothing
personal...it's just our process.
2.  We encourage committers to identify who will be reviewing their
code as part of their commit comment.  That way, we have an identified
person who has license to revert if they don't understand the code.

I coulda swore there are other ideas that came out of that
conversation, but alas, I wasn't taking notes.  Anyway, I'm sure
they'll come up in this thread.

Rob

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Russell N. Nelson - rnnelson
Robla writes:
1.  We say that a commit has some fixed window (e.g. 72 hours) to get
reviewed, or else it is subject to automatic reversion.  This will
motivate committers to make sure they have a reviewer lined up, and
make it clear that, if their code gets reverted, it's nothing
personal...it's just our process.

Worse than pre-commit review. What if you make a change, I see it, and make 
changes to my code using your changes. 72 hours later, they get reverted, which 
screws my code. Okay, so then nobody's going to compile anything, or use 
anything, if it has 72-hour code in it. The alternative, if they want the code 
badly enough, is to review it so it will stick. Well, that devolves to the same 
thing as pre-commit review.

And ... this only makes sense for core, or maybe for stable extensions. It 
doesn't make sense for experimental extensions where only one person is likely 
to understand or care what the code says.

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Trevor Parscal
The obvious problem with the 72 hour time limit is that it
imposes unnecessary time limits, adding lots of to the complexity, chaos and
stress - possibly a net-negative, but it's hard to say for sure.

That said, at least it's an actionable idea.

It's pretty clear to me that the inconvenience that's been avoided in this
area by shooting down ideas rather than just taking action and working out
the details as we go is equivalent to a meer fraction of the effort that's
been put forth in the form of demanding a perfect solution and generally
resisting change.

We should probably also not be setting the stakes so high, it's making the
cost of failure unnecessarily expensive. One project should change their
review and release strategy, and see if that can be worked out and fine
tuned. Then we can apply those lessons to the code base in general. This is
especially useful if a strategy is radically different than what we have
now.

- Trevor

On Tue, May 31, 2011 at 12:37 PM, Max Semenik maxsem.w...@gmail.com wrote:

 On 31.05.2011, 22:41 Rob wrote:

  So, there's a number of possible solutions to this problem.  These are
  independent suggestions, but any of these might help:
  1.  We say that a commit has some fixed window (e.g. 72 hours) to get
  reviewed, or else it is subject to automatic reversion.  This will
  motivate committers to make sure they have a reviewer lined up, and
  make it clear that, if their code gets reverted, it's nothing
  personal...it's just our process.
  2.  We encourage committers to identify who will be reviewing their
  code as part of their commit comment.  That way, we have an identified
  person who has license to revert if they don't understand the code.

 Social  problems are hard to fix using technical means. What will
 happen if someone approves a revision that later turns out to be
 defective, off with their head? OMG my commit will be wasted in 20
 minutes! Heeelponeone is not the best scenario for clear thinking.
 Time pressure might result in people reviewing stuff they're less
 familiar with, and reviews being done in a haste, so CR quality will
 suffer. Although I'm not a biggest fan of rushing towards DVCS, the
 distributed heavily-branched model where mainline is supported only
 through merges from committed-then-reviewed branches looks far more
 superior to me. This way, we will also be able to push stuff to WMF
 more often as there will be no unreviwewed or unfinished code in
 trunk.


 --
 Best regards,
  Max Semenik ([[User:MaxSem]])


 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Krinkle
Rob Lanphier wrote:

 On Tue, May 31, 2011 at 10:35 AM, Neil Kandalgaonkar
 ne...@wikimedia.org wrote:
 Are we all in deadlock or something?
snip

 independent suggestions, but any of these might help:
 1.  We say that a commit has some fixed window (e.g. 72 hours) to get
 reviewed, or else it is subject to automatic reversion.  This will
 motivate committers to make sure they have a reviewer lined up, and
 make it clear that, if their code gets reverted, it's nothing
 personal...it's just our process.
 2.  We encourage committers to identify who will be reviewing their
 code as part of their commit comment.  That way, we have an identified
 person who has license to revert if they don't understand the code.


Russell N. Nelson - rnnelson wrote:

 Worse than pre-commit review. What if you make a change, I see it,  
 and make changes to my code using your changes. 72 hours later, they  
 get reverted, which screws my code. Okay, so then nobody's going to  
 compile anything, or use anything, if it has 72-hour code in it. The  
 alternative, if they want the code badly enough, is to review it so  
 it will stick. Well, that devolves to the same thing as pre-commit  
 review.

 And ... this only makes sense for core, or maybe for stable  
 extensions. It doesn't make sense for experimental extensions where  
 only one person is likely to understand or care what the code says.

Perhaps a combination is possible, a bit like Brion did in the old days:

* A revision has to be reviewed within reasonble time (time upto it  
still allows reverting without pain, ie. hours or days. Not weeks! No  
more than, say, 3 days)
* The people who do code review, which should always start at the  
back, will see soon enough if there's a revision stuck in the process  
(ie. not being reviewed / passed to someone else) at that point  
someone has to go bold and revert it. Nothing personal: If nobody  
understood your commit, either splits it up and document it better –  
or poke whoever is capable of reviewing your code and make sure he or  
she does so in time. We are responsible as a team (nothign like  
primary school hand-in-hand pairs of buddies, but you get the idea..).
* A fixme should not maintain it's status for more than 24 hours. Not  
fixed within 24 hours ? Revert, no questions asked!
* Once a week, on Monday, we make sure anything from after Friday noon  
(remember, 3 days!) is unreviewed or fixme'ed. They shall be reverted  
or sorted out the same day (some gnomes may want to do this over the  
weekend).
* Tuesday anything last week should no longer be on our minds. We've  
moved on! Tomorrow (wednesday) is already the 3rd day of the week.

Aside from the in-svn proccess, some points I learned from other  
committers and just now via IRC:

* Unless the committer is subscribed to mediawiki-cvs or keeps a tight  
eye on Special:Code, one should have wiki-account linked in the  
CodeReview extension and e-mail notifications on (so you know about  
questions/comments., status changed and follow-ups as soon as possible)
* the todo tag (or soon-to-be-introduced status needsmore or  
incomplete)[1] does not mean in another life time.
* If you don't know where to start... 
http://etherpad.wikimedia.org/CodeReviewTracker


--
Krinkle

[1] https://bugzilla.wikimedia.org/28274
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Brion Vibber
On Tue, May 31, 2011 at 12:09 PM, Russell N. Nelson - rnnelson 
rnnel...@clarkson.edu wrote:

 Robla writes:
 1.  We say that a commit has some fixed window (e.g. 72 hours) to get
 reviewed, or else it is subject to automatic reversion.  This will
 motivate committers to make sure they have a reviewer lined up, and
 make it clear that, if their code gets reverted, it's nothing
 personal...it's just our process.

 Worse than pre-commit review. What if you make a change, I see it, and make
 changes to my code using your changes. 72 hours later, they get reverted,
 which screws my code.


For the same reason my position is that a minimum time before revert is
not desireable -- if anything is ever found to be problematic, the correct
thing is to remove it immediately.

Robla counters this with the observation that when there are multiple people
handling code review, simply being *uncertain* about whether something needs
a revert or not is better grounds for *passing it on* to someone else to
look at than to immediately revert.

This should usually mean a few minutes on IRC, however, not just a 72-hour
silence without feedback!


What really worries me though isn't the somebody else built a patch on this
within 72 hours, now it's slightly awkward to revert case but the other
people built 100 patches on this in the last 10 months, now it's effing
impossible to revert.


Ultimately, we need to remember what reverting a commit means:

** Reverting means we're playing it safe: we are taking a machine in unknown
condition out of the line of fire and replacing it with a machine in
known-good condition, so the unknown one can be reexamined safely in
isolation while the whole assembly line keeps moving. **

It's not a moral judgment against you when someone marks code as fixme or
reverts it; it's simple workplace safety.

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Brion Vibber
On Tue, May 31, 2011 at 12:37 PM, Max Semenik maxsem.w...@gmail.com wrote:

 On 31.05.2011, 22:41 Rob wrote:

  So, there's a number of possible solutions to this problem.  These are
  independent suggestions, but any of these might help:
  1.  We say that a commit has some fixed window (e.g. 72 hours) to get
  reviewed, or else it is subject to automatic reversion.  This will
  motivate committers to make sure they have a reviewer lined up, and
  make it clear that, if their code gets reverted, it's nothing
  personal...it's just our process.
  2.  We encourage committers to identify who will be reviewing their
  code as part of their commit comment.  That way, we have an identified
  person who has license to revert if they don't understand the code.

 Social  problems are hard to fix using technical means. What will
 happen if someone approves a revision that later turns out to be
 defective, off with their head?


This isn't a technical solution, but a social one to force us to make sure
that things that haven't been looked over GET looked at.

Consider it to already be our hypothetical model -- it's just not been
enforced as consistently as it's meant to. Bad code - fixed or reverted
ASAP. Unseen code - assumed bad code, so look at it.


 OMG my commit will be wasted in 20
 minutes! Heeelponeone is not the best scenario for clear thinking.
 Time pressure might result in people reviewing stuff they're less
 familiar with, and reviews being done in a haste, so CR quality will
 suffer.


I'd say better to do that continuously and confirm that things are being
reviewed *and* run on automated tests *and* run against humans on
actual-production-use beta servers *and* in actual production use within a
reasonable time frame, than to let review slide for 10 months and rush it
all right before a giant release.

That IMO is what really hurts code review -- removing it from the context of
code *creation*, and removing the iterative loop between writing, debugging,
testing, debugging, deploying, debugging, fixing, and debugging code.



 Although I'm not a biggest fan of rushing towards DVCS, the
 distributed heavily-branched model where mainline is supported only
 through merges from committed-then-reviewed branches looks far more
 superior to me. This way, we will also be able to push stuff to WMF
 more often as there will be no unreviwewed or unfinished code in
 trunk.


I tend to agree that a more active 'pull good fixes  features in from
feeder branches' model can be helpful, for instance in allowing individual
modules, extensions, etc to iterate faster in a shared-development
environment without forcing the changes to trunk/mainlines's production
deployment  release channels until they're ready.

But these need to be combined with really active, consistent management;
just like keeping the deployment  release branches clean, working, and up
to date consistently requires a lot of attention -- when attention gets
distracted, the conveyor belt falls apart and fixes  features stop reaching
the public until the next giant whole-release push, which turns into a
circus.

-- brion
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread MZMcBride
Brion Vibber wrote:
 Ultimately, we need to remember what reverting a commit means:
 
 ** Reverting means we're playing it safe: we are taking a machine in unknown
 condition out of the line of fire and replacing it with a machine in
 known-good condition, so the unknown one can be reexamined safely in
 isolation while the whole assembly line keeps moving. **
 
 It's not a moral judgment against you when someone marks code as fixme or
 reverts it; it's simple workplace safety.

Often wiki workflow follows code development workflow, but in this case,
code development workflow can take a lesson from the wiki:
http://en.wikipedia.org/wiki/Wikipedia:BOLD,_revert,_discuss_cycle. :-)

MZMcBride



___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Happy-melon

Russell N. Nelson - rnnelson rnnel...@clarkson.edu wrote in message 
news:777bc8a5a78cc048821dbfbf13a25d39208f1...@exch01.ad.clarkson.edu...
 Robla writes:
 1.  We say that a commit has some fixed window (e.g. 72 hours) to get
 reviewed, or else it is subject to automatic reversion.  This will
 motivate committers to make sure they have a reviewer lined up, and
 make it clear that, if their code gets reverted, it's nothing
 personal...it's just our process.

 Worse than pre-commit review. What if you make a change, I see it, and 
 make changes to my code using your changes. 72 hours later, they get 
 reverted, which screws my code. Okay, so then nobody's going to compile 
 anything, or use anything, if it has 72-hour code in it. The alternative, 
 if they want the code badly enough, is to review it so it will stick. 
 Well, that devolves to the same thing as pre-commit review.

 And ... this only makes sense for core, or maybe for stable extensions. It 
 doesn't make sense for experimental extensions where only one person is 
 likely to understand or care what the code says.

By far the most likely outcome of this is that in the two months following 
its introduction, 95% of all commits are reverted, because the people who 
are supposed to be reviewing them don't spend any more time than usual 
reviewing them.  If I make a change to the preprocessor, HipHop, Sanitizer, 
SecurePoll, passwords, tokens, or any of a number of other things, I'm going 
to need Tim to review them.  I don't begrudge Tim the thousand-and-one other 
things he has to do besides review my code within 72 hours.  Does that mean 
that no one should make *any* changes to *any* of those areas?  More 
dangerously still, does that mean that **only people who can persuade Tim to 
review** be allowed to make changes to those areas?  I know what the answers 
to those questions are *supposed* to be, that's not the point.  The point is 
**what actually happens**.

Every way of phrasing or describing the problem with MW CR can be boiled 
down to one simple equation: not enough qualified people are not spending 
enough time doing Code Review (until a mad rush before release) to match the 
amount of code being committed.  Any attempt at a solution which does not 
change that fundamental equation is doomed to failure.  There are at least 
six things that could be changed (enough people, qualified people, 
enough time, Code Review, match[ing], being committed); we almost 
certainly need to change more than one.  The most likely outcome of this 
particular suggestion is simply to radically reduce the amount of code being 
committed.  I'm not sure that that's the best way to deal with the problem.

--HM 



___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Chad
On Tue, May 31, 2011 at 7:49 PM, Happy-melon happy-me...@live.com wrote:
 Every way of phrasing or describing the problem with MW CR can be boiled
 down to one simple equation: not enough qualified people are not spending
 enough time doing Code Review (until a mad rush before release) to match the
 amount of code being committed.


Maybe people shouldn't commit untested code so often.

I'm not joking.

-Chad

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l


Re: [Wikitech-l] Code review process (was: Status of more regular code deployments)

2011-05-31 Thread Mark Dilley
The Tiki community is a heavy user of SVN. While many open source communities 
have a send-a-patch-and-someone-else-will-commit approach, in Tiki, we 
encourage everyone to commit directly to the source code.  Think of it as 
applying the Wiki Way to software development. Over 220 people have done it so 
far and it works very well.

http://dev.tiki.org/How+to+get+commit+access

I don't know if this is feasible in this community - but wanted to put it out 
is as a possible direction.

Best, Mark

On 31May2011, at 4:52 PM, Chad wrote:

 On Tue, May 31, 2011 at 7:49 PM, Happy-melon happy-me...@live.com wrote:
 Every way of phrasing or describing the problem with MW CR can be boiled
 down to one simple equation: not enough qualified people are not spending
 enough time doing Code Review (until a mad rush before release) to match the
 amount of code being committed.
 
 
 Maybe people shouldn't commit untested code so often.
 
 I'm not joking.
 
 -Chad
 
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l


___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l