Hi Glyph,

That is great news. I already helped with Braid and would be interested in 
contributing some work in this area.

Cheers,
Jonathan

On Jun 3, 2013, at 16:59, Glyph <gl...@twistedmatrix.com> wrote:

> Hi Twisted developers,
> 
> This weekend I had a discussion with many Twisted developers, both local to 
> and visiting San Francisco.  The topic came up of how to get more long-term 
> contributors to participate more regularly in the project - particularly, 
> doing code reviews, but also, developing and contributing to complex fixes 
> and features that new contributors might not be able to tackle.
> 
> One suggestion that almost everybody made immediately was: we should use 
> Github for code reviews.
> 
> In the past, I've heard this suggestion given mainly as a way to contribute 
> more code, which does not appeal to me, since we are already swamped 
> reviewing all the code that is currently being contributed.
> 
> This time, however, it's been pitched as a way to get people to do more 
> reviews, which I'm keenly interested in.  Why would people do more reviews on 
> Github?  In a nutshell, it's a lot less work.  Here are some reasons why:
> 
>       • Instead of having to run 'force-builds' on the command line, or load 
> a buildbot status page, Github has a way for a build system to report build 
> success automatically, so you can see immediately within a pull request if 
> the changes that it proposes are "good to merge".  You can see this at work 
> with Travis here: <https://github.com/twisted/klein/pull/11>.  Originally I 
> thought that this was a Travis-CI feature, but have since learned that this 
> is apparently easy - trivial even - to hook up to Buildbot, since it's a 
> simple HTTP API to invoke when a build completes, and there is even some 
> existing buildbot infrastructure (deployed by Django, among others) to 
> automate it.
>       • Instead of having to describe each patch location so that you can 
> comment on it in a single message, if you want to put a comment on a 
> particular part of a diff in a Github pull request, you can just click on it 
> and start typing.
>       • In addition to the diff, it's reasonably easy to see the code in 
> context on the web, which is faster than getting it into one's local 
> development environment.
>       • If a review is successful, instead of having to have a local 
> development environment, a committer can just hit the "approve" button and 
> it's landed immediately.
>       • Instead of having to read through all history ever to see what's 
> still relevant, a pull request will hide comments that address outdated 
> diffs, allowing the change author to easily see what remains.
> 
> These advantages are not comprehensive, but they're the more significant ones 
> I remember from this discussion.
> 
> A prerequisite for using Github for code reviews would be using Git rather 
> than Subversion.  Luckily there's not much work to do in this area, thanks to 
> Tom's excellent work on the Git import and automatic Github mirror.  As a 
> bonus, by using Git instead of Subversion, we can start properly recording 
> merge metadata.
> 
> In this discussion, Alex Gaynor pointed out that Django has a hybrid workflow 
> where they still use Trac for bug tracking, and Github for code review.  We 
> would therefore not need to come up with a way to migrate all of our tickets 
> to Github issues (which seems, oddly, to be fairly unpopular even among those 
> who like github a lot).
> 
> What would need to happen in order for this to take place?
> 
>       • We'd need some consensus (hence this message).
>       • We'd need to update the release process 
> <http://twistedmatrix.com/trac/wiki/ReleaseProcess> and our development 
> documentation 
> <http://twistedmatrix.com/trac/wiki/BasicGuideToContributingCode> to refer to 
> the relevant Git commands rather than Subversion commands.
>       • We'd need a redirect from <http://twistedmatrix.com/trac/browser/> 
> and <http://twistedmatrix.com/trac/changeset/> that would point at 
> <https://github.com/twisted/twisted> and 
> <https://github.com/twisted/twisted/commits/> respectively.
>       • We'd need a Github web hook that could poke Buildbot to kick off 
> commits.
>       • We'd need Buildbot integration to update Github pull requests with 
> build results when builds complete.
>       • We'd need someone to install git rather than bzr on all the 
> buildbots, and update the configuration of the builders to get the code from 
> a git rather than Subversion URL.
>       • Someone will need to convert every open ticket in review to a pull 
> request.
> 
> I do anticipate some objections.
> 
> One objection is that each of the above tasks is going to take some work.
> 
> I am fairly confident that some of the people who have educated me here will 
> step forward to volunteer to do it.  Please reply to this message if you'd 
> like to volunteer, saying what you'd like to volunteer to do.  If not, then I 
> guess that objection stands :-).
> 
> Another is that this might not be worth that investment of effort.  This is 
> why it was nice to have Alex contributing to the discussion: Django did 
> basically this very change (right down to the "Trac for tickets / Github for 
> pull requests" distinction), at a much higher scale than we have, and as he 
> described it the change was *well* worth it.
> 
> Another objection is that Github is proprietary software, and an 
> externally-maintained service that we'd be depending upon.
> 
> One solution to the "proprietary software" thing is the availability of the 
> MIT-licensed <http://gitlab.org>.  It's a largely feature-complete clone of 
> Github; if, for some reason, we need to migrate away from Github in a hurry, 
> it will be relatively painless to set up Gitlab instead, and the fact that 
> Git is a DVCS means every contributor will serve as a backup.  The main 
> reason I would not suggest just deploying it is that it creates another 
> sticky infrastructure-management problem, and while Braid is great, I'd 
> prefer to avoid creating more work in that area.  Github also has APIs for 
> literally all of their features, so we can create a backup script.
> 
> (Also worth noting: Gitlab is an open-source competitor to Github, but they 
> still trust Github enough to <https://github.com/gitlabhq/> host their own 
> development there.)
> 
> Finally, my own minor concern: Github has no notion of a "code review" as a 
> unit of work.  A pull request is just "open" until it is "closed".  Closing 
> pull requests to request changes would be jarring to the cultural norms 
> associated with Github's UI.  All the github users I've spoken with, even 
> those who follow processes which are effectively identical to Twisted's, have 
> assured me that this is not really an issue.  A code review is "accepted" 
> when you merge it; it's "rejected" if the pull request is still open but has 
> some comments on it.  This will make porting over 
> <http://twistedmatrix.com/highscores/> a bit challenging, but I think it 
> would be worth letting that break for the time being.
> 
> -glyph
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python@twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to