I come to late to this thread, but as a recent user of
parts of Avalon, this is my experience:
- At the first sight, Avalon sure looks to be abusing
some abstractions a bit - specially the roles thing.
In this case, Conor MacNeill remarks seem to make some
sense (one needs to absorb the "Avalon culture" to use
some of those things);
- Another problem with Avalon, are package names like
"excalibur" or "phoenix" that are (to say the least)
a bit less helpful than I would like them;
BUT
- Conor chooses a bad example: the configuration stuff
is trivial to use. As I am also a recent user of Ant,
it is very clear in my fresh memories that
understanding how to make a custom Ant task was a bit
harder than using the Avalon's configuration stuff for
the first time (with more source code reading and all);
- Many parts of Avalon are so highly reusable outside of
the framework context, that it would even make a lot
sense to move them to the Commons including, at least:
org.apache.avalon.framework
org.apache.avalon.framework.configuration
org.apache.avalon.excalibur.io
org.apache.avalon.excalibur.collections
org.apache.avalon.excalibur.concurrent
org.apache.avalon.excalibur.datasource
org.apache.avalon.excalibur.pool
(These last 4 seem to already have Commons
counterparts.)
- As for the documentation, it was quite easy to me to
understand what I use trough the Javadocs, only taking
a look to the source code in order to understand the
the code's quality (which is quite good/clear for me).
I have seen some prejudice against Avalon in some Apache
lists. I think you would be better by making a serious
evaluation before deciding - or you might be reinventing
more wheels than you need to.
Conor remarks just suggest that he paid much more
attention to Richard Gabriel's book than to the
configuration package he talks about, or he would easily
understand that the number of classes in the
configuration package has to with it being extensible.
org.apache.avalon.framework.configuration has a reader
for XML, but you can use it to configure your application
from a different source (e.g.: from properties files,
JNDI, etc.) just by coupling an appropriate reader, with
no change to the rest of you code.
I understood that just from reading the Javadocs. I am
sure anyone can do that too.
Have fun,
Paulo Gaspar