On Thu, Feb 9, 2017 at 10:51 AM, Anthony Ramine <n.ox...@gmail.com> wrote:

> In general, I posit that Mozilla completely, utterly, lost against V8 in
> the embedded department in a huge part because of this mono-repository
> thing where everything is muddled together.
>

(Sorry for going offtopic, but I don't think it's that black and white. We
do/did have standalone SpiderMonkey source releases for instance. I think a
bigger problem was that we had an API from the C era that was (and still
is) hard to use correctly (with no or outdated documentation) and it
changed all the time, while V8 started from scratch with a cleaner C++ API
and had the "new, cool, most advanced JS engine" marketing.)

Jan


> We can't quantify the missed opportunities when merging things together in
> a single repository.
>
> > On Wed, Feb 8, 2017 at 3:39 AM, Simon Sapin <simon.sa...@exyr.org>
> wrote:
> >
> >> It’s a trade-off.
> >>
> >
> > Totally. My request here is that we evaluate this tradeoff with some
> > consideration for the realities of the crate in question. I'm totally
> happy
> > to bias towards "separate repo" if the tradeoff is at all unclear.
> >
> >
> >>
> >> It’s true that historically we’ve been more eager than necessary to put
> >> every crate going to crates.io in its own repository. (See for example
> >> github.com/servo/webrender_traits, since then merged into webrender.)
> >>
> >> I understand that juggling multiple repositories makes things
> complicated
> >> for Servo contributors. But I think that it’s not too terrible once you
> >> figure out the workflow, and that we can improve it both with tooling
> (in
> >> Cargo replacements/overrides support) and in our own habits/conventions.
> >
> >
> >> On the other hand, keeping / moving back a library in servo/servo that
> is
> >> used outside makes life more difficult for contributors
> >
> >
> > Right. It makes life harder for some people and easier for others. But if
> > we evaluate the aggregate pain on both sides, I posit that the tradeoff
> > _thus far_ has not been worth it (see below about future contributions).
> >
> >
> >> since they need to clone/checkout a much larger repository, CI takes
> much
> >> longer, is more prone to unrelated intermittent failures, and the CI
> queue
> >> can be more busy.
> >>
> >
> > Won't they need to do this anyway? At least assuming we accept your
> > proposal below that: "Whenever a PR to rust-selectors (and other
> > repositories where we think that’s appropriate) makes breaking changes,
> we
> > don’t land it until there’s also a corresponding PR to update Servo for
> > these changes."
>
> As Simon says in his own reply, no we never block people because they did
> a breaking change that requires action on Servo's side. That's the main
> reason why things are split IMO. Servo shouldn't be a special burden for
> unrelated contributors.
>
> >> (Though this has gotten better now that we don’t need anymore to retry
> >> more often than not because of intermittent.)
> >>
> >> On 07/02/17 22:47, Bobby Holley wrote:
> >>
> >>> rust-selectors was split out into a separate crate and repository in
> 2015.
> >>> Since then, there has been one push (with 2 commits) by a contributor
> that
> >>> does not also contribute to servo
> >>>
> >>
> >> But we don’t know how many people will want to contribute in the future,
> >> and how many would be discouraged if it’s in servo/servo.
> >>
> >
> > We have two years of historical data. That does not predict the future,
> > it's at least some indication of the volume we might expect in the near
> > term.
> >
> > I also think that even if the direct benefits in this particular case are
> >> small, doing this is part of being a "good citizen" in the Rust
> ecosystem.
> >
> >
> >>
> >>
> >> But now I'm ready to land these changes, and things get tricky. The
> latest
> >>> version of rust-selectors is several breaking versions ahead of the one
> >>> used by servo, so now I need to either do these updates for code
> changes
> >>> I'm not familiar with, or block my patch indefinitely until someone
> else
> >>> does it: I can't make progress until that "lock" is released.
> >>>
> >>
> >> In this case, servo/rust-selectors had two breaking changes ahead of
> Servo:
> >>
> >> * One added variants to a public enum. Since Servo doesn’t match values
> of
> >> that enum, no change at all was required.
> >>
> >> * The other changed a parameter in a method of a public trait from Foo
> to
> >> &Foo. The fix was to add & in a few places in Servo.
> >>
> >
> > There were also text expectations that needed adjustment.
>
> Which you could have updated yourself, after the first failing CI pass.
>
> >> But yes, you couldn’t know how much effort this update would take until
> >> you tried it. You could have asked, though. We have people in multiple
> time
> >> zones who could help with this, some of whom reviewed the relevant
> changes.
> >>
> >
> > I had a feeling that it might be more than I bargained for. And was I
> > wrong? It took 2 people 6 attempts (spread across 2 PRs) and 9 hours to
> get
> > it landed. Anthony and Keith were heroic, but that is certainly a lot of
> > friction just to put the tree in a state where I can start trying to land
> > my patch.
>
> Please don't call that heroic, that's just me doing my job. I believe such
> janitoring is a mandatory and crucial part of doing FOSS, and it's beyond
> me why people would rather do cross-project commits, where the commit
> messages often don't make sense when considering one of the moving parts in
> isolation. But well, YMMV.
>
> Also, there is nothing fancy about "spread across 2 PRs", given how easy
> it is to make a PR (as opposed to doing stuff in m-c and bugzilla), and
> KiChjang could have just amended mine instead of making a new one
> altogether.
>
> All in all, I spent like 15 minutes on that, the rest was CI doing its own
> time-consuming job and KiChjang changing the expectations on his own PR.
>
> Regards.
>
> _______________________________________________
> 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