(sorry for the delay)

On Sat, Oct 3, 2020 at 5:27 PM Karl Heinz Marbaise <[email protected]>
wrote:

> Hi,
>
> On 03.10.20 11:47, Thomas Broyer wrote:
> > Wait, you mean that you don't even follow your own rules for versions ⁉️
> > where milestones sit between beta and RC versions.
>
> Can you explain which rules you are referencing?
>

I meant those:
https://cwiki.apache.org/confluence/display/MAVENOLD/Versioning
https://github.com/apache/maven/blob/maven-3.6.3/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java#L356
https://github.com/apache/maven/blob/maven-3.6.3/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java#L48
and as shown by that command:
$ java -jar /opt/maven/lib/maven-artifact-3.6.3.jar 3.0.0-beta1 3.0.0-M1
3.0.0-RC1 3.0.0
Display parameters as parsed by Maven (in canonical form) and comparison
result:
1. 3.0.0-beta1 == 3-beta-1
   3.0.0-beta1 < 3.0.0-M1
2. 3.0.0-M1 == 3-milestone-1
   3.0.0-M1 < 3.0.0-RC1
3. 3.0.0-RC1 == 3-rc-1
   3.0.0-RC1 < 3.0.0
4. 3.0.0 == 3

The part M... is from our perspective a milestone in direction to a
> particular set of features that has nothing to do with not stable... for

example see https://maven.apache.org/surefire/maven-failsafe-plugin/



I'm for example using maven-release-plugin:3.0.0-M1 in production...
> You can take a look into the CI results
> (
> https://ci-builds.apache.org/job/Maven/job/maven-box/job/maven-release/job/master/
> )
> or the tests which are running on them:
>
> https://ci-builds.apache.org/job/Maven/job/maven-box/job/maven-release/job/master/lastCompletedBuild/testReport/
>
>
> The question based on that is comming up:
>
> What do you define as "unstable" ? All of those plugins are already
> running very long (I mean very long) in production environments ... so
> of course sometimes people find bugs ...
>
>
> As Enrico alrady mentioned ...we don't release unstable plugins... (but
> it drills down to the question: What is a unstable plugin?)


The question to me is: should anyone use a milestone version? What are the
"guarantees" compared to a "final" version?
If you're saying that there's no reason not to use a milestone in
production, that it's guaranteed to work just as well as a "final" version,
then why isn't it labelled "final"?
When I see a milestone version (or any "prerelease" version), I'm thinking
"OK, they're still working on it (hey, it's not even a release candidate),
let's use the latest "final" release" (in this case 2.5.3;
https://search.maven.org/artifact/org.apache.maven.plugins/maven-release-plugin
).
I also expect that if there are bugs in that latest "final" release that
possibly there could be a "point release" fixing them (2.5.4) before the
next major version is "stable" (3.0.0)
So of course such a "prerelease" could be "stable enough" to be used in
production, but who knows in which ways it could possibly break? or change
in backwards-incompatible ways in a future 3.0.0-M2 or the final 3.0.0?
Only people following the plugin's development closely can know.

So, if the message you want to send is "use that 3.0.something version,
it's absolutely OK for production use (and btw we'll fix 2.5.3 bugs in a
3.0.0-M2, not a 2.5.4)", then tag it as 3.0.0 (or 2.5.4 or 2.6.0), not
3.0.0-M1.
If you want to make it clear that some feature is not "stable" yet (in its
API/configuration, or possibly buggy), then you could add warnings in the
docs and even issue a warning at runtime if it's being used (I know people
don't pay attention to warnings, and I think mostly because Maven output is
quite/too verbose, but still).

-- 
Thomas Broyer
/tɔ.ma.bʁwa.je/ <http://xn--nna.ma.xn--bwa-xxb.je/>

Reply via email to