ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Duncan Davidson <dun...@x180.net>
Subject Whoa Bessie... Was -- Re: [Proposal] AntFarm
Date Mon, 18 Dec 2000 07:39:05 GMT
On 12/15/00 5:25 PM, "Peter Donald" <donaldp@apache.org> wrote:

> you may have noticed I just checked in a proposal AntFarm. It was developed
> by Matt Foemmel <mpfoemme@ThoughtWorks.com> and is a different approach to
> both other proposals.

Ok, so that makes how many?

I have to admit that I'm a bit disturbed by the number of proposals here.
It's interesting to see that *so* many people have so many different takes
on what Ant should be.

But I'd like to rephrase that into "Lots of people have so many takes on
what a Java based build system should be." With this many different tangents
being taken, I'm pretty sure that we aren't talking about just Ant anymore.
Especially not Ant as I originally intended it to be. But more of a series
of attempts to solve a general problem. And that leaves me a lot less
disturbed. In fact, I'm kinda happy about it. Except that it leaves the
problem of everybody wanting to do the next version of Ant. :)

One of the criticisms of the "Rules for Revolutionaries" document at the
time was that it might lead to a large number of divergent code bases very
quickly -- and it lead to the question of how that was going to be dealt
with. At the time, we had the problem of *one* proposed new Tomcat
implementation. And I answered that criticism with "Well, we'll handle the
problem of having too many proposals when we hit it".

I think we've hit it.

One of the things that wasn't touched on in Rules for Revolutionaries,
mainly because at the time we weren't staring at numbers of different ways
of doing the same thing, is the concept of code ownership -- or even
benevolent dictatorships -- or whatever you want to call the idea of a
central "owner" of the code.

Most open source projects have a central person at the core that is the
"owner" of a project even it is open source. Larry Wall for Perl. Linus for
Linux. Apache didn't have that because at the beginning of the Apache
project the original Apache source base was NCSA server source -- and most
of the original authors of that source went to work for Netscape. So, in the
early days Apache was just a group of people. But even there, a "code guru"
has taken shape in the form of one Ryan B. who essentially is driving Apache
2.0.

And it's here that I think I can best express what I feel about Ant. (and
this is going to sound arrogant, but wthell..) I came up with Ant. I wrote
the first few generations of it. And it was an incomplete shot of that code
that really went out with Jakarta. And that's what's been here. Over the
last year, Ant has been in relative chaos -- every build has added features,
but those features are not really in sync with Ant. Ant has gotten bigger
and less focused. And features have changed between releases. Sometimes
being added, sometimes being removed. Maybe it's because other people are
trying to take it where they see it -- and its because I wasn't here to help
out as much as I should have been. But I still feel a strong sense of
ownership of Ant. And a strong desire to make it into what it should have
been to begin with.

Let me use a project a little further away from here -- JDOM. I can speak to
this since I was a back room player there. Lots of people had the desire to
make a simple Java based tree model that was better than DOM for
applications that just wanted a tree of XML data. Lots of us even threatened
to do it. However, Jason and Brett did it. And even if I contributed a hefty
review that changed JDOM quite a bit before its release -- quite clearly
it's theirs. I recently talked with Jason about this issue and he told me
one of the reasons JDOM isn't here at Apache is because we don't have a
clear answer for this sort of ownership. The kind of ownership that doesn't
mean that the code is private (because JDOM is open source) -- but the kind
of ownership that gives them control over its future.

In the ASF license, we protect the ASF's right to call things "Tomcat" or
"Ant" or "Apache Web Server" or whatever. That protects our ownership of
names. However, we don't do anything about protecting any kind of ownership
within the organization -- instead we just muck along. In the
Apache-->Apache 2.0 case, it's clear that Ryan et all are driving something
that really works. 

In the Tomcat-->Catalina(becoming Tomcat 3), we have the case where we had a
revolution that was a single revolution. In addition, all of the people
(myself included) that could have laid claim to ownership of the Tomcat name
went with the decision. In fact, I publicly +1'd the change even commenting
that the last of my code was now out of Tomcat. Now Craig quite clearly is
the driver of Tomcat -- or should I say of Catalina which happens to be
blessed as Tomcat 4.0.

So it seems that we need to start paying attention a little bit with Apache
to this thought of ownership within the community. Otherwise, we are just a
bit too anarchistic to allow some of the benefits of Open Source development
to fall on its developers and contributors. After all, we don't get paid in
money -- we get paid in a very different kind of currency. If we don't
protect that kind of currency, then there is something wrong.

Now, that's not to say that we should stifle innovation. Many of you on the
ant-dev mailing list don't know this, but I've been pushing for a long time
at the Apache members level to have policies and frameworks in place for
encouraging Software Darwinism. I do think that people should be able to
come up with ideas and compete. But what I hadn't considered with Rules for
Revolutionaries and the incubator approach is the issue of people that have
something, call it ownership, vested in a particular project with a name.
And we need to address this.

So what does this mean?

I respect the other proposals for ways of having a different take on what a
Java based build system should be.. Especially Mymidon where Peter is coming
at the problem from a whole different angle. But, it's not Ant imho. It's
quite a bit different.

I'm quite happy with competing against Mymidon -- and for the two of us to
steal as many ideas as we can from each other. But if Mymidon succeeds, I
really think that it should be as Mymidon. Not Ant. Its a different beast..
A different take on what it means to be a Java based build system. I want to
help make sure that Peter has his rights to push Mymidon as far as he can.
And if it succeeds, he should get the glory.

To make a point -- look at how we refer to Tomcat 4.0 -- we call it
"Catalina" in casual conversation even though it's Tomcat 4. Why do we do
it? Well, maybe it's because it's an acknowledgement that it's Craig's idea
-- it's the product of his efforts. Maybe it should still be called
Catalina. I dunno. But the fact that we continue to acknowledge his
contribution this way is important to note.

And if Mymidon became Ant 2.0 -- we'd probably still call it in casual
conversation Mymidon. Is that totally fair to Peter? I'm not sure.

Yes, I'm being selfish here. Full disclosure time -- I've been approached
and am going to write a book for O'Reilly on Ant. I want that book to be
about Ant the way I see it. And I want to protect these benefits of coming
up with Ant that I've got. And I don't see anything wrong with that.
Otherwise, I should've just released Ant off of x180.com and set it up as
Open Source there. But that would have been stupid since the last thing that
we want to do at Apache is have our developers feel that they can't code
here.

So, what do you think? Am I being an arrogant pig? Or do these rights matter
to Apache developers? If these rights don't matter, should I just ask for
the copyright to AntEater back so that I can go fork the code and do it
elsewhere as a castway from the ASF? (which, btw, would be pretty weird
since I'm an officer of the Foundation).

-- 
James Duncan Davidson                                        duncan@x180.net
                                                                  !try; do()


Mime
View raw message