Let me start off with saying I agree with many of the design goals of Ant2. Vastly changing a tool midstream is tough and it appears that many of the enhancements and changes will not change expectations of current Ant users by much.
However, implementation is another thing. I have felt for a while that Ant has been progressing into an XML-syntaxed scripting language with little checking. We already have good scripting languages and if the only goal was cross-platform capabilities, we could've borrowed Python/JPython. XML is a data description language and is ill-suited for the flow control and other script-like features that creep in with multiple user requests (kudos for refusing it in the goals). One of the things that I have always imagined Ant being was a build-descriptor engine. Using XML, the build is *described*; IOW, results based processing. Peter has mentioned the use of "templating" as a sort of preprocessing of the antfile for setting configurations, etc. Isn't this autoconf/IMake? What if the templates were simple results descriptions and the transform created a "raw" antfile that is more like the scripting-hybrid that exists now. What if it really turned it into a real script!? Now we're no longer locked into this pseudoscript concept the antfile is now. People simply put: <app> <jar><package/></jar> <package/> </app> To build a jar and an open class package. Transforms and rulesets define what will really happen under the covers. The preprocessor turns the above into another file that the ant task engine understands. We could even have two task engines, one for Ant1 files and one for Ant2 raw files. This would be cross-platform and much easier to integrate into a GUI *and* allow users to upgrade without ditching 3-10 months worth of antfiles. Ok, that breaks the Ant2 goal of breaking Ant1, but it would be possible. Anyway, chew on it and let me know what you think. Jesse
