Re: [admin] Testing and GitHub login names

2013-04-23 Thread Arthur Barstow

Robin:

The only thing that we ask is that pull requests not be merged by
whoever made the request.


Art:


If a test facilitator submits tests (i.e. makes a PR) and everyone that
reviews them says they are OK, it seems like the facilitator should be
able to do the merge.


Robin:

Of course. 


OK, good (and presumably this means all of WebApps' test facilitators 
that will submit tests need appropriate permissions to run merges for at 
least their repo(s)).


-AB






Critic [was: Re: [admin] Testing and GitHub login names]

2013-04-23 Thread James Graham

On 04/23/2013 08:43 AM, Robin Berjon wrote:

On 22/04/2013 13:12 , James Graham wrote:

(as an aside, I note that critic does a much better job here. It allows
reviewers to mark when they have completed reviewing each file in each
commit. It also records exactly how each issue raised was resolved,
either by the commit that fixed it or by the person that decided to mark
the issue as resolved)


You may wish to introduce Critic a bit more than that; I'm pretty sure
that many of the bystanders in this conversation aren't conversant with it.


Right, I lost track of which list this conversation was on :)


"Opera Critic", commonly known as "Critic" is a code review system 
written by Jens Lindström to solve the major pain points that we had 
experienced with all other code review systems we had tried at Opera. 
Critic is written to work with git, and has the following workflow:


* Each set of changes to be reviewed is a single branch containing one 
or more commits
* A set of possible reviewers for each file changed is assigned based on 
preconfigured, path-based, filters
* The reviewer(s) review the commits, raising issues in general, or 
against specific lines, marking each file as "reviewed" once they have 
finished commenting on it (irrespective of whether it has issues).
* The submitter (or anyone else) pushes additional commits to the same 
branch in order to address the issues flagged by the reviewer.
* Critic automatically resolves issues where the new commits have 
altered code that previously had an issue
* The reviewer reviews the new commit, adding new issues or reopening 
old issues that were incorrectly marked as resolved.
* In case that clarification is needed, reviewer and author add 
additional comments to the various issues. If it turns out that the 
issue is not a problem, or that it was fixed in some way undetected by 
critic, it is manually marked as resolved.
* Finally all changes are marked as "reviewed" and there are 0 issues 
remaining so the code is automatically marked as "Accepted".
* Someone (typically the author, but it could also be the reviewer) 
proceeds to integrate the review branch with master in the normal way.


As you see this has a great deal in common with the github pull request 
process. Pull requests are branches, to which the author will push more 
commits in order to respond to issues. Compared to the github experience 
critic offers a number of significant advantages:


* Automatic assignment of reviewers to changes based on 
reviewer-supplied filters (so e.g. an XHR test facilitator could set 
themselves up to review only XHR-related tests without also getting 
email related to 2dcontext tests).
* The ability to review multiple commits squashed together into a single 
diff.
* Tracking of which files in which commits have already received review 
and which still require review.
* A record of which issues are still to be addressed and which have been 
resolved, and how.
* A significantly better UI for doing the actual review, notably 
including a side-by-side view of the before/after code (with changes 
highlighted of course) so that one can read the final code without 
having to mentally apply a diff.
* Less email (for some reason github think it's OK to send one email per 
comment on the review, whereas critic allows comments to be sent in 
batches).


Noticing the similarity with the github workflow, I have extended critic 
to allow it to integrate with github. In particular I added two features:


* Critic authentication against github using OAuth.
* Integration with pull requests so that new pull requests create new 
review requests, pushes to pull requests are mirrored in the 
corresponding review and closing pull requests closes the review.


I have set up a critic instance for the web-platform-tests repository at 
[1] (you have to sign in using your github credentials). So far my 
experience is that it makes it possible to review changes that are 
essentially unreviewable on github with a minimum of accidental 
complexity (e.g. [2]; yes that review still has a lot of work to be done).


