We need to push this discussion on build systems to a conclusion.  Let me 
summarize so far.

* We need to be able to build CloudStack in various configurations (support for 
the range of hypervisors turned on or off, etc).

* We would like the build tool to be able to get the necessary dependencies 
automatically, to avoid the user having to download a dozen libraries from all 
sorts of different places.

* Many of our dependencies are version-dependent, so we would want to get a 
specific version or at the very least have greater-than constraints on the 
version that is downloaded.

* We want to be able to package CloudStack in RPMs and .debs that correctly 
depend on packages available on the target platform.


Gradle has been proposed: http://www.gradle.org/.  No-one seems to know much 
about it, other than the fact that Hibernate and Spring have switched to using 
it, so it can't be too bad.

Maven has been proposed: http://maven.apache.org.  We have some expertise 
offered from Brett Porter (a committer there).  It's an Apache project, and 
it's very widely used.  We don't know much about it though, outside of Brett.  
I think that there's a legitimate criticism that it makes it difficult for 
packagers, because it hides the system dependencies.  That might not be reason 
enough not to use it though.  I don't know if Gradle suffers from the same 
problem.

Scripting it all ourselves with Ant is a possibility.  David started this 
effort on the deps-ctrl branch.  This puts us in control of our own destiny, 
and means that we don't have to learn a new tool (or fit in with the way that 
the tool works).  It does sound like we're just going to end up re-inventing 
half of Maven that way though.


For me, it comes down to developer resources.  We need people who care about 
this topic to volunteer some time to get the build working smoothly.  If those 
people want to use Maven or Gradle, I don't think anyone else is going to 
object too strongly, because no-one seems to know very much about those tools.  
At the least, we get the opportunity to try one of them, and see if we like it. 
 Nothing is ever set in stone, and if we decide to rewrite the build system in 
time for the 4.1 release, then we can do that.

So that's the big question: is someone going to volunteer to get the build 
system tamed for the 4.0 release?  It's a dirty job, but someone's got to do 
it, and you'll earn significant kudos if you do!

Thanks,

Ewan.

Reply via email to