Thanks for all the comments so far regarding this idea. The first step was to get a discussion going and so far that's worked :-)
Some more thoughts... please let me know what you think makes sense and what doesn't... *Organizations.* Regarding choice of "organization" for each module: why not use the name of the project as the organization for all of the ivy modules? That is what we do internally in our "enterprise repository". This seems obvious to me, but maybe I'm misunderstanding what "organization" is supposed to be for. I've always thought of it as referring to the people that created the *module* (not the *artifacts*). If you don't do it that way, you eliminate the possibility of multiple packagers of the same stuff, which would be bad (e.g., think about how many different Linux distributions there are). *Volunteers. *Regarding finding volunteers: there is no problem here. Either there will be enough interest and volunteers and the project will succeed, or there won't and it will die. This is the way open source is supposed to work! Also: regarding the question of whether Ivy developers should be spending their time on this idea. Answer: what a flattering idea :-) This project would however be separate from Ivy. Ivy developers would of course be welcome and encouraged but there would hopefully be plenty of other "random" people involved (like me). The best would be if a developer of each java project was maintaining their own project's meta-data. *Configurations. *Regarding defining configurations: I think the general approach with each module should be to start simple, then refine over time, and plan an "additive" evolution. That is to say, it's much less disruptive for a module to add a new configuration than it is to change or remove an existing one. So the general evolution should be that new, more precise configurations are added over time as necessary/desired. Example: you have "production" and "test" and want to refine along the JDK14 vs JDK15 dimension. Then you leave "production" and "test" alone but add "production-jdk14", "test-jdk14", "production-jdk15", and "test-jdk15". This way things stay backward compatible. *Public vs. Internal.* While it's true that an internal private repository is always going to be safer and more secure than a public one, I think we can be smart here, and it doesn't have to be "all or none", i.e., you can choose where along the spectrum you want to live. First, the meta-data instructions that knows how to retrieve the archive from wherever would be required to confirm integrity via checksums. This eliminates one source of potential "poisoning". Secondly, this project would really be composed of two separate things: 1. Meta-data/instructions describing how to retrieve and/or build each module's ivy.xml file and artifacts (with integrity checksums for all external resources) 2. A new ivy resolver that knows how to use the meta-data in #1 to resolve ivy modules So for example there's no reason a paranoid enterprise couldn't use the resolver in #2 but replace #1 with their own meta-data, etc. *Name. *We'd need a name for this project. I suggest "Ivy Roundup". *SVN Repository.* The project would have its own SVN repository. This would contain meta-data (in whatever form) describing how, for each module, to retrieve and/or build the ivy.xml and artifacts in that module. This meta-data could be as simple as an ant build.xml, or perhaps an XML file in a simple domain-specific language (<extract url="http://.../foobar.zip"; file="dist/foobar.jar"/>) or whatever. If a source project includes its own ivy.xml file, it can be used directly (possibly with changes applied via XSLT). Otherwise the likely common case would be that the ivy.xml is just included directly in the meta-data. We would optimize for projects published via maven, where we can derive some or all of our meta-data from the maven meta-data (<maven-project url="..."/>). The SVN repository would also contain Java code that defines an ivy resolver that knows how to utilize the above meta-data to resolve Ivy modules (someday if there is great success this could be merged into ivy itself). This resolver would be configurable so that it could work with propely formed meta-data from any source, not just this project's version of it. *Website. *The project web site must provide an easy way to visually inspect the (styled HTML) meta-data for each module using a web browser (perhaps using direct SVN HTTP access). Also it should have a simple search capability. Now what is the end result of this project, i.e., the product produced by this project? What exactly do you download and how do you use it? One possibility is that the output of this project would be an ivy module, containing the meta-data and resolver. The project would also have its own public Ivy repository, but containing only one module: itself. To make use of this, users would then: 1. Add the project's ivy repository to their settings 2. Use ivy to download the project module normally 3. Update their ivy settings to use the project's resolver, configured to point at the project's website Of course steps #1 and #2 could be done manually as well. Thanks, -Archie P.S. I apologize for the duplicate original email (got tricked by gmail email aliasing problem) -- Archie L. Cobbs