On Jul 30, 2011, at 7:14 PM, Mark Derricutt wrote:

> Hi all,
> 
> I wanted to start this discussion completely separate from any of the other, 
> rather heated ASL vs EPL discussions around Aether to try and keep this more 
> on topic.
> 
> For awhile we ( members of the Illegal Argument podcast ) have often 
> discussed a desire to have a pluggable dependency resolution mechanism within 
> Apache Maven, mostly around having the ability to force maven to use the 
> lowest bound in a range rather than the highest for highlight fast-fail API 
> breakages.
> 

I think the potential for wreaking havoc would be too high. If it's something 
that is thought to be generally beneficial we should add it. But how would you 
stop everyone and their brother from thinking they had a better scheme? They 
all deploys those schemes and then Maven has to deal with potentially 
incompatible schemes and the default behaviour becoming meaningless. This is 
why OSGi has a specification on the scheme and the interpretation and you live 
with the one way for the sake of it working consistently for everyone. The idea 
seems appealing but I believe it would make the system too fragile.

> With the rise of these ASF/EPL threads I again thought of the pluggable 
> resolution idea.  For those with more of a code-centric knowledge of the 
> workings of Apache Maven, is it possible/feasible/semi-cleanly-codeable to 
> have an install, or even project level selection of resolution of artifacts.

Sure, it's possible. Maven's behavior is setup in the Maven specific 
RepositorySystemSession:

http://svn.apache.org/repos/asf/maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java

This describes what the various bits do:

http://aether.sonatype.org/introduction.html

Right now nothing changes in the session once it starts up, and there are no 
extension points in our particular session. All I see is problems really. If 
this were project specific we would have to be able to load the scheme from 
wherever it came from and then determining whether the scheme or 
interpretations were the same would be problematic. In your particular case 
where you want to change something like the behaviour of a bound ... maybe 
that's less problematic but I think everyone living with one defined behavior 
and it being augmented as a community would be wiser. In OSGi this doesn't 
really change now because so many people depend on a very specific behaviour. I 
don't think this would be a great idea, and I'm not convinced it could even 
work.

> 
> I imagine a difficulty in that this would have to occur early in the 
> bootstrap process of maven, but if this were the case, would we not be able 
> to work a solution to not only the Aether inclusion issues, but also Kasun's 
> Gentoo resolution issues.
> 
> This allows the end-user of Apache Maven (in the case that they care about 
> it) the ability to update artifact resolution code independent of maven 
> itself, or use a hardened/locked down resolution scheme backed by portage - 
> and portage only.
> 
> Apache Maven could stick with (for now) using Aether 1.11, the last dual 
> licensed release out of the box, where as the Gentoo ebuild could configure 
> maven to use its own ( an idea I see as flawed personally ) and those who 
> wish to use Aether, or a custom resolution strategy could do so.
> 
> Thoughts?
> 
> Mark
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
> 

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
---------------------------------------------------------

To do two things at once is to do neither.
 
 -—Publilius Syrus, Roman slave, first century B.C.



Reply via email to