On Fri, Jan 17, 2020 at 10:21 AM Elliotte Rusty Harold <elh...@ibiblio.org>
wrote:

> Thanks. That's a very clear explanation. I should think about how to
> incorporate that into https://jlbp.dev


Might want to give it some time before calling it a best practice. Maybe
we'll come to regret it :-). But I'm willing to say it is a better
alternative to shading in most cases, with the major exception being
generated code (like proto libs) that depend on libraries (like
protobuf-java). Ideally, proto compiler would vendor the dep into each
generated lib so we don't have to deal with the issue at all. Instead we do
it ourselves.

Kenn


>
>
> On Fri, Jan 17, 2020 at 12:12 PM Aaron Dixon <atdi...@gmail.com> wrote:
> >
> > @Tomo Suzuki Thanks for looking at this and your thorough analysis// let
> me know if I can help with any regression testing, CRs, or more context
> anything else.
> >
> > ---
> >
> > @Elliotte I was a little confused at first re: vendoring vs shading but
> here is how I understand it (happy to be corrected if anything I say here
> is a mischaracterization); I tend to over-explain for my own clarity
> fwiw--using Guava as an example:
> >
> > With SHADING you have your project (e.g., Beam) depend directly on Guava
> and its public package names. Your build will then compile and link to
> these package names and only after-the-fact [1] rewrite the byte-code to
> rename the guava package. This entails both byte-code rewriting the Guava
> class files (to rename the packages of the Guava code itself) and byte-code
> rewriting all of your project class files that import Guava (to change the
> import to use the new package name).
> >
> > With VENDORING you release a renamed Guava ("vendor") JAR and depend on
> that directly from your project. So your project's source code itself
> imports the (repackated)  vendor JAR and depends on the renamed packages
> directly. Your project build then has no need for shading or byte code
> rewriting of its own classes. I see vendoring making it very clear what is
> going on when looking at a project's source code and its dependencies, and
> there are likely other tangible brass-tacks benefits to vendoring besides
> the conceptual clarity over shading.
> >
> > [1] You can see that Maven shade:shade goal binds by default to Maven's
> package phase (which is well after after compilation).
> >
> > On Fri, Jan 17, 2020 at 9:16 AM Tomo Suzuki <suzt...@google.com> wrote:
> >>
> >> Ismaël and I think the short-term solution for Aaron's issue is to
> >> define Beam's own class for Avro's TimestampConversion. Luckily it's
> >> the only blocker for Avro 1.9 I found.
> >> I created a ticket https://issues.apache.org/jira/browse/BEAM-9144 and
> >> PR https://github.com/apache/beam/pull/10628 .
> >>
> >> Regards,
> >> Tomo
> >>
> >> On Fri, Jan 17, 2020 at 7:32 AM Elliotte Rusty Harold
> >> <elh...@ibiblio.org> wrote:
> >> >
> >> > On Thu, Jan 16, 2020 at 7:08 PM Kenneth Knowles <k...@apache.org>
> wrote:
> >> > >
> >> > > Regarding Google's advice about shading: don't go to a "one version
> rule" monorepo for advice about solving diamond dependencies in the wild.
> >> >
> >> > FWIW these docs came out of the open source, Github, multirepo, many
> >> > versions part of Google Cloud, not the mono repo world of google3.
> >> > Though I will say the more time I spend trying to deal with these
> >> > issues the more I love the monorepo.
> >> >
> >> > > It is a useful description of the pitfalls. We (and Flink before
> us, and likely many more) are already doing something that avoids many of
> them or makes them less likely. Building a separate vendored library is
> simpler and more robust than the "shade during build".
> >> > >
> >> >
> >> > I've only encountered "vendoring" as distinct from shading in Beam.
> >> > Are there more details about this anywhere? A quick Google search only
> >> > turned up one Beam doc that pointed to Go docs and a cloud endpoints
> >> > doc that seemed to use it as a synonym for shading.
> >> >
> >> >
> >> > --
> >> > Elliotte Rusty Harold
> >> > elh...@ibiblio.org
> >>
> >>
> >>
> >> --
> >> Regards,
> >> Tomo
>
>
>
> --
> Elliotte Rusty Harold
> elh...@ibiblio.org
>

Reply via email to