On 4/3/2013 4:31 PM, Kartikaya Gupta wrote:
The developer workflow I'm proposing requires there be a tree that is allowed to have multiple heads. The "try" tree we have now satisfies this requirement, so I'm using that in my proposal, but we could just as easily use inbound or some other tree provided it accepts multiple heads. The process for landing a patch from the developer's point of view would look like this:

1. Take the latest green m-c change, commit your patch(es) on top of it, and push it to try. 2. If your try push is green, flag it for eventual merge to m-c and you're done. 3. If your try push is not green, update your patch(es) and go back to step 1.

The "eventual merge" step would be resolved by the sheriffs picking up green flagged heads from try and merging them into m-c. If the resulting m-c is broken, the tree is closed until fixed (see Scenario D below) but people can continue landing on try while this happens.

I think the relative merits of this approach is easily decidable by looking at two numbers:
1. How many of our patch landings would have non-trivial merge conflicts?
2. How much patch bustage is caused by interaction failures instead of patch author/reviewer negligence?

Note that your proposal makes both of these cases strictly worse: in the first case, you force the tree sheriffs (instead of developers) to spend more time resolving conflicts; in the second, sheriffs have to spend more time finding the cause of the bustage. Keep in mind that we have about three sheriffs and about a hundred developers--so it is better to optimize for sheriffs' time instead of developers' time (at the very least, developers represent better parallelization opportunities).

I don't know these numbers. I can estimate the first point by pointing out that the JS developers stopped doing JS development on a project branch because merges were too painful, which suggests that this would be a nontrivial amount. The second point I have no reference basis (most of my development is on comm-central), but if you presume that the patch was developed and reviewed in good faith for not breaking things, then it would suggest that this is not altogether rare.

For what it's worth, I do recall there being release engineering talk about some sort of "autoland" feature (which would automatically land any patch that passed try or something), and I recall (my memory may just be playing tricks on me) that it got to the prototyping phase but was shelved because the "merge" part was too difficult/impossible. A comment from anyone who worked on this would be helpful.

--
Joshua Cranmer
Thunderbird and DXR developer
Source code archæologist

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to