On Sun, 8 Nov 2015 00:45:38 +0000, sebb wrote:
So is the idea to change both the Maven artifact ID and package name
for the beta releases?

i.e. the stable releases would use

Maven AID: commons-math4
package: org.apache.commons.math4

and beta releases:

Maven AID: commons-math4-beta{n}
package: org.apache.commons.math4.beta{n}

Have I got this right?

I think so.

If so, there should be no possibility of jar hell.

It was the purpose, since any solution that could allow JAR hell
has been vetoed.

==

However, to test with the beta code will require the user to modify
their source code to use the new package names.
[And of course fix the source for any API breakages.]

It would be nice if the package rename could be avoided.

This would allow JAR hell.

It might be worth checking how the Maven classifier affects the classpath.
I suspect that Maven will not consider versions of artifacts whose
classifer does not match, so there won't be any danger of math4-beta1
being used instead of math4 unless the user specifically asks for
beta1.

There might be interesting to be able to use codes in "betaX" and code
in "betaY" at the same time.
Actually that would allow to have releases with different levels of
advancement in different areas of the library.

Assuming monolithic progress is the current situation, where refactored
code cannot be released because other areas are lagging behind.

There could still be a classpath issue if the application has another
jar that depends on Commons Math4 and that does not use the
classifier.
There would then be two incompatible copies of Math4 on the classpath.

Given that the beta releases should only be used by the adventurous,
this might be a risk worth taking to simply the testing.

JAR hell risk?  This has been repelled.
Which procedures would need simplification?


Gilles


On 7 November 2015 at 21:25, Phil Steitz <phil.ste...@gmail.com> wrote:
On 11/7/15 2:15 PM, Phil Steitz wrote:
On 11/7/15 12:58 PM, James Carman wrote:
As long as the maven coordinates follow suit, go for it. The community will let us know if it is a pain in the ass. Also, no need to worry about
even/odd with this approach
I think its better to use the even/odd approach with this package
naming trick to stay legal within even-numbered lines so we can then
keep cutting stable odd-numbered (e.g. 3.x) releases and we can
agree that when and even line (e.g. 4) stabilizes we can move to the
next odd number (5) and set expectation that releases in that line
(5.x) will be stable.  Then, e.g. 6. becomes a unstable API line,
etc. Otherwise you end up with sequences like 4.beta1, 4.beta2, 4,
4.1, .... 5.beta1, etc, with no idea when the API has stabilized
(most importantly what releases are going to get backward-compatible patch releases with bug-fixes). If we adopt the even/odd convention
both for [math] developers and users, we can then set the clear
expectation that it's OK to break compat all we like within
even-numbered (effectively beta) lines but once we cut an
odd-numbered release we are going to keep that API stable until the
next odd release.

Sorry, strike that.  I think I kind of missed James' point above.
As long as once you drop the .beta in a line you keep the API
stable, I guess it would be OK to dispense with the even/odd.  So
basically, we are just saying cut betas until the API stabilizes and
only commit to patch releases for releases without the .beta in the
package / release name.  I would be OK with that.

Phil

Phil
On Sat, Nov 7, 2015 at 12:29 PM Gilles <gil...@harfang.homelinux.org> wrote:

On Sat, 7 Nov 2015 16:52:21 +0100, Emmanuel Bourg wrote:
A roughly equivalent alternative would be to release beta artifacts
until the API stabilizes and use a different base package and
different
Maven coordinates for each iteration.

For example, commons-math 4.0-beta1 is released with the
org.apache.commons:commons-math4-beta1 coordinates and the classes living in the org.apache.commons.math4.beta1 package. Once we are
happy
with the state of the API we release org.apache.commons:commons-math4 with the org.apache.commons.math4 base package and we stop breaking
the
binary compatibility.
With this scheme, binary compatibility is in effect never broken since
the top-level package is different in each codebase:
  org.apache.commons.math4.beta1
  org.apache.commons.math4.beta2
  etc.

In my opinion the "beta" qualifier better conveys the unstable nature of the API than an arbitrary convention like "the whole 4.x line is
unstable".
"math4.beta1" would be fine too (although "math4u0" was a little
shorter).

Regards,
Gilles


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

Reply via email to