<html><body><p>Hi Morgan,<br><br>So lots of good points below.  However I am pulled in two directions on this topic.<br><br>For small projects (e.g. pycadf, heat-translator)   there are so few cores and the project is small in size that we as project cores permit two people from the same company as the code author to both +2 and then +A.   On these projects we simply could not make progress if we did not have this trusting model.<br><br>For the larger projects like Cinder, the trusting model has led to trouble in the past.   I have seen where if there was a piece of code where the following happens:
<ul><font size="4">* Employee from Company A writes code<br>* Other Employee from Company A reviews code<br>* Third Employee from Company A reviews and approves code.</font><br><br>Then what can happen is the community looks at that code as Company A's code not the community code.  Thus when there are bugs in that code they come back to company A and say "You put this code in all by yourself, its buggy and you need to maintain it all by yourself".    If I was working for company B that seems like a pretty natural reaction especially if it turns out the code requires lots of maintenance.  This was a real scenario and I was on the side (Company A) getting the spanking from folks from a very irritated company B.   <br></ul>So to avoid the perception of a single company owning a piece of code,  at IBM our policy for major projects like Cinder, Nova and currently many parts of Keystone (except pycadf) is to make sure we do not do the following for major OpenStack projects:
<ul><font size="4">* Employee from Company IBM writes code<br>* Other Employee from Company IBM reviews code<br>* Third Employee from Company IBM  reviews and approves code.</font><br></ul><font size="4">Again for certain small projects we relax this rule.  And certainly we could discuss relaxing this rule for larger portions of Keystone if needed.  But as a general policy we strive to stick to the distrust model as much as we can as the "perception of impropriety" that exists with the  trusting model can result in tangible headaches.</font><br><br><font size="4">Thanks,</font><br><br><font size="4">Brad</font><br><br><br>Brad Topol, Ph.D.<br>IBM Distinguished Engineer<br>OpenStack<br>(919) 543-0646<br>Internet:  btopol@us.ibm.com<br>Assistant: Kendra Witherspoon (919) 254-0680<br><br><img width="16" height="16" src="cid:1__=0ABBF595DFE73B7C8f9e8a93df938690918c0AB@" border="0" alt="Inactive hide details for Morgan Fainberg ---11/23/2015 12:08:09 PM---On Mon, Nov 23, 2015 at 8:51 AM, Dmitry Tantsur <dtantsur"><font color="#424282">Morgan Fainberg ---11/23/2015 12:08:09 PM---On Mon, Nov 23, 2015 at 8:51 AM, Dmitry Tantsur <dtantsur@redhat.com> wrote: > On 11/23/2015 05:42 P</font><br><br><font size="2" color="#5F5F5F">From:        </font><font size="2">Morgan Fainberg <morgan.fainberg@gmail.com></font><br><font size="2" color="#5F5F5F">To:        </font><font size="2">"OpenStack Development Mailing List (not for usage questions)" <openstack-dev@lists.openstack.org></font><br><font size="2" color="#5F5F5F">Date:        </font><font size="2">11/23/2015 12:08 PM</font><br><font size="2" color="#5F5F5F">Subject:        </font><font size="2">Re: [openstack-dev] [keystone][all] Move from active distrusting model to trusting model</font><br><hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br><br><br><br><br><font size="4">On Mon, Nov 23, 2015 at 8:51 AM, Dmitry Tantsur <</font><a href="mailto:dtantsur@redhat.com" target="_blank"><u><font size="4" color="#0000FF">dtantsur@redhat.com</font></u></a><font size="4">> wrote:</font><ul><font size="4">On 11/23/2015 05:42 PM, Morgan Fainberg wrote:</font><br><font size="4">Hi everyone,<br><br>This email is being written in the context of Keystone more than any<br>other project but I strongly believe that other projects could benefit<br>from a similar evaluation of the policy.<br><br>Most projects have a policy that prevents the following scenario (it is<br>a social policy not enforced by code):<br><br>* Employee from Company A writes code<br>* Other Employee from Company A reviews code<br>* Third Employee from Company A reviews and approves code.<br><br>This policy has a lot of history as to why it was implemented. I am not<br>going to dive into the depths of this history as that is the past and we<br>should be looking forward. This type of policy is an actively<br>distrustful policy. With exception of a few potentially bad actors<br>(again, not going to point anyone out here), most of the folks in the<br>community who have been given core status on a project are trusted to<br>make good decisions about code and code quality. I would hope that<br>any/all of the Cores would also standup to their management chain if<br>they were asked to "just push code through" if they didn't sincerely<br>think it was a positive addition to the code base.</font><br><font size="4"><br>Thanks for raising this. I always apply this policy in ironic not because I don't think we're trustful with my colleagues. The problem I'm trying to avoid is members of the same company having the same one-sided view on a problem.<br></font></ul><br><font size="4">A change of this policy doesn't preclude reaching out for more view points, and that should always be done. This is part of trusting the cores to know when this is valuable. :) Thanks for joining the convo here! </font><br><font size="4"> </font><ul><font size="4"><br>Now within Keystone, we have a fair amount of diversity of core<br>reviewers, but we each have our specialities and in some cases (notably<br>KeystoneAuth and even KeystoneClient) getting the required diversity of<br>reviews has significantly slowed/stagnated a number of reviews.</font></ul>
<ul><font size="4"><br>This is probably a fair use case for not applying this rule.<br></font><br><font size="4"><br>What I would like us to do is to move to a trustful policy. I can<br>confidently say that company affiliation means very little to me when I<br>was PTL and nominating someone for core. We should explore making a<br>change to a trustful model, and allow for cores (regardless of company<br>affiliation) review/approve code. I say this since we have clear steps<br>to correct any abuses of this policy change.<br><br>With all that said, here is the proposal I would like to set forth:<br><br>1. Code reviews still need 2x Core Reviewers (no change)<br>2. Code can be developed by a member of the same company as both core<br>reviewers (and approvers).<br>3. If the trust that is being given via this new policy is violated, the<br>code can [if needed], be reverted (we are using git here) and the actors<br>in question can lose core status (PTL discretion) and the policy can be<br>changed back to the "distrustful" model described above.<br><br>I hope that everyone weighs what it means within the community to start<br>moving to a trusting-of-our-peers model. I think this would be a net win<br>and I'm willing to bet that it will remove noticeable roadblocks [and<br>even make it easier to have an organization work towards stability fixes<br>when they have the resources dedicated to it].<br><br>Thanks for your time reading this.<br><br>Regards,<br>--Morgan<br>PTL Emeritus, Keystone</font><u><font size="4" color="#0000FF"><br></font></u><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank"></a></ul><tt>__________________________________________________________________________<br>OpenStack Development Mailing List (not for usage questions)<br>Unsubscribe: OpenStack-dev-request@lists.openstack.org?subject:unsubscribe<br></tt><tt><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></tt><tt><br></tt><br><br><BR>
</body></html>