ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Duncan Davidson" <>
Subject Proposed Revolution: AntEater (a proposal for Ant Core 2.0)
Date Tue, 14 Nov 2000 00:33:00 GMT
I'm going to start this mail with the admission that I've been in and out of
this list too much over the past year. Ant started out as an idea on an
airplane that got refactored a few times before coming to Apache. It
actually was open sourced just a tad too early imho and could have dealt
with a bit more rigor. Unfortunately, I haven't made the time that I've
wanted to deal with Ant to this point and instead have been concentrating on
internal matters at Sun wrt open source and XML specs. Some of you who know
me personally know about the ins and outs of this. For everyone else,
suffice it to say that I've been overloaded and distracted. Much gratitude
is owed on my part to Stefan and Sam and Conor and all of you for continuing
on just like Open Source should.

However times they change. My involvement in this project is going to change
substantially over the next few months. Yes, I've tried to do this before
and failed. However, this time *will* be different. There are lot of reasons
for this, some official and some very personal, but primary to this is that
Ant is getting the attention I always wanted it to get (and never imagined
to see) and I feel an obligation and a desire to see it through to the next
level. I've had conversations with some of you about this -- most notably
Stefan while in London. Also, as I was giving my keynote at ApacheCon
London, I was thinking to myself how amazing it was that Ant is now getting
*so* much attention and that it was one of the real gems of The Jakarta
Project. I also think it's clear that we need one more incompatible change
-- an Ant 2.0 -- to take us to that next level. And, I've got more than a
few ideas of how to get there. I've been itching to get them out, but it
always seems that there is one thing or another blocking my time to do so.

I've also been contacted by a major publisher that wants to do a book on Ant
-- I'm not at liberty to discuss what publisher or schedules or anything as
there isn't a contract yet, but suffice it to say that it would be a
definitive definition of Ant and how to use it from a major respected
publisher in the industry. This is an opportunity that I am most likely
going to pursue, and it -- in combination with working towards an Ant 2.0 --
is now making ant number 1 on my priority list. And yes, I'd even consider
taking a leave of absence from my employer to do this -- I think that it's
that important to me.

Ok, so enough of the personal story -- here's where it affects this group.

I'm in the process of writing up a proposal and playing with some source
code thoughts for "AntEater -- a Proposal for Ant Core 2.0". This is a
proposal for the core of Ant, and should be a solid base for a GUI and other
things -- but I'm not going to enter into GUI land with this as there are
better qualified people here for that if AntEater does get accepted. My
intention is that the problems that the GUI folks have already seen are

I'm doing this as "AntEater" as I want to play by the rules that I set down
in the "Rules for Revolutionaries" document some time back in Tomcat-land.
Even though I think that I've got the ideas and design to take Ant to 2.0,
by no means do I think that they are the only way to get there -- and that
they should trump everyone else's ideas. I'm not so arrogant to say that
since I wrote ant, I control it's future and what should be called "version
2.0"-- that's not true -- it's the group of committers here that controls
the future of ant.

So, I'm pulling together my proposal and code base. And I'd be ready to
release it to you in about a week's time -- except for the fact that I'll be
out of touch of telephones and the internet from 11/18 through 12/2. Given
that I won't be ready before this happens -- and I want to be present to
have a dialog about my proposal -- I'll be making it public to this group on
Monday 12/4. 

I considered not saying anything about this until I get back into radio
range -- however, given that there are other discussions about refactoring
the internal data structures and what should go into a next generation Ant
-- I wanted to make my intentions, and plan for those intentions, clear. It
seems like the fair and right thing to do in this case.

So, when I get back, I'll be making my proposal and I hope that you all will
consider it as a future direction for Ant. To be clear, if you guys reject
it, then we *will* play by the rules of the Jakarta Project and I'll keep
pestering you about it, and will work with others on their ideas as well,
until we do get to a real, solid, stable Ant 2.0.

A rough overview of my thoughts that will be in AntEater -- Lots and lots
more detail will be present in my 12/4 drop:

    Solidification of the Project/Target/Task hierarchy. This is the core
    of Ant's model and it should be explicitly locked.

    A strict definition of the internal object model to enable scripting
    and GUIs for execution and editing. This object model is a reflection
    of the build.xml file -- and should be the object model used by
    the GUI and scripts directly. We shouldn't have multiple object models
    in place.

    A clear definition of how scripting (external or inline CDATA)
    can be used with Ant through the Task interface -- keeping scripting
    clearly separate and yet making Ant infinitely malleable to scripts.

    A clear extension mechanism that makes sense on whatever platform
    Ant is run on. For example, on unix Ant should look in ~/.ant/tasks:
    /usr/local/ant/tasks:$INSTALL_DIR/optionaltasks. On MacOS X, it should
    look in places like ~/Library/Ant or some such. On Windows 2K, it should
    look in \Users\username\etc...

    A clear mechanism for providing tasks as source code and compiling them
    on demand into tasks that can be used with the current project.

    Framework for execution in several modes -- single shot, repeated, and
    gui activated. mechanics so that Ant is distributed in a way that makes since
    on my new favorite platform of Mac OS X.

    An optional servlet layer which can access build files and would allow
    execution of build tasks remotely. This is targeted squarely at setting
    up build and test farms on a multitude of environments.

So -- that's my thoughts on AntEater as of right now. I do apologize in
advance that I'm saying this much now, and then going to wait until 12/4 to
give the full proposal. However, I'm sure that you will understand that I
*don't* want to release a proposal, go away for 2 weeks, and then get back
to a bunch of discussion that went nowhere because I wasn't there. And, I
have to restate that I didn't think it was fair to sit on this while
discussions continue about similar subjects on the mailing list. By no means
should those discussions end. But I thought everyone should know my plans.
It seems fair at least.


James Duncan Davidson                              
                                                                  !try; do()

View raw message