There is a certain amount of controversy around using critic for 
web-platform-tests, with some people taking the position that we should 
exclusively use the undoubtedly weaker, but more familiar, github tools 
to make things easier for new contributors. I consider that review has 
so much intrinsic difficulty that we should explore all the options we 
have for making it easier, especially given the particular dynamics of 
test reviews. Testsuites are often developed internally and then 
submitted to a standards body at the last moment, so they are commonly 
large code dumps rather than small changes that can be reviewed in a 
single sitting. This is the situation in which the github tools become 
almost useless. Also, even in an ideal situation with many contributors, 
I would expect test submissions to follow something like the 80/20 rule 
(80% of tests from 20% of subm

Re: [admin] Testing and GitHub login names

2013-04-23 Thread Tobie Langel


On Tuesday, April 23, 2013 at 9:55 AM, James Graham wrote:

> On 04/23/2013 08:43 AM, Robin Berjon wrote:
> > On 22/04/2013 13:12 , James Graham wrote:
> > > On Mon, 22 Apr 2013, Arthur Barstow wrote:
> > > > > The only thing that we ask is that pull requests not be merged by
> > > > > whoever made the request.
> > > >  
> > > >  
> > > >  
> > > > Is this to prevent the `fox guarding the chicken coop`, so to speak?
> > > >  
> > > > If a test facilitator submits tests (i.e. makes a PR) and everyone
> > > > that reviews them says they are OK, it seems like the facilitator
> > > > should be able to do the merge.
> > >  
> > >  
> > >  
> > > Yes, my view is that Robin is trying to enforce the wrong condition
> > > here.
> >  
> > No, I'm just operating under different assumptions. As I said before, if
> > someone wants to review without having push/merge powers, it's perfectly
> > okay. I don't even think we need a convention for it (at this point). I
> > do however consider that this is an open project, so that whoever
> > reviews tests can be granted push/merge power.
> >  
> > Why? Because the alternative is this: you get an "accepted" comment from
> > someone on a PR. Either you trust that person, in which case she could
> > have merge powers; or you don't, in which case you have to review the
> > review to check that it's okay. Either way, we're better off making that
> > decision at the capability assignment level since it only happens once
> > per person.
>  
> FWIW I'm used to a situation in which the opposite approach is generally  
> taken; that is a reviewer is responsible for reviewing, but the  
> submitter is responsible for doing the final integration of their  
> changes.

Here, the "final integration" consists of clicking the "merge button" followed 
by clicking the "are you sure?" button. Hardly a place where you'll catch a 
mistake.

Generally, OS projects using the GH workflow tend to leave integration to the 
reviewers, as they're the only ones able to have access to merging content to 
the canonical repo.

I suggest we do the same and grant collaborator access to anyone who has had 
one contribution merged in the canonical repo OR is a WG member. This is based 
on the "Pull Request Hack" system[1] described by Felix Geisendörfer.

Here's a short FAQ around this proposal:

1. Who can review an merge content?
Repo collaborators.

2. Who can become a repo collaborator?
Anyone that fulfills either one of the below conditions:
a) be a member of any WG which has tests in the web-platform-tests repo, OR
b) have had at least one contribution to web-platform-tests be merged in the 
main repo.

3. How do you become a repo collaborator?
Right now, ask Robin or myself. We're hoping to get tooling to simplify this in 
the near future.



4. Who is responsible for checking the CLA has been signed?
The reviewer when merging a contribution (if the contributor is not a repo 
collaborator, no point if he/she is).
We'll have tooling to help with this.

--tobie
---
[1]: http://felixge.de/2013/03/11/the-pull-request-hack.html






Re: [admin] Testing and GitHub login names

2013-04-23 Thread Tobie Langel
X-posting to public-infra for those that have missed the conversation going on 
in WebApps on the subject of test review within the web-platform-tests 
repository on GitHub.

