> Perhaps we should go through and prioritize (and add missing items to)
BEAM-4045

+1. It's hard to know where to start when there's such a laundry list of
tasks. If you're having build issues, will you make sure it is represented
in BEAM-4045, and "Vote" for the issues that you believe are the highest
priority?

I agree that the Gradle build is far from perfect (my top gripes are IDE
integration and parallel/incremental build support). I believe that we're
capable of making our build great, and continuing our investment in Gradle
would be a shorter path than changing course again. Remember that our Maven
build also had it's share of issues, which is why we as a community voted
to replace it [1][2].

It seems we also need to help build Gradle expertise in our community, so
that those that are motivated are empowered to contribute. Does anybody
have a good "Getting Started with Gradle" guide they recommend? Perhaps we
could also link to it from the website/wiki.

[1]
https://lists.apache.org/thread.html/225dddcfc78f39bbb296a0d2bbef1caf37e17677c7e5573f0b6fe253@%3Cdev.beam.apache.org%3E
[2]
https://lists.apache.org/thread.html/bd399ecb17cd211be7c6089b562c09ba9116649c9eabe3b609606a3b@%3Cdev.beam.apache.org%3E

On Wed, Oct 10, 2018 at 2:40 AM Robert Bradshaw <rober...@google.com> wrote:

> Some rough stats (because I was curious): The gradle files have been
> edited by ~79 unique contributors over 696 distinct commits, whereas the
> maven ones were edited (over a longer time period) by ~130 unique
> contributors over 1389 commits [1]. This doesn't capture how much effort
> was put into these edits, but neither is restricted to a small set of
> experts.
>
> Regarding "friendly for other languages" I don't think either is
> necessarily easy to learn, but my impression is that the maven learning
> curve shallower for those already firmly embedded in the Java ecosystem
> (perhaps due to leveraging existing familiarity, and perhaps some due to
> the implicit java-centric conventions that maven assumed about your
> project), whereas with gradle at least I could keep pulling on the string
> to unwind things to the bottom. The "I just want to build/test X without
> editing/viewing the build files" seemed more natural with Gradle (e.g. I
> can easily list all tasks).
>
> That being said, I don't think everyone needs to understand the full build
> system. It's important that there be a critical mass that do (we have that
> for both, and if we can simplify to improve this that'd be great), it's
> easy enough to do basic changes (e.g. add a dependency, again I don't think
> the barrier is sufficiently different for either), and works well out of
> the box for someone who just wants to look up a command on the website and
> edit code (the CLI is an improvement with Gradle, but it's clear that
> (java) IDE support is a significant regression).
>
> Personally, I don't know much about IDE configuration (admittedly the
> larger issue), but one action item I can take on is trying to eliminate the
> need to do a "git clean" after building certain targets (assuming I can
> reproduce this).
>
> Perhaps we should go through and prioritize (and add missing items to)
> BEAM-4045
> https://issues.apache.org/jira/issues/?jql=parent%20%3D%20BEAM-4045%20ORDER%20BY%20priority%20DESC
> ? There's always a long tail with this kind of thing, and looking at the
> whole list can be daunting, but putting it in the correct order and
> knocking off the top N items could possibly go a long way.
>
> - Robert
>
> [1] The commands I ran were (with and without the uniq)
>
> $ find . -name 'build.gradle' | xargs git log | grep Author: | grep -o
> '[^< ]*@' | sort | uniq | wc
> $ find . -name 'pom.xml' | xargs git log | grep Author: | grep -o '[^<
> ]*@' | sort | uniq | wc
>
> On Wed, Oct 10, 2018 at 10:31 AM Etienne Chauchot <echauc...@apache.org>
> wrote:
>
>> Hi all,
>> I must admit that I agree on the status especially regarding 2 points:
>> 1. new contributors obstacles: gradle learning curve might be too long
>> for spare-time contributors, also complex scripted build takes time to
>> understand comparing to self-descriptive one.
>> 2. IDE integration kind of slows down development.
>>
>> Now, regarding how we improve the situation, I think we need to discuss
>> and identify tasks and tackle them all together even if they are not sexy
>> tasks as Ismaël mentioned.
>>
>> Etienne
>>
>> Le mardi 09 octobre 2018 à 10:04 +0200, Jean-Baptiste Onofré a écrit :
>>
>> Hi guys,
>>
>>
>> I know that's a hot topic, but I have to bring this discussion on the table.
>>
>>
>> Some months ago, we discussed about migrating our build from Maven to
>>
>> Gradle. One of the key expected improvement was the time to build.
>>
>> We proposed to do a PoC to evaluate the impacts and improvements, but
>>
>> this PoC was actually directly a migrate on master.
>>
>>
>> Now, I would like to bring facts here:
>>
>>
>> 1. Build time
>>
>> On my machine, the build time is roughly 1h15. It's pretty long, and
>>
>> regarding what the build is doing, I don't see huge improvement provided
>>
>> by Gradle.
>>
>> 2. Build reliability
>>
>> Even worse, most of the time, we need to use --no-parallel and
>>
>> --no-daemon to have a reliable build (it's basically recommended for
>>
>> release). It has an impact on build time, and we loose part of Gradle
>>
>> benefits.
>>
>> 3. Release and repositories
>>
>> Even if couple of releases has been performed with Gradle, it's not
>>
>> obvious to see improvements around artifacts handling. I got my
>>
>> repository polluted twice (that's part of the trick Gradle is doing to
>>
>> speed up the build dealing around the repository).
>>
>> 4. IDE integration
>>
>> We already had some comments on the mailing lists about the IDE
>>
>> integration. Clearly, the situation is not good on that front too. The
>>
>> integration on IDE (especially IntelliJ) is not good enough right now.
>>
>>
>> We are working hard to grow up the community, and from a contributor
>>
>> perspective, our build system is not good today IMHO.
>>
>> As a contributor, I resumed my work on some PRs, and I'm spending so
>>
>> much time of the build, largely more than working on the PRs code itself.
>>
>>
>> So, obviously, the situation is not perfect, at least from a contributor
>>
>> perspective.
>>
>>
>> The purpose of this thread is not again to have a bunch of replied
>>
>> ending nowhere. I would like to be more "pushy" and let's try to be
>>
>> concrete. So basically, we only have two options:
>>
>>
>> 1. Improve the build, working hard on Gradle front. Not sure if it makes
>>
>> such sense from a contributor perspective, as Maven is really well known
>>
>> from most of contributors (and easier to start with IMHO).
>>
>> 2. Back on Maven. That's clearly my preferred approach. IDE integration
>>
>> is better, Maven is well known from the contributors as already said.
>>
>> The effort is not so huge. We tried to use Gradle, we don't have the
>>
>> expected results now, that's not a problem, it's part of a project lifetime.
>>
>>
>> Thoughts ?
>>
>>
>> Regards
>>
>> JB
>>
>>
>>
>>

-- 




Got feedback? tinyurl.com/swegner-feedback

Reply via email to