Hello.

Thanks for all the replies.
However, it seems that when a project could make use of the
flexibility provided by modularization, there are objections
to really embrace it:
 * Some don't like a partial release
 * Some don't like different version numbers
 * Some don't like releasing codes at different levels of
   "achievement"

Clearly there is no consensus.

IMHO, a particular useful feature of modularization is to
allow the respective versions to reflect the actual state of
the code contained in the corresponding module.
Otherwise the (single) version is misleading for some of
modules and meaningless for others.

I can understand that version varying across modules requires
careful attention; but is there a problem in principle?
Won't tools such as Clirr readily spot failures to comply with
compatibility requirements?

Using again the practical example, and trying to mix and match
opposite POVs, here is a suggestion.

Release all "productive" functionality:
 commons-rng-client-api -> 1.0
 commons-rng-core       -> 1.0
 commons-rng-simple     -> 1.0
 commons-rng-sampling   -> 0.8

Question for the latter (from the other thread):
When "sampling v1.0" is released, can it break compatibility
with "sampling v0.8" ?

Release code only useful for internal development (e.g.
checking that a contribution does degrade performance),
with a suffix that indicates so
 commons-rng-jmh -> 1.0-dev

There is no obligation to provide benchmarking code, is there?
Publishing results on the web site is already much more than
other components do.

Release usage examples with a version number and suffix
indicating that no comptatiblity is to be expected:
 commons-rng-examples -> 0.0.1-beta

[Is there a better "suffix"?]

WDYT?


Regards,
Gilles


On Fri, 25 Nov 2016 13:34:04 +0100, Jörg Schaible wrote:
Hi,

Stian Soiland-Reyes wrote:

I think I'll tend towards agreeing with Jochen here, rather get half the modules out early than fight ourselves with versioning workarounds if the
rest of the modules are not ready for prime time.

However I see concerns of selective "part releases" and reproducible
builds, so I would do this using Maven profiles - the release profile can
have a smaller <modules> set.

I then think all the modules that appear in the src release should also go to Nexus as binaries, even if they are more exotic "internal" modules. I would not mess around with selective deployment as it is a recipe for
maintenance nightmare and manual mistakes.

It only gets tricky if the leftover modules get a release cycle of their
own.

It is OK if the -bin release don't have all modules, that is more of a
convenience of jars that are useful out of the box.

The -src artifact is a different case. It should contain anything
independent of the published modules' artifacts (and it can, because it depends on the file patterns in the assembly). It is always a hassle if you have no direct possibility to fetch the matching source of the examples (and even the JMH stuff) for an individual release. Directing users to GIT is not
very convenient.

Cheers,
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to