Re: The future of commit access policy for core Firefox

Boris Zbarsky <[email protected]> Fri, 10 Mar 2017 11:05:27 -0500
Newsgroups gmane.comp.mozilla.devel.seamonkey
Message-ID <[email protected]>
On 3/9/17 4:53 PM, Mike Connor wrote:
>    - Compromising a single individual's credentials must not be sufficient
>    to land malicious code into our products.

This is a good goal in general.  Devil is in the details, of course...

>    - Two-factor auth must be a requirement for all users approving or
>    pushing a change.

This seems reasonable if we're willing to help contributors with this 
(e.g. hand out yubikeys as needed).

>    - The change that gets pushed must be the same change that was approved.

This sounds great at first glance, but I suspect is hellish in practice, 
as others have pointed out in the thread.  Given the need to rebase, 
this is completely impossible to achieve as stated.  We should figure 
out what the _real_ goal is here.  It's possible it's actually more than 
one goal.

>    - Broken commits must be rejected automatically as a part of the commit
>    process.

This looks good.

I think there are some critical goals missing.  Some of these may be 
something we're assuming everyone shares as a goal, but I'd rather make 
them explicit, because I think some of these are not in fact being 
considered in the specific changes being proposed.  I think some of 
these are more contentious than others....

- Pushing is possible.
- Pushing is possible for non-MoCo-employees.
- Pushing is not a serious time drain on the patch author.  The term
   "serious" needs definition.
- Pushing is not a serious time drain on the patch reviewer.  The
   term "serious" needs definition.
- There should be little incentive to do one push instead of
   multiple pushes for work that is conceptually separate.

I may be missing some, honestly.  I have tried to think about edge cases 
here, but having a failure of imagination.

We should have a clear concept of workflows that we consider "in scope" 
for this system in terms of evaluating the "not a time drain" goals.  I 
have explicitly not put any specific workflows in my list of critical 
goals, though I consider some workflows critical.  I mean workflows in 
terms of how work is organized into commits/pushes/bugs, not workflows 
like branch-based vs mq vs git vs hg vs whatever.  As a concrete 
example, pushing multiple things that depend on each other in practice 
but not conceptually should probably not be considered an edge case. 
That is, I'm talking about changes to the same code (hence need to be 
pushed in the right order) but belonging to separate bugs and needing to 
be tracked separately and whatnot. [1]

Basically, the current set of goals is more or less all defined from a 
security perspective, and seems to be treating usability as a non-goal. 
I think approaching the problem from that perspective will create an 
unusable system [2], and we need to have specific usability goals in 
mind as we design this.  The above are my suggestions for high-level 
usability goals, but I would like to see what suggestions others have.

I am explicitly not writing down specific proposals that I think would 
help achieve the "not a serious time drain" goals, but I do have some 
thoughts here and am happy to drill down into them if we agree on those 
goals in general.

-Boris

[1] The current mozreview+autoland workflow falls down badly on this, 
for example.  See https://bugzilla.mozilla.org/show_bug.cgi?id=1344432

[2] Citation needed, but I think this is a commonly understood thing 
about software security.  Examples like encrypted email, our old sync 
service, etc abound.  And those are examples where people _were_ 
considering usability!