If the model you're proposing is "almost isomorphic" to roll ups, then why
not just use roll ups?

On Wed, Jun 22, 2016, 09:58 Bobby Holley <bobbyhol...@gmail.com> wrote:

> I just chatted with Manish a little bit to sort out some details and
> misunderstandings, and I think we're much more on the same page now.
>
> A few high-level points worth emphasizing:
> * Making the Homu queue take longer would be bad and we should avoid that.
> I believe the proposal would actually significantly reduce landing latency.
> * The proposal does not involve hooking servo/servo up to mozilla-inbound
> and its associated churn. As long as gecko development uses the
> mozilla-inbound model, servo/servo would be linked to a much-more-stable
> "mozilla-servo" integration repo, which will have very few backouts and
> should never be closed modulo infra issues.
> * Updating the code in both repos "in lockstep" is central to the plan,
> because it prevents divergent forks.
> * The details of how/when tests are run involve a lot of tweakable
> parameters, and I am optimistic that we can adjust them to solve any pain
> points.
>
> In a bit more detail, there are basically 3 ways to manage CI:
> (1) The mozilla-inbound model (land possibly-untested stuff, run CI
> post-commit, perform backouts and close tree as necessary)
> (2) The bors/homu model (run the full suite on the precise commit that will
> be merged, and only merge it when green)
> (3) The relaxed bors/homu model: Run CI in parallel on pending commits. Any
> mergable commits with "recent enough" green CI runs can be merged. We do
> additional periodic post-merge CI runs on the master branch to spot the
> occasional intra-commit bustage.
>
> (1) obviously sucks and (2) doesn't scale well. The proposal is to do
> something like (3) for both projects [1]. This is the long-term plan for
> Gecko development anyway (i.e. mandatory pre-commit testing), and relaxing
> the strict homu/bors model would significantly increase responsiveness and
> throughput on the servo/servo side.
>
> The question of exactly which pre-commit tests should be run for which
> commits is a heuristic one that we can tweak. For example, we may decide
> that changes to components/style require pre-commit gecko test runs, but
> version bumps on leaf-y dependencies are safe enough to leave to the
> post-commit sanity checking. We can play with that as we go.
>
> [1] It's worth noting that (3) is _almost_ isomorphic to what Rust does
> (merging rollups of commits with green CI), which the primary difference
> being whether rollups are tested pre- or post-commit.
>
> On Wed, Jun 22, 2016 at 9:03 AM, Boris Zbarsky <bzbar...@mit.edu> wrote:
>
> > On 6/22/16 11:17 AM, Manish Goregaokar wrote:
> >
> >> We don't close down the tree except for CI fires
> >>
> >
> > Yes, I understand your model.  You don't have to explain it to me.
> >
> > I was just pointing out that for normal commits you prefer the model of
> > test-each-thing, but for style system you would prefer the model of
> > just-test-every-so-often.  I realize the reasons for that too, but I
> think
> > we have a different evaluation of the resulting costs.  In particular....
> >
> > If the tests fail for a PR, it is taken out of the queue until it is
> fixed
> >> and
> >> reapproved.
> >>
> >
> > My question is what happens when a PR stalls like this for months because
> > by the time it's fixed something else has broken.  I expect this to
> happen
> > every so often when the PR is the style system merge.
> >
> > m-c does not have this model, and I'd also like to prevent marrying our
> CI
> >> times to those of m-c, or being affected by m-c backouts.
> >>
> >
> > I understand and sympathize with that.
> >
> > That's why I like the sync model, it concentrates all of the conflict in
> >> one operation
> >>
> >
> > At the cost of possibly making that operation impossible to complete.
> >
> > instead of distributing it everywhere and making every PR that touches
> >> anything that affects style suffer. The syncing operation is also async
> >> (ha!) -- while being performed other Servo work can continue.
> >>
> >
> > Which is what may well make it impossible to complete the sync.
> >
> > Sending PRs which look like they need testing to gecko-try should catch
> >> most issues,
> >> the only remaining issues are when a PR (like a wrong refactor, or
> >> something) which wasn't sent through gecko-try breaks stylo, or when
> >> something on Gecko's vendor dir managed to land between the time the
> Servo
> >> PR was tested and landed. I postulate these two cases will be relatively
> >> rare, and these will be the only times the sync fails.
> >>
> >
> > Right, I think our fundamental disagreement is a matter of assumptions
> > about frequency.  I hope that you're right about these failures being
> rare,
> > but expect that you're wrong and worry about the failure modes if you
> > are....
> >
> > This is actually pretty close to the proposed model in the doc, but it
> >> gives a lot more leeway in when the sync should happen.
> >>
> >
> > Well, and assumes that reviewers are decent at evaluating the "may need
> > stylo testing" predicate.
> >
> > The proposed model is basically equivalent to this except syncs are
> >> mandatorily part of any PR
> >> that affects style, and can make the queue clog up. Here based on
> various
> >> factors you can choose not to sync (e.g. if the queue is already full;
> you
> >> can wait to trigger the sync until it empties, or if the PR probably
> >> doesn't need a sync).
> >>
> >
> > I agree that having such flexibility is not unreasonable.
> >
> > We can then by trial and error figure out the best
> >> policy for when to sync and when not to sync balancing the need for fast
> >> CI
> >> times and the need for things to not cause colossal merge conflicts.
> >>
> >
> > That seems fair.  Ideally we would end up with a "sync pretty much every
> > time" setup.
> >
> > Sure they can, but they should be less likely to :)
> >>
> >
> > That hasn't been my experience with refactorings at all!
> >
> > We will still have the full CI run on a sync so these will get caught,
> just
> >> not immediately.
> >>
> >
> > Right.  The question is how much piles up before a sync.  So more
> granular
> > syncs are better if they can be arranged.
> >
> >
> > -Boris
> >
> > _______________________________________________
> > dev-servo mailing list
> > dev-servo@lists.mozilla.org
> > https://lists.mozilla.org/listinfo/dev-servo
> >
> _______________________________________________
> dev-servo mailing list
> dev-servo@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-servo
>
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to