Opinion needed: POM parent versioning

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Opinion needed: POM parent versioning

Curtis Rueden
Hi everyone,

This is a question for anyone consuming the pom-* parents of the SciJava software stack.

We want to start versioning these POM parents according to consistent rules. (Unfortunately, right now, the approach is vague and potentially inconsistent [1].) We came up with the following two possible schemes, and would like your feedback on which one you would prefer.

== 1) SemVer ==

Every POM parent has three digits, X.Y.Z.

The X digit is "major" and when incremented indicates a breaking change of some sort: either A) plugin config changes requiring downstream changes, or more commonly B) major SemVer dependency version bumps (e.g., managed scijava-common version updated from 2.35.0 to 3.0.0). This would exclude 0.x and beta components though (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to 2.0.0-beta-28 without bumping pom-imglib2's X digit).

The Y digit is "minor" and incremented when dependency versions change in a SemVer-compatible manner, or when plugin configuration is added or improved.

For critical bug-fixes where a given POM parent is somehow compromised or broken, the third digit Z can be bumped before going to the next Y. (See e.g. the recent pom-fiji 5.0.Z series of releases.)

== 2) Bread crumb version trail ==

The pom-scijava parent would have a single version digit. The pom-imagej (which is the next POM down) would have two: the first in lockstep with its pom-scijava parent, and the second being its dedicated version digit. POMs which extend pom-imagej (i.e.: pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the first two in lockstep with pom-imagej and the third their own. And so on down the line—e.g., pom-trakem2 would need four digits: the first three matching the pom-fiji parent and the fourth its own.

== Pros and cons ==

Option 1:
[PRO] Semantic meaning. You can reason whether a given POM is somehow "breaking".
[PRO] Succinctness. Every parent POM has at most three digits at any one time.
[CON] Lack of provenance. Not obvious which parent POMs go together without leaning on a tool.

Option 2:
[PRO] Clear provenance. You can trivially derive the chain of parent POM versions.
[CON] Lack of semantics. Harder to tell which POM parent releases might break backwards compatibility.
[CON] Aesthetics. More than 3 digits in a version string may not be desirable.

Note that either way, we are in the process of creating a scijava-maven-plugin goal to dump all the component version properties associated with a given parent POM.

Since either scheme is consistent and useful, we want to institute whichever scheme will annoy everyone less. ;-) So which do people like better: SemVer or breadcrumbs?

Thanks,
Curtis

[1] The 5.x POM versioning approach was an attempt to achieve _both_ options above, but Mark & I realized today that the two goals are rather mutually exclusive. That is, we cannot keep POM parent versions fully in lockstep while also maintaining a SemVer versioning scheme.

_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel
Reply | Threaded
Open this post in threaded view
|

Re: Opinion needed: POM parent versioning

Tobias Pietzsch-2
Hi Curtis,

I would prefer SemVer, but mainly because this seems closer to the way its currently done and I’m getting used to that way. So really no strong opinion at all.

What would be nice would be some kind of notification when new pom parents are released. When revisiting some projects I haven’t been working on for a while, I often find myself checking maven.imagej.net to find out, eg, what the latest pom-fiji version is, so that I can use the latest and greatest as a parent. Is there already some mailing-list or similar in place that sends such release notifications?

best regards,
Tobias

On 17 Nov 2014, at 20:39, Curtis Rueden <[hidden email]> wrote:

Hi everyone,

This is a question for anyone consuming the pom-* parents of the SciJava software stack.

We want to start versioning these POM parents according to consistent rules. (Unfortunately, right now, the approach is vague and potentially inconsistent [1].) We came up with the following two possible schemes, and would like your feedback on which one you would prefer.

== 1) SemVer ==

Every POM parent has three digits, X.Y.Z.

