I think we'd have to standardize on Maven-style resolution, or I'd at least
like to see that path explored first. The issue is if we switch the
standard now, it could cause compatibility breaks for applications on top
of Spark.

On Fri, Nov 6, 2015 at 2:28 PM, Jakob Odersky <joder...@gmail.com> wrote:

> Reposting to the list...
>
> Thanks for all the feedback everyone, I get a clearer picture of the
> reasoning and implications now.
>
> Koert, according to your post in this thread
> http://apache-spark-developers-list.1001551.n3.nabble.com/Master-build-fails-tt14895.html#a15023,
> it is apparently very easy to change the maven resolution mechanism to the
> ivy one.
> Patrick, would this not help with the problems you described?
>
> On 5 November 2015 at 23:23, Patrick Wendell <pwend...@gmail.com> wrote:
>
>> Hey Jakob,
>>
>> The builds in Spark are largely maintained by me, Sean, and Michael
>> Armbrust (for SBT). For historical reasons, Spark supports both a Maven and
>> SBT build. Maven is the build of reference for packaging Spark and is used
>> by many downstream packagers and to build all Spark releases. SBT is more
>> often used by developers. Both builds inherit from the same pom files (and
>> rely on the same profiles) to minimize maintenance complexity of Spark's
>> very complex dependency graph.
>>
>> If you are looking to make contributions that help with the build, I am
>> happy to point you towards some things that are consistent maintenance
>> headaches. There are two major pain points right now that I'd be thrilled
>> to see fixes for:
>>
>> 1. SBT relies on a different dependency conflict resolution strategy than
>> maven - causing all kinds of headaches for us. I have heard that newer
>> versions of SBT can (maybe?) use Maven as a dependency resolver instead of
>> Ivy. This would make our life so much better if it were possible, either by
>> virtue of upgrading SBT or somehow doing this ourselves.
>>
>> 2. We don't have a great way of auditing the net effect of dependency
>> changes when people make them in the build. I am working on a fairly clunky
>> patch to do this here:
>>
>> https://github.com/apache/spark/pull/8531
>>
>> It could be done much more nicely using SBT, but only provided (1) is
>> solved.
>>
>> Doing a major overhaul of the sbt build to decouple it from pom files,
>> I'm not sure that's the best place to start, given that we need to continue
>> to support maven - the coupling is intentional. But getting involved in the
>> build in general would be completely welcome.
>>
>> - Patrick
>>
>> On Thu, Nov 5, 2015 at 10:53 PM, Sean Owen <so...@cloudera.com> wrote:
>>
>>> Maven isn't 'legacy', or supported for the benefit of third parties.
>>> SBT had some behaviors / problems that Maven didn't relative to what
>>> Spark needs. SBT is a development-time alternative only, and partly
>>> generated from the Maven build.
>>>
>>> On Fri, Nov 6, 2015 at 1:48 AM, Koert Kuipers <ko...@tresata.com> wrote:
>>> > People who do upstream builds of spark (think bigtop and hadoop
>>> distros) are
>>> > used to legacy systems like maven, so maven is the default build. I
>>> don't
>>> > think it will change.
>>> >
>>> > Any improvements for the sbt build are of course welcome (it is still
>>> used
>>> > by many developers), but i would not do anything that increases the
>>> burden
>>> > of maintaining two build systems.
>>> >
>>> > On Nov 5, 2015 18:38, "Jakob Odersky" <joder...@gmail.com> wrote:
>>> >>
>>> >> Hi everyone,
>>> >> in the process of learning Spark, I wanted to get an overview of the
>>> >> interaction between all of its sub-projects. I therefore decided to
>>> have a
>>> >> look at the build setup and its dependency management.
>>> >> Since I am alot more comfortable using sbt than maven, I decided to
>>> try to
>>> >> port the maven configuration to sbt (with the help of automated
>>> tools).
>>> >> This led me to a couple of observations and questions on the build
>>> system
>>> >> design:
>>> >>
>>> >> First, currently, there are two build systems, maven and sbt. Is
>>> there a
>>> >> preferred tool (or future direction to one)?
>>> >>
>>> >> Second, the sbt build also uses maven "profiles" requiring the use of
>>> >> specific commandline parameters when starting sbt. Furthermore, since
>>> it
>>> >> relies on maven poms, dependencies to the scala binary version
>>> (_2.xx) are
>>> >> hardcoded and require running an external script when switching
>>> versions.
>>> >> Sbt could leverage built-in constructs to support cross-compilation
>>> and
>>> >> emulate profiles with configurations and new build targets. This would
>>> >> remove external state from the build (in that no extra steps need to
>>> be
>>> >> performed in a particular order to generate artifacts for a new
>>> >> configuration) and therefore improve stability and build
>>> reproducibility
>>> >> (maybe even build performance). I was wondering if implementing such
>>> >> functionality for the sbt build would be welcome?
>>> >>
>>> >> thanks,
>>> >> --Jakob
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@spark.apache.org
>>> For additional commands, e-mail: dev-h...@spark.apache.org
>>>
>>>
>>
>

Reply via email to