On Tue, Dec 22, 2015 at 2:46 PM, Yehuda Katz <wyc...@gmail.com> wrote:

> I want to make sure that I understand the core constraints here:
>
>    1. Gecko wants to be able to reliably do builds (especially urgent ones)
>    without relying on the uptime of third party services.
>    2. Gecko's build bots do not have any access to the Internet.
>    3. Servo will continue to make use of third-party libraries like
>    rust-url that will be developed in parallel by the Rust community.
>    4. Browsers need to be sure that the upstream code they are using is
>    byte-for-byte compatible across builds.
>    5. Gecko would like to manually audit all changes to upstream
>    dependencies, and be sure that once a dependency (direct or indirect)
> has
>    been audited, the relevant source code cannot change without additional
>    intervention.
>    6. Both Gecko and Servo need the ability to quickly (and in a
>    lightweight fashion) make changes to upstream dependencies without
> needing
>    to immediately convince the upstream maintainer to accept the change.
>

As a corollary to this, we want a mechanism that avoids divergent forks.
Gecko's vendoring strategy allows quick updates at the cost of drifting
towards forks (i.e. Gecko's Cairo is a totally divergent fork). Servo's
dependency strategy avoids forking at the cost of making quick updates
difficult (i.e. it's a pain to make changes that touch rust-selectors).


>    7. The Rust community assumes that the Cargo package manager will be
>    used to update dependencies, and packages lean on the ability for
>    sophisticated dependency resolution algorithms to manage the process of
>    updates.
>
> Have I missed any important constraints?
>

There's still the issue of wanting to avoid a complicated dependency on a
ecosystem that may disappear or look very different down the line, and the
added complexity in the sort term of tying into more systems. But I think
that's probably less of a "hard" constraint.


>
> -- Yehuda
>
> Yehuda Katz
> (ph) 718.877.1325
>
> On Tue, Dec 22, 2015 at 9:25 AM, Bobby Holley <bobbyhol...@gmail.com>
> wrote:
>
> > Reposting this without the extraneous mailing lists. Please reply to this
> > one.
> >
> > On Tue, Dec 22, 2015 at 9:23 AM, Bobby Holley <bobbyhol...@gmail.com>
> > wrote:
> >
> > > On Mon, Dec 21, 2015 at 2:47 PM, Alex Crichton <acrich...@mozilla.com>
> > > wrote:
> > >
> > >> I think one important aspect here is to separate out the concerns of
> > >> vendoring code in-tree vs where that code is developed. It sounds like
> > >> Gecko has lots of technical requirements about why and how code lives
> > >> in-tree, but the more important bit here is how it changes over time.
> > >>
> > >> What Yehuda was saying about how forking or syncing having downsides I
> > >> think is quite important for Rust code in Gecko, as this may run the
> > >> risk of splitting the ecosystem on various boundaries (e.g. the "gecko
> > >> rust-url" and the "upstream rust-url" or something like that). Along
> > >> those lines I think it's very important to drill down into exactly
> > >> what concerns there are about having these components developed in the
> > >> Servo-style as they are today.
> > >>
> > >
> > > IME "Servo-style today" would already be an enormous hassle if it
> weren't
> > > for the mitigating factor that most of the core browser components
> > already
> > > live in a monolithic repo. In the cases where some more core-ish code
> > lives
> > > in an external repo (like rust-selectors), making cross-coupled changes
> > is
> > > a huge pain, even with super-responsive maintainers like Simon.
> > >
> > > Given that I hack on both, I am interested in solving this problem for
> > > Servo too. :-)
> > >
> > >
> > >> It sounds like there's some hesitation about this today, but Yehuda I
> > >> think is making a good case that tooling can make the process quite
> > >> easy. There's quite a lot to benefit from with having only "one source
> > >> of truth" for all this code!
> > >>
> > >>
> > >> On Mon, Dec 21, 2015 at 2:45 PM, Yehuda Katz <wyc...@gmail.com>
> wrote:
> > >> > Yehuda Katz
> > >> > (ph) 718.877.1325
> > >> >
> > >> > On Mon, Dec 21, 2015 at 2:28 PM, Josh Matthews <
> j...@joshmatthews.net
> > >
> > >> > wrote:
> > >> >
> > >> >> On 2015-12-21 5:21 PM, Yehuda Katz wrote:
> > >> >>
> > >> >>> On Mon, Dec 21, 2015 at 2:14 PM, Bobby Holley <
> > bobbyhol...@gmail.com>
> > >> >>> wrote:
> > >> >>>
> > >> >>> I don't think this is going to fly in Gecko, unfortunately.
> > >> >>>>
> > >> >>>> Gecko is a monolithic repo, and everything needs to be vendored
> > >> in-tree
> > >> >>>> (a
> > >> >>>> non-negotiable requirement from the build peers). This means that
> > >> we'll
> > >> >>>> already need an automated process for pulling in updates to the
> > >> shared
> > >> >>>> code, committing them, and running them through CI.
> > >> >>>>
> > >> >>>>
> > >> >>> Can you say a bit more about what the requirements are here? Is
> the
> > >> reason
> > >> >>> for including the code in-tree that you need to be 100% confident
> > that
> > >> >>> everyone is talking about the same code? Or is it more than that?
> > >> >>>
> > >> >>>
> > >> >> The "non-negotiable requirement from the build peers" is that the
> > >> machines
> > >> >> that build Firefox do not have internet access.
> > >> >
> > >> >
> > >> > That's a totally reasonable requirement and one that I am very
> > >> comfortable
> > >> > saying that Cargo should support.
> > >> >
> > >> > To support this requirement, we plan to add a new command that
> > packages
> > >> up
> > >> > an application into a single tarball (or equivalent), complete with
> > all
> > >> > dependencies, and another command that can build such a package
> > without
> > >> > network connectivity.
> > >> >
> > >> > Bundler has equivalent facilities (bundle package and bundle install
> > >> > --deployment) that I consider indispensable for deployment
> scenarios,
> > >> and
> > >> > which I championed early on in the bundler process. (Heroku uses
> > `bundle
> > >> > install --deployment` in their buildpacks).
> > >> >
> > >> > -- Yehuda
> > >> _______________________________________________
> > >> 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