The X digit is "major" and when incremented indicates a breaking change of some sort: either A) plugin config changes requiring downstream changes, or more commonly B) major SemVer dependency version bumps (e.g., managed scijava-common version updated from 2.35.0 to 3.0.0). This would exclude 0.x and beta components though (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to 2.0.0-beta-28 without bumping pom-imglib2's X digit).

The Y digit is "minor" and incremented when dependency versions change in a SemVer-compatible manner, or when plugin configuration is added or improved.

For critical bug-fixes where a given POM parent is somehow compromised or broken, the third digit Z can be bumped before going to the next Y. (See e.g. the recent pom-fiji 5.0.Z series of releases.)

== 2) Bread crumb version trail ==

The pom-scijava parent would have a single version digit. The pom-imagej (which is the next POM down) would have two: the first in lockstep with its pom-scijava parent, and the second being its dedicated version digit. POMs which extend pom-imagej (i.e.: pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the first two in lockstep with pom-imagej and the third their own. And so on down the line—e.g., pom-trakem2 would need four digits: the first three matching the pom-fiji parent and the fourth its own.

== Pros and cons ==

Option 1:
[PRO] Semantic meaning. You can reason whether a given POM is somehow "breaking".
[PRO] Succinctness. Every parent POM has at most three digits at any one time.
[CON] Lack of provenance. Not obvious which parent POMs go together without leaning on a tool.

Option 2:
[PRO] Clear provenance. You can trivially derive the chain of parent POM versions.
[CON] Lack of semantics. Harder to tell which POM parent releases might break backwards compatibility.
[CON] Aesthetics. More than 3 digits in a version string may not be desirable.

Note that either way, we are in the process of creating a scijava-maven-plugin goal to dump all the component version properties associated with a given parent POM.

Since either scheme is consistent and useful, we want to institute whichever scheme will annoy everyone less. ;-) So which do people like better: SemVer or breadcrumbs?

Thanks,
Curtis

[1] The 5.x POM versioning approach was an attempt to achieve _both_ options above, but Mark & I realized today that the two goals are rather mutually exclusive. That is, we cannot keep POM parent versions fully in lockstep while also maintaining a SemVer versioning scheme.

--
You received this message because you are subscribed to the Google Groups "scijava" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.


_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel

signature.asc (465 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [fiji-devel] Re: Opinion needed: POM parent versioning

Mark Hiner
Hi Tobias,

>What would be nice would be some kind of notification when new pom parents are released.

http://status.imagej.net/ reports latest component versions... I actually thought it reported latest pom, but just realized it does not! We will be splitting this page by org so it's a bit more readable (e.g. status.imagej.net/fiji) so that will be a good time to also post the pom versions.

Further I am working on fleshing out the scijava-maven-plugin, to provide more tooling to ease the management burden of our projects. Curtis and I just talked about having a "mvn scijava:report" type command that will print out the pom hierarchy of your current project, and show the version properties provided by each pom. I'd like to make this tooling also report latest available versions, and then integrate it into status.imagej.net generation.

Also, you can react to pretty much anything via GitHub's webhook API. We currently report activity to IRC - so there should be records of releases in the chat logs. Having a nice subscription list for when a new release comes out seems very plausible, but I couldn't find anything premade with some brief googling.

Best,
Mark

On Mon, Nov 17, 2014 at 2:31 PM, Tobias Pietzsch <[hidden email]> wrote:
Hi Curtis,

I would prefer SemVer, but mainly because this seems closer to the way its currently done and I’m getting used to that way. So really no strong opinion at all.

What would be nice would be some kind of notification when new pom parents are released. When revisiting some projects I haven’t been working on for a while, I often find myself checking maven.imagej.net to find out, eg, what the latest pom-fiji version is, so that I can use the latest and greatest as a parent. Is there already some mailing-list or similar in place that sends such release notifications?

best regards,
Tobias

On 17 Nov 2014, at 20:39, Curtis Rueden <[hidden email]> wrote:

Hi everyone,

This is a question for anyone consuming the pom-* parents of the SciJava software stack.

We want to start versioning these POM parents according to consistent rules. (Unfortunately, right now, the approach is vague and potentially inconsistent [1].) We came up with the following two possible schemes, and would like your feedback on which one you would prefer.

== 1) SemVer ==

