Hi

It's what I said in a previous e-mail: I don't think that just changing the 
build tool will improve a lot the build time.

We already know (and discussed while ago) that plugins like findbugs, 
checkstyle, etc are taking time.

So, I think we can already have a fast profile.

Regards
JB

On Nov 3, 2017, 11:16, at 11:16, Romain Manni-Bucau <rmannibu...@gmail.com> 
wrote:
>Hi guys,
>
>when you check the duration of each mojo of the build (almost since
>python part of the build just breaks it locally) you see that there is
>no real link with maven for the perf issues beam can encounter:
>https://gist.github.com/rmannibucau/f65fdde28d5dab0fdac50633f84554c9
>(generated from the profiling of tesla-profile and parsed with
>https://gist.github.com/rmannibucau/e329d54b8af6c009f46fd151d10037ad)
>
>Before PoC-ing other tools which will end up to either have the same
>issues if the other builds do the same things (test, checkstyle,
>enforcer, findbugs, ...) or have a less reliable build (trying to skip
>some parts of the build if "untouched" - note that this is a very hard
>issue since static code anaylizis doesn't give you any guarantee of
>what it does with modern code - then maybe some action can be taken on
>the current build:
>
>- testing https://github.com/vackosar/gitflow-incremental-builder or
>https://github.com/khmarbaise/incremental-module-builder maybe or do
>the same kind of extension including the beam needs (/!\ the previous
>warning is still accurate and requires a full run at some point to
>validate the graph detection algorithm didn't get abused by some
>indirect code dependency)
>- maybe try to get rid of some shades (it is a bit crazy ATM to have
>so much shades no?)
>- the CI can have profiles based on a PR convention (name of the
>branch?) to select the build profile, for instance
>fb/elasticsearch_super-nice-PR would build only the elasticsearch
>modules, jenkins/travis have this ability since they support scripting
>- document how to setup a "fastBuild" profile in its settings.xml
>which bypasses checkstyle, enforcer plugin, findbugs, etc... for fast
>development iterations
>
>
>
>
>Romain Manni-Bucau
>@rmannibucau |  Blog | Old Blog | Github | LinkedIn
>
>
>2017-11-01 21:02 GMT+01:00 Kenneth Knowles <k...@google.com.invalid>:
>> I have started one, here:
>https://github.com/kennknowles/beam/commits/bazel.
>> It is not nearly as far along as Luke's. For the POC I am just
>putting
>> things in one root BUILD, and learning where we might find the
>necessary
>> plugins as I go. I am happy to grant push access to this branch. It
>would
>> be superb if you had some time to work through the Python steps.
>>
>> On Wed, Nov 1, 2017 at 10:09 AM, Ahmet Altay
><al...@google.com.invalid>
>> wrote:
>>
>>> Has anyone started a POC with Bazel? I would be interested in
>helping that
>>> effort.
>>>
>>> On Wed, Nov 1, 2017 at 9:27 AM, Lukasz Cwik
><lc...@google.com.invalid>
>>> wrote:
>>>
>>> > I have started a POC for using Gradle here:
>>> > https://github.com/lukecwik/incubator-beam/tree/gradle
>>> >
>>> > Things that work:
>>> > * compiling all Java code (src/main and src/test)
>>> > * generating source from protos
>>> > * generating source from avro
>>> > * running rat, checkstyle
>>> >
>>> > Partially working:
>>> > * generating maven pom (albeit with wrong dependencies for some
>>> > subprojects)
>>> > * running tests (~80% pass, remainder seem to be dependency
>related but
>>> are
>>> > uninvestigated)
>>> >
>>> > Things that don't work:
>>> > * anything Python/Go/Docker compilation related
>>> > * many tests fail because I messed up dependencies
>>> > * anything shading related
>>> > * minor plugins like eclipse code formatter/...
>>> > * running @NeedsRunner/@ValidatesRunner/integration tests
>>> >
>>> > Feel free to reach out to me on Slack if you would like to try to
>tackle
>>> a
>>> > piece of the POC to prevent duplication of effort from anyone
>working on
>>> > it.
>>> >
>>> >
>>> >
>>> > On Tue, Oct 31, 2017 at 10:25 PM, Jean-Baptiste Onofré
><j...@nanthrax.net>
>>> > wrote:
>>> >
>>> > > Agree to move forward on a PoC.
>>> > >
>>> > > Thanks Reuven for bringing discussion on the mailing list !
>>> > >
>>> > > Regards
>>> > > JB
>>> > >
>>> > > On Nov 1, 2017, 03:20, at 03:20, Reuven Lax
><re...@google.com.INVALID>
>>> > > wrote:
>>> > > >Some good discussion here, and thanks to JB and Romain for
>adding to
>>> > > >it!
>>> > > >
>>> > > >JB makes the good point that we still need to release Maven
>artifacts,
>>> > > >as
>>> > > >many Beam users want to develop using Maven. So none of this
>>> discussion
>>> > > >will affect our release process, as we still need Maven
>"releases."
>>> > > >
>>> > > >At this point, if people are interested, I see no harm in
>prototyping.
>>> > > >Having working alternatives will give us a better basis for
>comparison
>>> > > >to
>>> > > >understand whether these other build systems give us anything
>over
>>> what
>>> > > >Maven does.
>>> > > >
>>> > > >Reuven
>>> > > >
>>> > > >On Tue, Oct 31, 2017 at 11:05 AM, Charles Chen
><c...@google.com.invalid
>>> >
>>> > > >wrote:
>>> > > >
>>> > > >> As a contributor to the Beam Python SDK, I noticed that many
>of the
>>> > > >points
>>> > > >> above regarding Maven and Gradle pertain mostly to Java SDK
>>> > > >development.
>>> > > >> For Python development, Maven is much less natural, and we
>end up
>>> > > >just
>>> > > >> shelling out to perform builds and tests.  For Python SDK
>(and
>>> > > >upcoming Go
>>> > > >> SDK development), an option to use Bazel would be quite
>useful.
>>> > > >>
>>> > > >> On Tue, Oct 31, 2017 at 10:42 AM Robert Bradshaw
>>> > > >> <rober...@google.com.invalid> wrote:
>>> > > >>
>>> > > >> > +1, Maven is both a build tool and a repository, and the
>latter is
>>> > > >> > essential to keep. Both Gradel and Bazel can interface with
>this
>>> > > >> > repository.
>>> > > >> >
>>> > > >> > I am, however, very supportive of moving away from Maven to
>a tool
>>> > > >> > that supports correct incremental, hermetic,
>dependency-driven,
>>> > > >> > multi-langauge, and hopefully fast builds for our own
>development.
>>> > > >> >
>>> > > >> > On Tue, Oct 31, 2017 at 10:00 AM, Kenneth Knowles
>>> > > >> > <k...@google.com.invalid> wrote:
>>> > > >> > > Echoing what JB and Reuven said, we absolutely must
>provide
>>> maven
>>> > > >> central
>>> > > >> > > artifacts for Java users, just as we provide pypi
>artifacts for
>>> > > >Python
>>> > > >> > > users.
>>> > > >> > >
>>> > > >> > > I see Maven as still a viable tool for single-module Java
>>> builds,
>>> > > >> > > especially considering its rich plugin ecosystem.
>>> > > >> > >
>>> > > >> > > On Mon, Oct 30, 2017 at 11:27 PM, Reuven Lax
>>> > > ><re...@google.com.invalid
>>> > > >> >
>>> > > >> > > wrote:
>>> > > >> > >
>>> > > >> > >> I think that's a very good point. No matter what build
>system
>>> we
>>> > > >use
>>> > > >> for
>>> > > >> > >> our own personal development, we still need to release
>Maven
>>> > > >artifacts
>>> > > >> > and
>>> > > >> > >> releases as we need to support our users using Maven.
>>> > > >> > >>
>>> > > >> > >> On Mon, Oct 30, 2017 at 11:26 PM, Jean-Baptiste Onofré <
>>> > > >> j...@nanthrax.net
>>> > > >> > >
>>> > > >> > >> wrote:
>>> > > >> > >>
>>> > > >> > >> > Generally speaking, it's interesting to evaluate
>>> alternatives,
>>> > > >> > especially
>>> > > >> > >> > Gradle. My point is also to keep Maven artifacts and
>>> > > >"releases" as
>>> > > >> > most
>>> > > >> > >> of
>>> > > >> > >> > our users will use Maven.
>>> > > >> > >> > For incremental build, afair, there's some
>enhancements on
>>> > > >Maven
>>> > > >> but I
>>> > > >> > >> > have to take a look.
>>> > > >> > >> >
>>> > > >> > >> > Regards
>>> > > >> > >> > JB
>>> > > >> > >> >
>>> > > >> > >> > On Oct 31, 2017, 07:22, at 07:22, Eugene Kirpichov
>>> > > >> > >> > <kirpic...@google.com.INVALID> wrote:
>>> > > >> > >> > >Hi!
>>> > > >> > >> > >
>>> > > >> > >> > >Many of these points sound valid, but AFAICT Maven
>doesn't
>>> > > >really
>>> > > >> do
>>> > > >> > >> > >incremental builds [1]. The best it can do is, it
>seems,
>>> > > >recompile
>>> > > >> > only
>>> > > >> > >> > >changed files, but Java compilation is a tiny part of
>the
>>> > > >overall
>>> > > >> > >> > >build.
>>> > > >> > >> > >
>>> > > >> > >> > >Almost all time is taken by other plugins, such as
>unit
>>> > > >testing or
>>> > > >> > >> > >findbugs
>>> > > >> > >> > >- and Maven does not seem to currently support
>features such
>>> > > >as "do
>>> > > >> > not
>>> > > >> > >> > >rerun unit tests of a module if the code didn't
>change".
>>> > > >> > >> > >
>>> > > >> > >> > >The fact that the surefire plugin has existed for >11
>years
>>> > > >> (version
>>> > > >> > >> > >2.0
>>> > > >> > >> > >was released in 2006) and still doesn't have this
>feature
>>> > > >makes me
>>> > > >> > >> > >think
>>> > > >> > >> > >that it's unlikely to be supported in the next few
>years
>>> > > >either.
>>> > > >> > >> > >
>>> > > >> > >> > >I suspect most PRs affect a very small number of
>modules, so
>>> > > >I
>>> > > >> think
>>> > > >> > >> > >the
>>> > > >> > >> > >performance advantage of a build system truly
>supporting
>>> > > >> incremental
>>> > > >> > >> > >builds
>>> > > >> > >> > >may be so overwhelming as to trump many other
>factors. Of
>>> > > >course,
>>> > > >> > we'd
>>> > > >> > >> > >need
>>> > > >> > >> > >to prototype and have hard numbers in hand to discuss
>this
>>> > > >with
>>> > > >> more
>>> > > >> > >> > >substance.
>>> > > >> > >> > >
>>> > > >> > >> > >[1]
>>> > > >> > >> >
>>https://stackoverflow.com/questions/8918165/does-maven-
>>> > > >> > >> > support-incremental-builds
>>> > > >> > >> > >
>>> > > >> > >> > >On Mon, Oct 30, 2017 at 10:57 PM Romain Manni-Bucau
>>> > > >> > >> > ><rmannibu...@gmail.com>
>>> > > >> > >> > >wrote:
>>> > > >> > >> > >
>>> > > >> > >> > >> Hi
>>> > > >> > >> > >>
>>> > > >> > >> > >> Even if not a commiter or even PMC, I'd like to
>mention a
>>> > > >few
>>> > > >> > points
>>> > > >> > >> > >from
>>> > > >> > >> > >> an external eye:
>>> > > >> > >> > >>
>>> > > >> > >> > >> - Maven stays the most common build tool and easier
>one
>>> for
>>> > > >any
>>> > > >> > user.
>>> > > >> > >> > >It
>>> > > >> > >> > >> means it is the best one to hope contributions
>IMHO.
>>> > > >> > >> > >> - Maven has incremental support but if there is any
>>> blocker
>>> > > >the
>>> > > >> > >> > >community
>>> > > >> > >> > >> is probably ready to enhance it (has been done for
>>> compiler
>>> > > >> plugin
>>> > > >> > >> > >for
>>> > > >> > >> > >> instance)
>>> > > >> > >> > >> - Gradle hides issues easily with its daemon so a
>build
>>> > > >without
>>> > > >> > >> > >daemon is
>>> > > >> > >> > >> needed
>>> > > >> > >> > >> - Gradle doesnt isolate plugins well enough so
>ensure your
>>> > > >> planned
>>> > > >> > >> > >plugins
>>> > > >> > >> > >> doesnt conflict
>>> > > >> > >> > >> - Only Maven is correctly supported in mainstream
>and
>>> > > >OS/free IDE
>>> > > >> > >> > >>
>>> > > >> > >> > >> This is the reasons why I think Maven is better -
>not even
>>> > > >> entering
>>> > > >> > >> > >into
>>> > > >> > >> > >> the ASF points.
>>> > > >> > >> > >>
>>> > > >> > >> > >> Now Maven is not perfect but some quick
>enhancements can
>>> be
>>> > > >done:
>>> > > >> > >> > >>
>>> > > >> > >> > >> - A fast build profile can be created
>>> > > >> > >> > >> - Takari scheduler can be used yo enhance the
>parallel
>>> > > >build
>>> > > >> > >> > >> - Scripts can be provided to build a subpart of the
>>> project
>>> > > >> > >> > >> - A beam extension can surely be done to optimize
>or
>>> > > >compute the
>>> > > >> > >> > >reactors
>>> > > >> > >> > >> more easily based on module names
>>> > > >> > >> > >>
>>> > > >> > >> > >> Romain
>>> > > >> > >> > >>
>>> > > >> > >> > >> Le 31 oct. 2017 06:42, "Jean-Baptiste Onofré"
>>> > > ><j...@nanthrax.net>
>>> > > >> a
>>> > > >> > >> > >écrit :
>>> > > >> > >> > >>
>>> > > >> > >> > >> -0
>>> > > >> > >> > >>
>>> > > >> > >> > >> For the following reasons reasons:
>>> > > >> > >> > >> - maven is a Apache project and we can have
>>> > > >support/improvement
>>> > > >> > >> > >> - I don't see how another build tool would speed up
>the
>>> > > >build by
>>> > > >> > >> > >itself
>>> > > >> > >> > >> - Apache default release process is based on Maven
>>> > > >> > >> > >>
>>> > > >> > >> > >> On the other hand, Gradle could be interesting.
>Anyway
>>> it's
>>> > > >> > something
>>> > > >> > >> > >to
>>> > > >> > >> > >> evaluate.
>>> > > >> > >> > >>
>>> > > >> > >> > >> Regards
>>> > > >> > >> > >> JB
>>> > > >> > >> > >>
>>> > > >> > >> > >>
>>> > > >> > >> > >> On Oct 30, 2017, 18:46, at 18:46, Ted Yu
>>> > > ><yuzhih...@gmail.com>
>>> > > >> > wrote:
>>> > > >> > >> > >> >I agree with Ben's comment.
>>> > > >> > >> > >> >
>>> > > >> > >> > >> >Recently I have been using gradle in another
>Apache
>>> > > >project and
>>> > > >> > >> > >found
>>> > > >> > >> > >> >it
>>> > > >> > >> > >> >interesting.
>>> > > >> > >> > >> >
>>> > > >> > >> > >> >Cheers
>>> > > >> > >> > >>
>>> > > >> > >> >
>>> > > >> > >>
>>> > > >> >
>>> > > >>
>>> > >
>>> >
>>>

Reply via email to