On Jun 14, 2014, at 3:09 PM, Hervé BOUTEMY <herve.bout...@free.fr> wrote:

> Le samedi 14 juin 2014 13:33:37 Jason van Zyl a écrit :
>>> yes, but how is the constraint expressed and coded?
>> 
>> Trying to encode these in such a way where you effectively have a property
>> graph is hard. Aether has some preliminary support for this but not really.
>> In practice to date it's really constrain the version or constrain what you
>> are resolving against.
>> 
>> Either explicit with your version as a concrete version if you want to
>> resolve against the wild. Or you use ranges and the constraint is encoded
>> as the list of repositories you are going to resolve against.
> for the moment, yes, the constraint has to be encoded as the list of 
> repositories you resolve against: if we make this practice clear, things will 
> get much clearer until we find another strategy (I don't have one for the 
> moment)
> 
>> Given that we have a de facto formalism through our code, specifically in
>> Aether, that I would gravitate toward using a formalized resolution model
>> like what OSGi. I'm certainly not a huge proponent of OSGi, but they have a
>> completely formalized and specified resolution algorithm.
> I really didn't find any formalisation of resolution algorithm, either in 
> Aether of OSGi: once a list of version have been found that match the 
> constraint, I still don't see/know what is the chosen one
> 
> Can you point me to the right direction, please?

You need to download the spec: http://www.osgi.org/Specifications/HomePage

There is a section on versions.

> 
>> 
>> At any rate you have the two mode of ensuring reproducibility which is to
>> use concrete versions against an arbitrary set of repositories, or range
>> versions against a constrained set of a repositories.
> we don't have the same definition of reproducibility
> but yes, with range version, you can get more control using constrained set 
> of 
> repositories: but more control, to differentiate pre-release and release 
> artifacts for example, is not yet reproducibility

To me there is not real distinction between pre-release and release. As I move 
more toward continuous delivery I see it as a stream of releases all with 
standard versions. Right now I partition by putting them in separate 
repositories, maybe at some point in the future the partitioning can be 
logical. This would be a property graph type resolution where there is a 
property associated with a particular deployment that says what type it is so 
the system can decide whether it should participate in resolution. But that 
presupposes property graph based resolution and that we can actually define 
what these types are. That's not going to happen for a while so the most 
practical option for the time being is separating these types into different 
repositories. Nightly, integration, milestone, or whatever you happen to call 
them.

> 
>> In both cases you'll
>> have reproducibility problems if your repositories are not managed
>> correctly. But I think trying to come up with a property graph based
>> resolution mechanism to deal with context is not going to happen any time
>> soon and most likely never so I don't really think pursuing that is an
>> option.
> property graph resolution mechanism is probably too much
> but a parametrized resolution algorithm (filtering + final selection of one 
> version from the remaining candidates), at global build level, should be 
> feasible
> 
> 
> ---------------------------------------------------------------------
> 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
http://twitter.com/takari_io
---------------------------------------------------------

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









Reply via email to