Every POM parent has three digits, X.Y.Z.

The X digit is "major" and when incremented indicates a breaking change of some sort: either A) plugin config changes requiring downstream changes, or more commonly B) major SemVer dependency version bumps (e.g., managed scijava-common version updated from 2.35.0 to 3.0.0). This would exclude 0.x and beta components though (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to 2.0.0-beta-28 without bumping pom-imglib2's X digit).

The Y digit is "minor" and incremented when dependency versions change in a SemVer-compatible manner, or when plugin configuration is added or improved.

For critical bug-fixes where a given POM parent is somehow compromised or broken, the third digit Z can be bumped before going to the next Y. (See e.g. the recent pom-fiji 5.0.Z series of releases.)

== 2) Bread crumb version trail ==

The pom-scijava parent would have a single version digit. The pom-imagej (which is the next POM down) would have two: the first in lockstep with its pom-scijava parent, and the second being its dedicated version digit. POMs which extend pom-imagej (i.e.: pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the first two in lockstep with pom-imagej and the third their own. And so on down the line—e.g., pom-trakem2 would need four digits: the first three matching the pom-fiji parent and the fourth its own.

== Pros and cons ==

Option 1:
[PRO] Semantic meaning. You can reason whether a given POM is somehow "breaking".
[PRO] Succinctness. Every parent POM has at most three digits at any one time.
[CON] Lack of provenance. Not obvious which parent POMs go together without leaning on a tool.

Option 2:
[PRO] Clear provenance. You can trivially derive the chain of parent POM versions.
[CON] Lack of semantics. Harder to tell which POM parent releases might break backwards compatibility.
[CON] Aesthetics. More than 3 digits in a version string may not be desirable.

Note that either way, we are in the process of creating a scijava-maven-plugin goal to dump all the component version properties associated with a given parent POM.

Since either scheme is consistent and useful, we want to institute whichever scheme will annoy everyone less. ;-) So which do people like better: SemVer or breadcrumbs?

Thanks,
Curtis

[1] The 5.x POM versioning approach was an attempt to achieve _both_ options above, but Mark & I realized today that the two goals are rather mutually exclusive. That is, we cannot keep POM parent versions fully in lockstep while also maintaining a SemVer versioning scheme.

--
You received this message because you are subscribed to the Google Groups "scijava" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
--
Please avoid top-posting, and please make sure to reply-to-all!
 
Mailing list web interface: http://groups.google.com/group/fiji-devel

---
You received this message because you are subscribed to the Google Groups "Fiji-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.


_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel
Reply | Threaded
Open this post in threaded view
|

Re: [fiji-devel] Opinion needed: POM parent versioning

Stephan Saalfeld
In reply to this post by Curtis Rueden
+1 SemVer


On Mon, 2014-11-17 at 13:39 -0600, Curtis Rueden wrote:

> Hi everyone,
>
>
> This is a question for anyone consuming the pom-* parents of the
> SciJava software stack.
>
>
> We want to start versioning these POM parents according to consistent
> rules. (Unfortunately, right now, the approach is vague and
> potentially inconsistent [1].) We came up with the following two
> possible schemes, and would like your feedback on which one you would
> prefer.
>
>
> == 1) SemVer ==
>
>
> Every POM parent has three digits, X.Y.Z.
>
>
> The X digit is "major" and when incremented indicates a breaking
> change of some sort: either A) plugin config changes requiring
> downstream changes, or more commonly B) major SemVer dependency
> version bumps (e.g., managed scijava-common version updated from
> 2.35.0 to 3.0.0). This would exclude 0.x and beta components though
> (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to
> 2.0.0-beta-28 without bumping pom-imglib2's X digit).
>
>
> The Y digit is "minor" and incremented when dependency versions change
> in a SemVer-compatible manner, or when plugin configuration is added
> or improved.
>
>
>
> For critical bug-fixes where a given POM parent is somehow compromised
> or broken, the third digit Z can be bumped before going to the next Y.
> (See e.g. the recent pom-fiji 5.0.Z series of releases.)
>
>
> == 2) Bread crumb version trail ==
>
>
> The pom-scijava parent would have a single version digit. The
> pom-imagej (which is the next POM down) would have two: the first in
> lockstep with its pom-scijava parent, and the second being its
> dedicated version digit. POMs which extend pom-imagej (i.e.:
> pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the
> first two in lockstep with pom-imagej and the third their own. And so
> on down the line—e.g., pom-trakem2 would need four digits: the first
> three matching the pom-fiji parent and the fourth its own.
>
>
> == Pros and cons ==
>
>
> Option 1:
> [PRO] Semantic meaning. You can reason whether a given POM is somehow
> "breaking".
> [PRO] Succinctness. Every parent POM has at most three digits at any
> one time.
> [CON] Lack of provenance. Not obvious which parent POMs go together
> without leaning on a tool.
>
>
> Option 2:
> [PRO] Clear provenance. You can trivially derive the chain of parent
> POM versions.
> [CON] Lack of semantics. Harder to tell which POM parent releases
> might break backwards compatibility.
> [CON] Aesthetics. More than 3 digits in a version string may not be
> desirable.
>
>
> Note that either way, we are in the process of creating a
> scijava-maven-plugin goal to dump all the component version properties
> associated with a given parent POM.
>
>
> Since either scheme is consistent and useful, we want to institute
> whichever scheme will annoy everyone less. ;-) So which do people like
> better: SemVer or breadcrumbs?
>
>
> Thanks,
> Curtis
>
>
>
> [1] The 5.x POM versioning approach was an attempt to achieve _both_
> options above, but Mark & I realized today that the two goals are
> rather mutually exclusive. That is, we cannot keep POM parent versions
> fully in lockstep while also maintaining a SemVer versioning scheme.
> --
> --
> Please avoid top-posting, and please make sure to reply-to-all!
>  
> Mailing list web interface: http://groups.google.com/group/fiji-devel
>
> ---
> You received this message because you are subscribed to the Google
> Groups "Fiji-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [hidden email].
> For more options, visit https://groups.google.com/d/optout.


_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel
Reply | Threaded
Open this post in threaded view
|

Re: [fiji-devel] Opinion needed: POM parent versioning

Christian Dietz
+1 SemVer. Getting used to it.

On 18.11.2014 03:08, Stephan Saalfeld wrote:

> +1 SemVer
>
>
> On Mon, 2014-11-17 at 13:39 -0600, Curtis Rueden wrote:
>> Hi everyone,
>>
>>
>> This is a question for anyone consuming the pom-* parents of the
>> SciJava software stack.
>>
>>
>> We want to start versioning these POM parents according to consistent
>> rules. (Unfortunately, right now, the approach is vague and
>> potentially inconsistent [1].) We came up with the following two
>> possible schemes, and would like your feedback on which one you would
>> prefer.
>>
>>
>> == 1) SemVer ==
>>
>>
>> Every POM parent has three digits, X.Y.Z.
>>
>>
>> The X digit is "major" and when incremented indicates a breaking
>> change of some sort: either A) plugin config changes requiring
>> downstream changes, or more commonly B) major SemVer dependency
>> version bumps (e.g., managed scijava-common version updated from
>> 2.35.0 to 3.0.0). This would exclude 0.x and beta components though
>> (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to
>> 2.0.0-beta-28 without bumping pom-imglib2's X digit).
>>
>>
>> The Y digit is "minor" and incremented when dependency versions change
>> in a SemVer-compatible manner, or when plugin configuration is added
>> or improved.
>>
>>
>>
>> For critical bug-fixes where a given POM parent is somehow compromised
>> or broken, the third digit Z can be bumped before going to the next Y.
>> (See e.g. the recent pom-fiji 5.0.Z series of releases.)
>>
>>
>> == 2) Bread crumb version trail ==
>>
>>
>> The pom-scijava parent would have a single version digit. The
>> pom-imagej (which is the next POM down) would have two: the first in
>> lockstep with its pom-scijava parent, and the second being its
>> dedicated version digit. POMs which extend pom-imagej (i.e.:
>> pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the
>> first two in lockstep with pom-imagej and the third their own. And so
>> on down the line—e.g., pom-trakem2 would need four digits: the first
>> three matching the pom-fiji parent and the fourth its own.
>>
>>
>> == Pros and cons ==
>>
>>
>> Option 1:
>> [PRO] Semantic meaning. You can reason whether a given POM is somehow
>> "breaking".
>> [PRO] Succinctness. Every parent POM has at most three digits at any
>> one time.
>> [CON] Lack of provenance. Not obvious which parent POMs go together
>> without leaning on a tool.
>>
>>
>> Option 2:
>> [PRO] Clear provenance. You can trivially derive the chain of parent
>> POM versions.
>> [CON] Lack of semantics. Harder to tell which POM parent releases
>> might break backwards compatibility.
>> [CON] Aesthetics. More than 3 digits in a version string may not be
>> desirable.
>>
>>
>> Note that either way, we are in the process of creating a
>> scijava-maven-plugin goal to dump all the component version properties
>> associated with a given parent POM.
>>
>>
>> Since either scheme is consistent and useful, we want to institute
>> whichever scheme will annoy everyone less. ;-) So which do people like
>> better: SemVer or breadcrumbs?
>>
>>
>> Thanks,
>> Curtis
>>
>>
>>
>> [1] The 5.x POM versioning approach was an attempt to achieve _both_
>> options above, but Mark & I realized today that the two goals are
>> rather mutually exclusive. That is, we cannot keep POM parent versions
>> fully in lockstep while also maintaining a SemVer versioning scheme.
>> --
>> --
>> Please avoid top-posting, and please make sure to reply-to-all!
>>  
>> Mailing list web interface: http://groups.google.com/group/fiji-devel
>>
>> ---
>> You received this message because you are subscribed to the Google
>> Groups "Fiji-devel" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to [hidden email].
>> For more options, visit https://groups.google.com/d/optout.
>
> _______________________________________________
> ImageJ-devel mailing list
> [hidden email]
> http://imagej.net/mailman/listinfo/imagej-devel


_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel
Reply | Threaded
Open this post in threaded view
|

Re: Opinion needed: POM parent versioning

Stephan Preibisch-2
In reply to this post by Tobias Pietzsch-2
I also vote for SemVer, we got used to it :)

On Nov 17, 2014, at 15:31 , Tobias Pietzsch <[hidden email]> wrote:

Hi Curtis,

I would prefer SemVer, but mainly because this seems closer to the way its currently done and I’m getting used to that way. So really no strong opinion at all.

What would be nice would be some kind of notification when new pom parents are released. When revisiting some projects I haven’t been working on for a while, I often find myself checking maven.imagej.net to find out, eg, what the latest pom-fiji version is, so that I can use the latest and greatest as a parent. Is there already some mailing-list or similar in place that sends such release notifications?

best regards,
Tobias

On 17 Nov 2014, at 20:39, Curtis Rueden <[hidden email]> wrote:

Hi everyone,

This is a question for anyone consuming the pom-* parents of the SciJava software stack.

We want to start versioning these POM parents according to consistent rules. (Unfortunately, right now, the approach is vague and potentially inconsistent [1].) We came up with the following two possible schemes, and would like your feedback on which one you would prefer.

== 1) SemVer ==

Every POM parent has three digits, X.Y.Z.