On Tuesday, April 23, 2013 at 9:55 AM, James Graham wrote:
> On 04/23/2013 08:43 AM, Robin Berjon wrote:
> On 22/04/2013 13:12 , James Graham wrote:On Mon, 22 Apr 2013, Arthur Barstow 
> wrote:The only thing that we ask is that pull requests not be merged by
> > > > > whoever made the request.
> > > >  
> > >  
> >  
>  
> Is this to prevent the `fox guarding the chicken coop`, so to speak?
> > > >  
> If a test facilitator submits tests (i.e. makes a PR) and everyonethat 
> reviews them says they are OK, it seems like the facilitator
> > > > should be able to do the merge.
> > >  
> > >  
> Yes, my view is that Robin is trying to enforce the wrong condition
> > > here.
> >  
> >  
> No, I'm just operating under different assumptions. As I said before, 
> ifsomeone wants to review without having push/merge powers, it's 
> perfectlyokay. I don't even think we need a convention for it (at this 
> point). Ido however consider that this is an open project, so that 
> whoeverreviews tests can be granted push/merge power.
> >  
> Why? Because the alternative is this: you get an "accepted" comment 
> fromsomeone on a PR. Either you trust that person, in which case she 
> couldhave merge powers; or you don't, in which case you have to review 
> thereview to check that it's okay. Either way, we're better off making 
> thatdecision at the capability assignment level since it only happens once
> > per person.
>  
>  
> FWIW I'm used to a situation in which the opposite approach is generally
> taken; that is a reviewer is responsible for reviewing, but the
> submitter is responsible for doing the final integration of their
> changes.Here, the "final integration" consists of clicking the "merge button" 
> followed by clicking the "are you sure?" button. Hardly a place where you'll 
> catch a mistake.

Generally, OS projects using the GH workflow tend to leave integration to the 
reviewers, as they're the only ones able to have access to merging content to 
the canonical repo.

I suggest we do the same and grant collaborator access to anyone who has had 
one contribution merged in the canonical repo OR is a WG member. This is based 
on the "Pull Request Hack" system[1] described by Felix Geisendörfer.

Here's a short FAQ around this proposal:

1. Who can review an merge content?
Repo collaborators.

2. Who can become a repo collaborator?
Anyone that fulfills either one of the below conditions:
a) be a member of any WG which has tests in the web-platform-tests repo, OR
b) have had at least one contribution to web-platform-tests be merged in the 
main repo.

3. How do you become a repo collaborator?
Right now, ask Robin or myself. We're hoping to get tooling to simplify this in 
the near future.

4. Who is responsible for checking the CLA has been signed?
The reviewer when merging a contribution (if the contributor is not a repo 
collaborator, no point if he/she is).
We'll have tooling to help with this.

--tobie
---
[1]: http://felixge.de/2013/03/11/the-pull-request-hack.html  





Re: [admin] Testing and GitHub login names

2013-04-23 Thread James Graham

On 04/23/2013 08:43 AM, Robin Berjon wrote:

On 22/04/2013 13:12 , James Graham wrote:

On Mon, 22 Apr 2013, Arthur Barstow wrote:

The only thing that we ask is that pull requests not be merged by
whoever made the request.


Is this to prevent the `fox guarding the chicken coop`, so to speak?

If a test facilitator submits tests (i.e. makes a PR) and everyone
that reviews them says they are OK, it seems like the facilitator
should be able to do the merge.


Yes, my view is that Robin is trying to enforce the wrong condition
here.


No, I'm just operating under different assumptions. As I said before, if
someone wants to review without having push/merge powers, it's perfectly
okay. I don't even think we need a convention for it (at this point). I
do however consider that this is an open project, so that whoever
reviews tests can be granted push/merge power.

Why? Because the alternative is this: you get an "accepted" comment from
someone on a PR. Either you trust that person, in which case she could
have merge powers; or you don't, in which case you have to review the
review to check that it's okay. Either way, we're better off making that
decision at the capability assignment level since it only happens once
per person.


FWIW I'm used to a situation in which the opposite approach is generally 
taken; that is a reviewer is responsible for reviewing, but the 
submitter is responsible for doing the final integration of their 
changes. This has several advantages; it is not uncommon for code to go 
through review only for the submitter themselves to realise that there 
was an uncaught mistake or a piece missing. This prevents the overhead 
of a second review/test cycle just to fixup such an error. It also means 
that the submitter is very clear about what has been integrated and what 
has not.



Indeed, there are currently 41 open pull requests and that number is not
decreasing. Getting more help with the reviewing is essential. But
that's a Hard Problem because reviewing is both difficult and boring.


