Coordinating rollups across two repos will be a pain. The proposed
automation sounds better to me.

-Manish Goregaokar

On Thu, Jun 23, 2016 at 10:08 AM, Michael Howell <michaelhowell...@gmail.com
> wrote:

> 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
>
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to