The X digit is "major" and when incremented indicates a breaking change of some sort: either A) plugin config changes requiring downstream changes, or more commonly B) major SemVer dependency version bumps (e.g., managed scijava-common version updated from 2.35.0 to 3.0.0). This would exclude 0.x and beta components though (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to 2.0.0-beta-28 without bumping pom-imglib2's X digit).

The Y digit is "minor" and incremented when dependency versions change in a SemVer-compatible manner, or when plugin configuration is added or improved.

For critical bug-fixes where a given POM parent is somehow compromised or broken, the third digit Z can be bumped before going to the next Y. (See e.g. the recent pom-fiji 5.0.Z series of releases.)

== 2) Bread crumb version trail ==

The pom-scijava parent would have a single version digit. The pom-imagej (which is the next POM down) would have two: the first in lockstep with its pom-scijava parent, and the second being its dedicated version digit. POMs which extend pom-imagej (i.e.: pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the first two in lockstep with pom-imagej and the third their own. And so on down the line—e.g., pom-trakem2 would need four digits: the first three matching the pom-fiji parent and the fourth its own.

== Pros and cons ==

Option 1:
[PRO] Semantic meaning. You can reason whether a given POM is somehow "breaking".
[PRO] Succinctness. Every parent POM has at most three digits at any one time.
[CON] Lack of provenance. Not obvious which parent POMs go together without leaning on a tool.

Option 2:
[PRO] Clear provenance. You can trivially derive the chain of parent POM versions.
[CON] Lack of semantics. Harder to tell which POM parent releases might break backwards compatibility.
[CON] Aesthetics. More than 3 digits in a version string may not be desirable.

Note that either way, we are in the process of creating a scijava-maven-plugin goal to dump all the component version properties associated with a given parent POM.

Since either scheme is consistent and useful, we want to institute whichever scheme will annoy everyone less. ;-) So which do people like better: SemVer or breadcrumbs?

Thanks,
Curtis

[1] The 5.x POM versioning approach was an attempt to achieve _both_ options above, but Mark & I realized today that the two goals are rather mutually exclusive. That is, we cannot keep POM parent versions fully in lockstep while also maintaining a SemVer versioning scheme.

-- 
You received this message because you are subscribed to the Google Groups "scijava" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google Groups "scijava" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.


_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel
Reply | Threaded
Open this post in threaded view
|

Re: [fiji-devel] Re: Opinion needed: POM parent versioning

Curtis Rueden
Hi everyone,

Thank you for the feedback. We will transition to SemVer for parent POMs as new versions are released.

Today I have released pom-fiji version 6.0.0 to commemorate the occasion (and because a release was needed anyway in preparation for the impending Big Upload). It does not have any breaking changes per se, but I thought it best to start the SemVersioning at a new major digit. Also, I wanted to distance it from its pom-imagej parent a bit, which is still at 5.1 for now. (And given this scheme, it will not be possible for pom-imagej to ever "catch up" to pom-fiji—whenever pom-imagej has a major version bump, the downstream pom-fiji will, too.)

Regards,
Curtis

On Tue, Nov 18, 2014 at 12:49 PM, Ignacio Arganda-Carreras <[hidden email]> wrote:
Me too. +1 SemVer

On Tue, Nov 18, 2014 at 9:08 AM, Stephan Preibisch <[hidden email]> wrote:
I also vote for SemVer, we got used to it :)

On Nov 17, 2014, at 15:31 , Tobias Pietzsch <[hidden email]> wrote:

Hi Curtis,

I would prefer SemVer, but mainly because this seems closer to the way its currently done and I’m getting used to that way. So really no strong opinion at all.

What would be nice would be some kind of notification when new pom parents are released. When revisiting some projects I haven’t been working on for a while, I often find myself checking maven.imagej.net to find out, eg, what the latest pom-fiji version is, so that I can use the latest and greatest as a parent. Is there already some mailing-list or similar in place that sends such release notifications?

best regards,
Tobias

On 17 Nov 2014, at 20:39, Curtis Rueden <[hidden email]> wrote:

Hi everyone,

This is a question for anyone consuming the pom-* parents of the SciJava software stack.

