Many issues have been raised here and I cannot tell the direction
people are working now on the PR. So here is my current thinking,
which may be a +1 to some things or may be different.
1. Versions
- This seems odd: 0.1.0-incubating < 0.1.0-SNAPSHOT
It mostly shouldn't matter but seems better to have the release version
greater than snapshots, so plain "0.1.0".
- Snapshots version "${project.version}-SNAPSHOT-${shorthash}" is nice. It
loses the magic behavior of "SNAPSHOT" but adds cacheability and
traceability. I think the rare cases where there is a downside can be
easily avoided. I have not done this with maven before, but the maven
buildnumber plugin seems to be just for this purpose.
- There are some version standards which always require three versions.
Even though for 0.x versions a patch/incremental version is redundant,
and
I agreed to drop it on a PR thread, I have a read more carefully and
based
on this think we should just add a redundant 0 to make it 0.x.0
2. GroupId
- I favor one groupId "org.apache.beam". It is easier to read and use.
Maybe if we had hundreds of artifactIds it would be different.
3. ArtifactIds
- Examples: probably fundamentally for a particular language. I favor
including "java" in the name for example artifacts. For these the code is
what matters.
- Non-examples: maven central and the JVM are cross-language. Unless there
is a technical reason that other languages cannot work, I do not like
having "java" in the name. I do understand trying to leave space for a
more specialized Scala or Clojure SDK, but they can still name theirs
including "scala" or "clojure" without conflict. More likely they should
come up with a clever name for their DSL :-)
4. Parent poms
- As shallow and minimal as possible. They obfuscate configuration and can
introduce spurious coupling when they do too much. I am a bit lost as
to where we have them, and whether they are just driving mvn to build
independent codebases (which is fine with me) or they are really adding
coupling.
- Is it possible to avoid these ending up on Maven Central? It adds a lot
of cruft to browsing the repo.