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.

Reply via email to