We want to start versioning these POM parents according to consistent rules. (Unfortunately, right now, the approach is vague and potentially inconsistent [1].) We came up with the following two possible schemes, and would like your feedback on which one you would prefer.

== 1) SemVer ==

Every POM parent has three digits, X.Y.Z.

The X digit is "major" and when incremented indicates a breaking change of some sort: either A) plugin config changes requiring downstream changes, or more commonly B) major SemVer dependency version bumps (e.g., managed scijava-common version updated from 2.35.0 to 3.0.0). This would exclude 0.x and beta components though (so e.g. imglib2-realtransform could go from 2.0.0-beta-27 to 2.0.0-beta-28 without bumping pom-imglib2's X digit).

The Y digit is "minor" and incremented when dependency versions change in a SemVer-compatible manner, or when plugin configuration is added or improved.

For critical bug-fixes where a given POM parent is somehow compromised or broken, the third digit Z can be bumped before going to the next Y. (See e.g. the recent pom-fiji 5.0.Z series of releases.)

== 2) Bread crumb version trail ==

The pom-scijava parent would have a single version digit. The pom-imagej (which is the next POM down) would have two: the first in lockstep with its pom-scijava parent, and the second being its dedicated version digit. POMs which extend pom-imagej (i.e.: pom-scifio, pom-imglib2 and pom-fiji) would have three digits: the first two in lockstep with pom-imagej and the third their own. And so on down the line—e.g., pom-trakem2 would need four digits: the first three matching the pom-fiji parent and the fourth its own.

== Pros and cons ==

Option 1:
[PRO] Semantic meaning. You can reason whether a given POM is somehow "breaking".
[PRO] Succinctness. Every parent POM has at most three digits at any one time.
[CON] Lack of provenance. Not obvious which parent POMs go together without leaning on a tool.

Option 2:
[PRO] Clear provenance. You can trivially derive the chain of parent POM versions.
[CON] Lack of semantics. Harder to tell which POM parent releases might break backwards compatibility.
[CON] Aesthetics. More than 3 digits in a version string may not be desirable.

Note that either way, we are in the process of creating a scijava-maven-plugin goal to dump all the component version properties associated with a given parent POM.

Since either scheme is consistent and useful, we want to institute whichever scheme will annoy everyone less. ;-) So which do people like better: SemVer or breadcrumbs?

Thanks,
Curtis

[1] The 5.x POM versioning approach was an attempt to achieve _both_ options above, but Mark & I realized today that the two goals are rather mutually exclusive. That is, we cannot keep POM parent versions fully in lockstep while also maintaining a SemVer versioning scheme.

-- 
You received this message because you are subscribed to the Google Groups "scijava" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google Groups "scijava" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
--
Please avoid top-posting, and please make sure to reply-to-all!
 
Mailing list web interface: http://groups.google.com/group/fiji-devel

---
You received this message because you are subscribed to the Google Groups "Fiji-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.



--
Ignacio Arganda-Carreras, Ph.D.
Institut Jean-Pierre Bourgin, UMR1318 INRA-AgroParisTech
Bâtiment 2
INRA Centre de Versailles-Grignon
Route de St-Cyr (RD10)
78026 Versailles Cedex France

Tel : <a href="tel:%2B33%20%280%291%2030%2083%2030%2000" value="+33130833000" target="_blank">+33 (0)1 30 83 30 00 - fax : <a href="tel:%2B33%20%280%291%2030%2083%2033%2019" value="+33130833319" target="_blank">+33 (0)1 30 83 33 19
Website: http://sites.google.com/site/iargandacarreras/

--
--
Please avoid top-posting, and please make sure to reply-to-all!
 
Mailing list web interface: http://groups.google.com/group/fiji-devel

---
You received this message because you are subscribed to the Google Groups "Fiji-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].

For more options, visit https://groups.google.com/d/optout.


_______________________________________________
ImageJ-devel mailing list
[hidden email]
http://imagej.net/mailman/listinfo/imagej-devel