Leiningen is the best build tool for Clojure projects, while Maven is the first 
class citizen in ASF Infrastructure. Can we keep them both? Just like Nathan’s 
storm-starter: https://github.com/nathanmarz/storm-starter , the project itself 
is managed by Leiningen, but storm user who knows only maven can use the 
https://github.com/nathanmarz/storm-starter/blob/master/m2-pom.xml there to 
build.

On 2013年12月21日, at 上午5:26, Ted Dunning <[email protected]> wrote:

> The difference between Maven and Leiningen in the Apache context hasn't
> even really come into view.  When it comes to IP clearance, packaging in
> standard ways, signing and interfacing with Nexus, Maven is going to be
> worlds easier.  It isn't so much about doing the things that most
> developers know and care about better, it is about doing the things that
> most developers don't care about, but which are *really* important to get
> right.  Because few developers care, very few developers will get these
> things right.  Maven helps with this in two ways.  First, many Apache
> projects use maven so there is a tribal knowledge available to help out.
> Second, Maven incorporates community development into normal practice.
> This means that if one project makes project signing better, everybody
> wins.  This community focus means that enough resources actually get spent
> on the frictional parts of releasing code to make them much less painful.
> 
> 
> 
> 
> 
> On Fri, Dec 20, 2013 at 12:29 PM, Brian O'Neill <[email protected]>wrote:
> 
>> +1 for a switch to maven
>> 
>> I¹m all for lowering the hurdles for other developers to get involved.
>> 
>> By eliminating the zeromq dependency and converting to maven, we¹ll lower
>> those barriers, and increase the base of people capable of/willing to
>> contribute.
>> 
>> (the cost of submitting a small fix/enhancement right now is too high for
>> the casual java developer)
>> 
>> -brian
>> 
>> ---
>> Brian O'Neill
>> Chief Architect
>> Health Market Science
>> The Science of Better Results
>> 2700 Horizon Drive € King of Prussia, PA € 19406
>> M: 215.588.6024 € @boneill42 <http://www.twitter.com/boneill42>  €
>> healthmarketscience.com
>> 
>> This information transmitted in this email message is for the intended
>> recipient only and may contain confidential and/or privileged material. If
>> you received this email in error and are not the intended recipient, or
>> the person responsible to deliver it to the intended recipient, please
>> contact the sender at the email above and delete this email and any
>> attachments and destroy any copies thereof. Any review, retransmission,
>> dissemination, copying or other use of, or taking any action in reliance
>> upon, this information by persons or entities other than the intended
>> recipient is strictly prohibited.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> On 12/20/13, 3:19 PM, "P. Taylor Goetz" <[email protected]> wrote:
>> 
>>> I was hoping not to have to ask this question, since it¹s likely to start
>>> a heated debate. But here goesŠ
>>> 
>>> How would Storm developers feel about switching the build system from
>>> Leiningen to Maven?
>>> 
>>> This has nothing to do with personal preference (I¹m fine with either). I
>>> ask in the context of release management and integration with the ASF
>>> infrastructure.
>>> 
>>> I know Leiningen is very concise (since it uses clojure) and Maven is
>>> often looked at as a ³mess of xml². And there are a lot of other
>>> differences that people feel passionate about. So I¹d like to put ³minor²
>>> differences aside for a minute and focus on a few points that are
>>> important from a release management perspective.
>>> 
>>> 
>>> 1. ASF infrastructure support
>>> 
>>> This is probably the biggest factor. From what I can tell (I could be
>>> wrong) Storm is the first ASF project to use Clojure and Leiningen, so it
>>> is not well supported from an infrastructure perspective. For example,
>>> although there is a Leiningen plugin for Jenkins, it¹s not installed on
>>> builds.apache.org, so we¹d have to ask INFRA to install it which could
>>> take a long time. To work around that, the build would have to do a
>>> temporary install of Leiningen with each build. We¹d probably have to add
>>> a bunch of support scripts as well to do things like detect test
>>> failures, etc.
>>> 
>>> Maven on the other hand is pretty much a first class citizen in terms of
>>> ASF infrastructure, and using Maven makes it easy to build/sign releases,
>>> stage to Sonatype, etc. There are a wealth of plugins as well that
>>> integrate well with infra for such things as publishing docs, project
>>> websites, etc.
>>> 
>>> 2. Developer productivity
>>> One thing lot of people seem to like about Lieningen is the ability to
>>> quickly bring up a REPL and start hacking away. For this experiment, I
>>> used to the clojure maven plugin
>>> (https://github.com/talios/clojure-maven-plugin) and found it (for me) to
>>> be on par with Leiningen. To bring up a REPL you just type:
>>> 
>>> `mvn clojure:repl`
>>> 
>>> 
>>> To do a comparison, I put together a quick and dirty experimental branch
>>> with Leiningen replaced with Maven:
>>> 
>>> https://github.com/ptgoetz/incubator-storm/tree/maven-test
>>> 
>>> I¹d encourage anyone to check it out play around to see what developing
>>> Storm with Maven would be like.
>>> 
>>> 
>>> I¹d like to hear opinions from other committers and developers. If
>>> switching to Maven is something we want to do, I¹ll volunteer to do the
>>> work.
>>> 
>>> Thanks,
>>> 
>>> Taylor
>>> 
>>> 
>> 
>> 
>> 

Reply via email to