I believe we'll put ourselves into a corner with "0.1-incubating-SNAPSHOT".

The format has to be: <major>.<minor>.<incremental>-<qualifier>, as per
[1], i.e., no two dashes. If it is not, Maven resolution will get things
wrong by comparing strings instead of numbers: 10 becomes less than 2, etc.
Maven handles "-SNAPSHOT" qualifier specially; qualifier "-incubating-SNAPSHOT"
will not get that benefit.

Here's a very specific example from [1]:

Take the version release numbers “1.2.3-alpha-2” and “1.2.3-alpha-10,”
where the “alpha-2” build corresponds to the 2nd alpha build, and the
“alpha-10” build corresponds to the 10th alpha build. Even though
“alpha-10” should be considered more recent than “alpha-2,” Maven is going
to sort “alpha-10” before “alpha-2”.


There are several orthogonal decisions here:

1. How much version numbers do we need for now? I argue do don't need the
incremental part before the first stable release -- two numbers should be
sufficient. So, the format, before the first stable release, can be
<major>.<minor>-<qualifier>.

2. I don't think we need "incubating-SNAPSHOT" ever. For the most part,
both qualifiers communicate the same thing -- that this is not really ready
for primetime yet. For example, we can use -SNAPSHOT for the nightly build,
and "-incubating" for the actual releases while we are in the incubation
phase. Snapshots will not get released anywhere -- no reason for them to
carry "incubating" too; we'll just mess up resolution handling.

3. I found many projects in the Incubator that don't actually have
"incubating" in the version part. Some put it in the artifact id; others
put it in the name only; a few don't have it at all. I dislike the artifact
approach, and I'm neutral between name & version. Name is easier, however.

4. When we release the first stable version, I propose that it is marked as
2.0.0. Before that, we'll likely push several pre-release versions. We have
released 1.5.0 in Dataflow recently, and might release a few more. It might
be smarter to leave a few numbers for any such versions of Dataflow. So, we
could start with something like 1.9.0. I think 0.1 communicates more
clearly that this is a pre-release version.

To summarize, I think a good proposal is as follows:

Start with 0.1-SNAPSHOT. This goes into Beam's parent pom.xml. When we
release 0.1, we override it to 0.1-incubating. At that time, the pom goes
to 0.2-SNAPSHOT, and we release it as 0.2-incubating. Sometime before the
first stable release post incubation, we change it to 2.0.0-SNAPSHOT, and
release as 2.0.0.

[1]
https://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-syntax.html

On Sun, Mar 20, 2016 at 12:31 PM, Jean-Baptiste Onofré <j...@nanthrax.net>
wrote:

> Hi beamers,
>
> as the project is more and more visible, and we begin to see incoming
> contributions, I think we really have to move forward on the code cleanup
> and polishing.
>
> So, I'm updating PR #46 about renaming the packages and re-organizing the
> folders. I will update the PR by tomorrow.
>
> In the mean time, I sent an e-mail about the version. Right now, I
> proposed 1.5.0-incubating-SNAPSHOT. Some expressed to start with
> 0.1-incubating-SNAPSHOT.
>
> I think 0.1-incubating-SNAPSHOT makes sense. Please, if you disagree, let
> me know, else I will update the version in PR #46.
>
> Thanks
> Regards
> JB
> --
> Jean-Baptiste Onofré
> jbono...@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Reply via email to