You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Mike Power <mp...@dodtsair.com> on 2012/03/10 18:36:20 UTC

dependency versioning design

Has there been any thought to changing the design maven uses for 
versioning?  I often find that the versioning system is too constrictive 
and really does not fit well with the actual work flows of software 
development.

I was wondering if there was a general consensus that software 
development has exceeded the original design constraints of dependency 
versions and whether there was already a community of thought to 
identify a newer more modern solution?

Mike Power

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: dependency versioning design

Posted by Ansgar Konermann <an...@googlemail.com>.
Could you be a bit more concrete, give a few examples where you feel
restricted, describe the workflow you'd like to implement... things like
that.

Regards,

Ansgar
Am 10.03.2012 18:43 schrieb "Mike Power" <mp...@dodtsair.com>:

> Has there been any thought to changing the design maven uses for
> versioning?  I often find that the versioning system is too constrictive
> and really does not fit well with the actual work flows of software
> development.
>
> I was wondering if there was a general consensus that software development
> has exceeded the original design constraints of dependency versions and
> whether there was already a community of thought to identify a newer more
> modern solution?
>
> Mike Power
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@maven.**apache.org<us...@maven.apache.org>
> For additional commands, e-mail: users-help@maven.apache.org
>
>

Re: dependency versioning design

Posted by Wayne Fay <wa...@gmail.com>.
> 1) Annotating a release requires a code change and a rebuild.

This can be annoying. I know there has been some discussion about a
possible "turn this snapshot into a release without actually
rebuilding anything, just changing metadata" plugin on this list but
don't believe anyone has built it yet.

> 2) Accepting dependencies.  If my project depends on a SNAPSHOT I get
> their latest and greatest.  Which is great I like continually
> integrating with my dependencies because we find problems early and fix
> them cheaply.  The problem is that when I find out a dependency has
> broken my project I have to wait for them to fix it before my project is
> fixed.  Add a bunch a dependencies and continual integration feels more
> like continual breakage.  I want to be able to test their drops and if
> they pass use them.

Can this be rephrased as "I want to be able to use SNAPSHOTs because I
like the positive side effects when things work right but I don't want
to deal with the negative consequences of depending on SNAPSHOTs when
things don't work right"?

How would you change things to accommodate your contrasting needs? Do
you have specific thoughts about how this might work? I could see this
being addressed by simply asking your dependencies to "please release
more often" if they have the ability to do so. Perhaps they can relase
a more stable nightly or weekly snapshot which has some degree of
testing vs what you are currently consuming. I'm not sure how Maven
can help with this.

> 3) Transitive dependencies.  A good half of my build breakages do not
> come from my direct dependencies.  Instead their dependencies break.

This only happens when you depend on SNAPSHOTs.

> Without any change in my dependency, the transitive dependencies can
> change.  My project did not bring these dependencies in, so we have no

Yes, this is prone to happen with SNAPSHOTs.

I'm not sure how Maven can help with these problems. Do you have
specific thoughts about how this might work? I agree there is merit in
some of this.

Wayne

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: dependency versioning design

Posted by Mike Power <mp...@dodtsair.com>.
Thanks Seth,

Branching a code base is one of the major work flows where the current 
version design creates a mess.

Other examples include

1) Annotating a release requires a code change and a rebuild.  Forcing a 
QA check on the binary forcing the implementation of a release candidate 
process.  The release candidate process basically means you are going to 
say something is a release before you know it is a release because you 
can't say something is a release after you know it is a release.

2) Accepting dependencies.  If my project depends on a SNAPSHOT I get 
their latest and greatest.  Which is great I like continually 
integrating with my dependencies because we find problems early and fix 
them cheaply.  The problem is that when I find out a dependency has 
broken my project I have to wait for them to fix it before my project is 
fixed.  Add a bunch a dependencies and continual integration feels more 
like continual breakage.  I want to be able to test their drops and if 
they pass use them.

3) Transitive dependencies.  A good half of my build breakages do not 
come from my direct dependencies.  Instead their dependencies break. 
Without any change in my dependency, the transitive dependencies can 
change.  My project did not bring these dependencies in, so we have no 
familiarity with them or with their developers.  Yet because of this 
mechanism we end up testing the integration of the transitive dependency 
before our dependency has tested the integration.  I want to let my 
dependency do the integration with new transitive dependencies.  When 
they are successful then I'll integrate with the both of them.

Mike Power

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: dependency versioning design

Posted by Seth Call <se...@gmail.com>.
Mike, 

I'm with you fully.  

This thread is a suggestion I made based on tying versioning to concepts
within the SCM very tightly.

In short, I was trying to provide three types of versioning:

* I want the latest official build, *of a branch*, for a particular
dependency (say, master-SNAPSHOT, or trunk-SNAPSHOT). 
-- This is for when I don't want to check out the project, but I want to
track along latest

* I want a specific official build, *of a branch*, for a particular
dependency (say, master-234, where 234 is the build number)
-- This is for when I still don't want to check out the project, but I need
to pin the version.

* I want a local build of a dependency for a given branch *and no other
build from anywhere else* (master-local, which would be a version that
should/could only exist in your local repo and in no public repos)
-- This is for when you need to check out the dependency project and want to
fix a bug/add a feature on it, and while you are doing that work, you want
to force the dependency to resolve to your local version


This model is for internal development.  I don't have much issue with
traditional means of publishing artifacts (i.e, 1.4.26), but I do think this
model could be used without change for true publishing of artifacts.


By the way, I've got the exact versioning scheme working perfectly with Ivy,
and done such that the developer never has to touch their ivy.xml (i.e,
pom.xml) unless they want to 'pin' or change the branch of a dependency.

 There are reasons (described in that thread), as to why this is currently
hard in Maven.  
http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-git-branch-to-project-version-tc5543110.html

But I definitely want to do this in Maven, too.

--
View this message in context: http://maven.40175.n5.nabble.com/dependency-versioning-design-tp5553348p5553502.html
Sent from the Maven - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org