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


Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to