Hooray! We're on github now. Next: there's the question of how to deal with
pull requests?
It occurs to me that what we really need from our code review system is mainly
one thing: the review queue: a single place for reviewers to look to find
things that need to be reviewed. This is important because proposed changes
need to be responded to in a timely manner, so that the code in them doesn't
get stale, and so that contributors don't get frustrated. We have limited
resources for doing so, of course, so sometimes we fall short of this
objective, but the point is we need to apply our limited resources to it.
The operations on the queue are:
Proposing a change should put it into the queue.
Accepting a change should remove it from the queue.
Reviewing a change should remove it from the queue.
Responding to review feedback should re-add it to the queue.
A reviewer should be able to examine just the things in the queue so they can
quickly grab the next one, without seeing noise.
Our current workflow maps this into Trac via the following:
Proposing: add the "review" keyword.
Accepting: remove the "review" keyword, merge.
Reviewing: removing the "review" keyword, reassign
Responding: add the "review" keyword again
Viewing: https://twistedmatrix.com/trac/report/25
It is therefore tempting to map it into GitHub via labels and webhooks and bot
workflows. However, I think a better mapping would be this:
Proposing: Just open a pull request. Any open pull request should be treated
as part of the queue.
Accepting: A committer pushes the big green button; this
Reviewing: This is the potentially slightly odd part. I believe a review that
doesn't result in acceptance should close the PR. We need to be careful to
always include some text that explains that closing a PR does not mean that the
change is rejected, just that the submitter must re-submit. Initially this
would just mean opening a new PR, but Mark Williams is working on a bot to
re-open pull requests when a submitter posts a "please review" comment:
https://github.com/markrwilliams/txghbot
Responding: A submitter can open a new PR, or, once we start running txghbot,
reopen their closed PR.
Viewing:
https://github.com/twisted/twisted/pulls?utf8=✓&q=is%3Apr+is%3Aopen+-status%3Afailed
The one thing that this workflow is missing from trac is a convenient way for
committers, having eyeballed a patch for any obvious malware, to send it to the
buildbots.
We could also potentially just replace our buildbot build farm with a
combination of appveyor and travis-ci; this would remove FreeBSD from our list
of supported platforms, as well as eliminating a diversity of kernel
integrations. However, for the stuff that doesn't work in containers (mostly
inotify) we could run one builder on non-container-based infrastructure, and
for everything else (integrating with different system toolchains) we can test
using Docker: https://docs.travis-ci.com/user/docker/. I am very much on the
fence about this, since I don't want to move backwards in terms of our test
coverage, but this would accelerate the contribution process so much that it's
probably worth discussing.
10 years ago or so, we would routinely discover kernel bugs in our integration
test harness and they would be different on different platforms. But today's
platform realities are considerably less harsh, since there are a lot more
entities in the ecosystem that have taken responsibility for testing that layer
of the stack; I couldn't find anything since 2008 or so where we really saw a
difference between Fedora and Ubuntu at the kernel level, for example.
Thoughts?
-glyph
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python