Currently Cocoon has so many jars in its lib directory structure that it is hard to know the particulars of who, what, when, where, why, and how.
The jar.xml file helps somewhat in that regard, but it can only do so much. Avalon is getting ready to do some releases, and I am actually surprised by all the JARs that are "required" in the system. When Avalon releases its new version of the ECM, there will be no dependencies on Excalibur COncurrent or Excalibur Collections any longer. They would only be required for backwards compatibility at that point.
Cocoon needs to mark libraries of this sort differently than including them in the lib/core--because they are not needed. None of the COcoon code at this point depends on those JARs either. They should be considered deprecated, and all users are encouraged to use the better maintained versions of those JARs (which is in Cocoon lib dir as well).
One thing that you can do is to have a "include.compat.jars" option that tells the build to create a WebApp with the JARs that are needed for backwards compatibility--whereas by default they are not there.
That will allow Cocoon to trim some fat with the number of JARs that are kept in CVS.
Another option is to adopt a "Maven" like repository (i.e. download the JARs from ibiblio) as they are needed. THings like licensing issues can easily be addressed by that solution--and CVS bulk is limited as much as possible. The Avalon build process takes care of this by a separate ANT script used to import the libraries.
What do you guys think?