Ivy Informed Requirements & Design
David M. Lloyd
david.lloyd at redhat.com
Fri Oct 14 09:44:01 PDT 2011
Whether or not the Jigsaw team is, we (Red Hat) definitely are. Maybe
we can set up a public IRC chat session on FreeNode for interested
parties to join, and we can brainstorm requirements for dependency
resolution systems.
Maybe next week sometime?
On 10/14/2011 10:26 AM, Brian Pontarelli wrote:
> Mark,
>
> I agree that Ivy and others (particularly Savant - although it has collect a lot of dust lately) have really good dependency models and concepts that should be applied to Jigsaw. This was one of my reasons for bringing up the idea of creating a unified format for defining dependencies, resolution, handling, security, etc.
>
> I'm not sure if the Jigsaw team is interested in community participation or standardizing some of these things, but I think it is a great idea and would help all of these projects (Jigsaw, Maven, Ivy, Savant, Gradle, etc) considerably.
>
> -bp
>
>
> On Oct 14, 2011, at 6:59 AM, Mark R Maxey wrote:
>
>>
>>
>> Hello,
>>
>> Like many, I've been following Jigsaw from afar - mainly through the last 2
>> year's worth of JavaOne sessions. Thank you for tackling this immense
>> problem. While I'm just a nobody, I'd like to offer up some concepts for
>> your consideration.
>>
>> Maven has a large footprint& you've rightly been letting it inform your
>> direction. However, I would suggest a better alternative is Ivy. Ivy is a
>> pure dependency analysis tool independent of Java. It gives you the
>> dependency information and repository management while letting you do with
>> it what you want.
>>
>> Here are a couple of Ivy features I think are relevant for Jigsaw:
>>
>>
>>
>> CI& Build Promotion
>> Here is a common use case: multiple teams are working on multiple modules
>> concurrently. Some teams want stability and rely on milestone releases.
>> Some teams want to rely on integration / snapshot releases. This could
>> happen, for example, in the JDK where a few related modules are undergoing
>> changes by different teams for different reasons simultaneously.
>>
>> My concern is that the manual update of the version number in the
>> module-info.java file is too cumbersome. Maven snapshots aren't so bad
>> since it is just a static suffix, i.e., "-SNAPSHOT", that would be
>> infrequently updated. However, I prefer Ivy's unique one-up numbers /
>> timestamps because of the flexibility to rollback to previous builds.
>>
>> Build promotion also needs to be considered. Hudson/Jenkins is often used
>> to promote an integration / snapshot build to a milestone release and a
>> milestone to a GA release. Ivy& Maven can also do this. All of these
>> involve changing the version numbers on lots of modules.
>>
>> It seems to me that Jigsaw needs some way of easily modifying a module's
>> version without rebuilding it. I'd like to hear your thoughts on how this
>> lifecycle would play out under Jigsaw.
>>
>>
>>
>> Repositories& Local Caches
>> It is great that you are looking to integrate with Maven repositories.
>> Here are a few related tidbits from Ivy applicable to Jigsaw:
>>
>> Ivy supports a variety of resolvers for different types of artifact
>> repositories, e.g., URL based, file based, SSH, etc. It can also chain
>> these together in ways that allow you to specify search order.
>> You should check out the work Gradle is doing on dependency caches. I'm
>> betting you're going to run into the same problems with Java modules.
>> Ivy also supports a sophisticated set of conflict resolution policies.
>> You can tell Ivy how to extract the GAVC out of the file path. This
>> allows for a more customizable repository directory structure.
>>
>>
>>
>> I understand these are advanced concepts that probably aren't targeted for
>> your initial release. Many may be tasks to leave to 3rd party tool
>> vendors. I simply suggest that you let them inform your roadmap forward.
>>
>>
>> Thanks!
>> Mark Maxey
>
--
- DML
More information about the jigsaw-dev
mailing list