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