Please excuse the very wide initial circulation of this, but I want to make sure people are aware that there is a debate that might affect them. I suspect the best place for the debate is the Gant Users email list, so if people could be careful about which list they reply to when replying then people not interested in the debate will not get flooded -- i.e. please check carefully where you are sending replies if you reply to this email. Thanks.
Ever since Hans Dockter realized that he was not going to be able to build Gradle on Gant, but would have to have a new code base to achieve his goals, there has been a tension between the roles of Gant and Gradle. The core technical difference between Gant and Gradle is that Gant is simply a scripting systems whereas Gradle works with a DAG as do Make, Ant, Maven, SCons, etc. -- Gant is the odd one out here as a build framework, it does not build a data structure and reflect on that, it just executes code. On and off over the last year (and very much on over the last couple of weeks) Hans and I have debated (privately) this issue of the tension between Gant and Gradle. Now though is the right time to open and widen this debate. In the Java milieu, Ant and Maven are the dominant build tools, though as an increasing number of people are realizing, using Groovy instead of XML as the build specification notation is a Big Win (tm) -- I get a continuous stream of emails (and I am sure Hans gets analogous emails) saying "Wow I just tried Gant and it is just so much nicer than Ant as Groovy is just so much better than XML". So the core question is how to make a Groovy-based build framework the dominant player in the Java world. Should we push both Gant and Gradle independently and see what happens or should we engineer things a little more so as to have a greater chance of success? There are many issues here, a few of which follow: Gant is just a scripting system and so doesn't really have all the infrastructure to do many of the things expected of a build framework, Gradle does. This implies Gradle is a better weapon for getting Groovy as the major build framework. Gant is just a single jar and so is very lightweight whereas Gradle has a lot of dependencies and is relatively heavyweight. Of course Gant is just a scripting replacement for the XML front end to Ant whereas Gradle is a complete Ivy-based build framework that supports management over the whole project lifecycle. People are increasingly asking for changes to Gant that can be achieved in a way, but really need DAG support which is already handled by Gradle. Gradle can support many of the Ant task scripting things that Gant does but Gant is so much more lightweight than Gradle for doing this. No-one seems to be interested in supporting Gant plugins for Eclipse, NetBeans or IntelliJ IDEA which is limiting its acceptance where IDEs are mandatory whereas work is in progress on Gradle plugins -- at least for Eclipse. There are many other issues but this will do for the present (to try and keep this email to some semblance of reasonable length :-) Where am I going with this? I am increasingly of the view that Gant should cease trying to be a build framework and leave this role to a rapidly evolving Gradle. Gant should instead reposition itself as a lightweight, embeddable Ant task scripting system. This is exactly how it is used in Grails. Embedding Gradle to do the Ant task scripting would for me be using too heavyweight a tool for the task at hand -- though having a Gradle rather than an Ant build for Grails and indeed Groovy might be a good move. Recently a number of people have made proposals for change to Gant and many of these are good proposals (especially the ones accompanied by patches :-) and I propose to evolve Gant with these proposals where they fit with Gant being just a lightweight Ant task scripting system. Where the changes are more to do with Gant becoming an improved build framework, I am contemplating not making the changes -- especially those where Gradle already does that which is needed. OK, I think this introduces the base issues, and this email is already long. I am therefore opening things to the floor to see what the Gant, Gradle, Groovy and Grails communities think about this. Should Gant and Gradle compete or should they be realigned and collaborate? Thanks. -- Russel. ==================================================== Dr Russel Winder Partner Concertant LLP t: +44 20 7585 2200, +44 20 7193 9203 41 Buckmaster Road, f: +44 8700 516 084 London SW11 1EN, UK. m: +44 7770 465 077
signature.asc
Description: This is a digitally signed message part