I would qualify that statement. If you're already pretty good with web
standards and you wish to improve your understanding to top levels (and
gain respect from your peers), this is actually a really good thing to
work on. Or if you're implementing, it's likely a little bit less work
to review than to write from scratch (and it can make you aware of
corner cases or problems you hadn't thought of). Put differently, I
think it can be a lot less boring if you're getting something out of it.


Oh yeah, there are theoretically good reasons that people might want to 
spend time on doing test review. But as yet that doesn't seem to be 
enough to get people actually doing it; so far there have been a handful 
of people reviewing tests (I count 6 in total). Clearly we need to do 
something better here.




Re: [admin] Testing and GitHub login names

2013-04-22 Thread Robin Berjon

On 22/04/2013 13:12 , James Graham wrote:

On Mon, 22 Apr 2013, Arthur Barstow wrote:

The only thing that we ask is that pull requests not be merged by
whoever made the request.


Is this to prevent the `fox guarding the chicken coop`, so to speak?

If a test facilitator submits tests (i.e. makes a PR) and everyone
that reviews them says they are OK, it seems like the facilitator
should be able to do the merge.


Yes, my view is that Robin is trying to enforce the wrong condition
here.


No, I'm just operating under different assumptions. As I said before, if 
someone wants to review without having push/merge powers, it's perfectly 
okay. I don't even think we need a convention for it (at this point). I 
do however consider that this is an open project, so that whoever 
reviews tests can be granted push/merge power.


Why? Because the alternative is this: you get an "accepted" comment from 
someone on a PR. Either you trust that person, in which case she could 
have merge powers; or you don't, in which case you have to review the 
review to check that it's okay. Either way, we're better off making that 
decision at the capability assignment level since it only happens once 
per person.



The problem isn't with people merging their own changes; it's with
unreviewed changes being merged.


Yup.


(as an aside, I note that critic does a much better job here. It allows
reviewers to mark when they have completed reviewing each file in each
commit. It also records exactly how each issue raised was resolved,
either by the commit that fixed it or by the person that decided to mark
the issue as resolved)


You may wish to introduce Critic a bit more than that; I'm pretty sure 
that many of the bystanders in this conversation aren't conversant with it.



Indeed, there are currently 41 open pull requests and that number is not
decreasing. Getting more help with the reviewing is essential. But
that's a Hard Problem because reviewing is both difficult and boring.


I would qualify that statement. If you're already pretty good with web 
standards and you wish to improve your understanding to top levels (and 
gain respect from your peers), this is actually a really good thing to 
work on. Or if you're implementing, it's likely a little bit less work 
to review than to write from scratch (and it can make you aware of 
corner cases or problems you hadn't thought of). Put differently, I 
think it can be a lot less boring if you're getting something out of it.


--
Robin Berjon - http://berjon.com/ - @robinberjon



Re: [admin] Testing and GitHub login names

2013-04-22 Thread Robin Berjon

On 22/04/2013 12:44 , Arthur Barstow wrote:

The only thing that we ask is that pull requests not be merged by
whoever made the request.


Is this to prevent the `fox guarding the chicken coop`, so to speak?


The way you put it ascribes malice, whereas we operate on the assumption 
that people are honest and trustworthy. This is different from the 
previous rules whereby you couldn't review tests from someone working in 
the same company as yourself. I'm pretty sure that people here are 
indeed honest, and at any rate if they aren't the cost in lost 
credibility along with the quasi-certainty of being caught when another 
vendor notices a problem with the tests ought to make them behave as if 
they were :)


What we're trying to prevent is more "every terribly sucks at noticing 
their own typos".



If a test facilitator submits tests (i.e. makes a PR) and everyone that
reviews them says they are OK, it seems like the facilitator should be
able to do the merge.


Of course. If you submit a PR with tests and someone who doesn't happen 
to have push powers has okayed them, then you should just merge them 
with a comment to the effect that such and such has found them to be 
good. The point is to get some eyeballs that aren't the author's to look 
at the tests before they go in; whatever process makes that happen is 
good so long as it does not involve bureaucracy.


--
Robin Berjon - http://berjon.com/ - @robinberjon



Re: [admin] Testing and GitHub login names

2013-04-22 Thread James Graham


On Mon, 22 Apr 2013, Arthur Barstow wrote:

The only thing that we ask is that pull requests not be merged by whoever 
made the request. 


Is this to prevent the `fox guarding the chicken coop`, so to speak?

If a test facilitator submits tests (i.e. makes a PR) and everyone that 
reviews them says they are OK, it seems like the facilitator should be able 
to do the merge.


Yes, my view is that Robin is trying to enforce the wrong condition here. 
The problem isn't with people merging their own changes; it's with 
unreviewed changes being merged. Unfortunately github doesn't naturally 
provide any way to track progress of a review and therefore there isn't 
any way to tell that review is complete.


Just to signal the end of the review we could adopt some convention like 
leaving a comment "Accepted" to indicate that the reviewer believes that 
all commits have been fully reviewed and there are no further issues to be 
resolved.


(as an aside, I note that critic does a much better job here. It allows 
reviewers to mark when they have completed reviewing each file in each 
commit. It also records exactly how each issue raised was resolved, either 
by the commit that fixed it or by the person that decided to mark the 
issue as resolved)



So anyone with a GitHub account is already 100% set up to contribute.

If you *do* wish to help with the reviewing and organisation effort, you're 
more than welcome to and I'll be happy to add you. I just wanted to make 
sure that people realise there's zero overhead for regular contributions.


Indeed, there are currently 41 open pull requests and that number is not 
decreasing. Getting more help with the reviewing is essential. But that's 
a Hard Problem because reviewing is both difficult and boring.




Re: [admin] Testing and GitHub login names

2013-04-22 Thread Arthur Barstow


On 4/22/13 2:29 PM, ext Robin Berjon wrote:

On 19/04/2013 06:15 , Arthur Barstow wrote:

Test Facilitators, Editors, All,

If you intend to continue to participate in WebApps' testing effort or
you intend to begin to participate, please send your GitHub login name
to Robin (ro...@w3.org) so he can make sure you have appropriate access
to WebApps' test directories.


I would like to point out an important detail here: unless you want to 
review tests or to participate in the general shepherding of the test 
suite, you don't need to send me your GitHub login.


More specifically, if you only plan to contribute tests, you don't 
need to send me anything: you already can.


The way things works for contributors (irrespective of whether they 
have push access or not) is this: all contributions are made through 
pull requests. That's how we organise code review. 


Yes, thanks for this clarification.

The only thing that we ask is that pull requests not be merged by 
whoever made the request. 


Is this to prevent the `fox guarding the chicken coop`, so to speak?

If a test facilitator submits tests (i.e. makes a PR) and everyone that 
reviews them says they are OK, it seems like the facilitator should be 
able to do the merge.


(My apologies if I still don't quite understand all of the work flow here.)



So anyone with a GitHub account is already 100% set up to contribute.

If you *do* wish to help with the reviewing and organisation effort, 
you're more than welcome to and I'll be happy to add you. I just 
wanted to make sure that people realise there's zero overhead for 
regular contributions.


Excellent.

-AB






Re: [admin] Testing and GitHub login names

2013-04-22 Thread Robin Berjon

On 19/04/2013 06:15 , Arthur Barstow wrote:

Test Facilitators, Editors, All,

If you intend to continue to participate in WebApps' testing effort or
you intend to begin to participate, please send your GitHub login name
to Robin (ro...@w3.org) so he can make sure you have appropriate access
to WebApps' test directories.


I would like to point out an important detail here: unless you want to 
review tests or to participate in the general shepherding of the test 
suite, you don't need to send me your GitHub login.


More specifically, if you only plan to contribute tests, you don't need 
to send me anything: you already can.


The way things works for contributors (irrespective of whether they have 
push access or not) is this: all contributions are made through pull 
requests. That's how we organise code review. The only thing that we ask 
is that pull requests not be merged by whoever made the request. So 
anyone with a GitHub account is already 100% set up to contribute.


If you *do* wish to help with the reviewing and organisation effort, 
you're more than welcome to and I'll be happy to add you. I just wanted 
to make sure that people realise there's zero overhead for regular 
contributions.


--
Robin Berjon - http://berjon.com/ - @robinberjon



[admin] Testing and GitHub login names

2013-04-19 Thread Arthur Barstow

Test Facilitators, Editors, All,

If you intend to continue to participate in WebApps' testing effort or 
you intend to begin to participate, please send your GitHub login name 
to Robin (ro...@w3.org) so he can make sure you have appropriate access 
to WebApps' test directories.


-Thanks, AB