(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/>
