Hi.

On Fri, 10 Jun 2016 01:48:20 +0200, Jörg Schaible wrote:
Hi Gilles,

Gilles wrote:

[snip]

_Some_ developer(s) should be able to support whatever is in
development.
Otherwise how can it be deemed "in development"?

Just today, two issues were reported on JIRA:
   https://issues.apache.org/jira/browse/MATH-172
   https://issues.apache.org/jira/browse/MATH-1375

They, unfortunately, illustrate my point.

No, it does not.

MATH-172 is about an enhancement. Unfortunately no-one can currently
implement it, so we have to wait until someone can or the issue stays simply unresolved again. You've requested for help and that was the proper action. However, there has been no problem to release 3.0 in this state, so why
should it be a problem now for 4.0?

Because the context has changed: in 3.0 there was support, now there isn't.

MATH-1735 is a bug report for a problem which is currently not reproducible.
Again you did the right action, but without more input and without a
possibility to reproduce the problem, there's not much we can do. Again, why
should this issue prevent a release of 4.0?

The code in question should not have been in CM. [That was my position back
then (cf. archive).]

And every bug report for it is a reminder that unmaintainable code should
not be released.

Moreover what could be true for VFS is not for CM where there are many, many different areas that have nothing in common (except perhaps some ubiquitous very-low utilities which might be worth their own component
to serve as a, maybe "internal", dependency).

Also, compare the source basic statistics (lines of code):
               VFS      CM
Java code    24215   90834
Unit tests    8926   95595

All in all, CM is more than 5 times larger than VFS (not even counting
documentation).

Any why is size suddenly a problem?

Not suddenly.
I've raised this issue for years.  Please look at the archives!

[snip]

That's why I strongly favour cutting this monolith into pieces
with a limited scope.

Nobody objects, but if you look at vfs, it is still *one* Apache
Commons
component, just with multiple artifacts. All these artifacts are
released
*together*.

Sorry I'm lost, I looked there:
   http://commons.apache.org/proper/commons-vfs/download_vfs.cgi

And, it seems that all the functionality is in a single JAR.
[Other files contain the sources, tests, examples.]

Then look at commons-weaver.

Anyways, it is obvious that, in VFS, there is a well defined scope
(a unifying rationale).

No such thing in CM.

What I want to achieve is indeed to create a set of components that are
more like VFS!

Fine. But talk about artifacts, not components. Apache Commons Math is still *one* component of Apache Commons. It does not matter if you divide the code
into different artifacts as long as anything is released together.

I know.

What you can't seem to get to is that I consider it a bad idea to release
unsupported code.

I think that "I do not know (and nobody else does)" is not an acceptable
answer to user requests.
If we _know_ that some parts of the code would be unsupported (such that it would elicit this kind of answer for bug reports), then it's _deceiving_ to
release that code.

Individual release cycles for the different parts can only happen if Math is TLP, but not in Apache Commons. We will certainly not allow and create again
any sub-umbrellas (search the Jakarta archives).

Who talked about sub-umbrellas?  I didn't.

I've explained that
 1. CM cannot be released as it was before
 2. for some parts, the necessary _minimal_ support has "disappeared"
 3. some parts can be turned into independent components (with _full_
    support)
 4. Some people are ready to perform the necessary steps in order to
    create these components

Please comment on how this contradicts Commons policy.

This is particularly obvious with the RNGs where there is one unifying
interface, a factory method and multiple implementations.
[Of course, in that case, the new component will be much simpler than
VFS (which is a "good thing", isn't it?).]

Turning math into a multi-project has nothing to do with your
plans to drop mature code,

I am not dropping anything (others did that); I am stating facts and I now want to spend my time on something (hopefully) worth it. [Working
to modularize unsupported code is a (huge) waste of time.]

Also, in the case of CM, "mature code" is meaningless as an overall
qualifier: some codes are
  * new (and never released, e.g. 64-bits-based RNGs)
* algorithms introduced relatively recently (and perhaps never used) * old (and sometimes outdated and impossible to fix without breaking
    compatibility)
  * mostly functional (but impossible to maintain, cf. MATH-1375)
* resulting from a refactoring (hence even when the functionality has
    existed for a long time, the code is not "mature")

IMHO, maturity should be visible in the code. It's an impression that
builds up by looking at the code as a whole, and coming to the
conclusion
that indeed there is some overall consistency across files and
packages.

Within some CM packages: yes (even if "mature" would certainly not mean
free of sometimes serious problems).

Across the whole library: certainly *not*.
[For reasons I could expand on. But I did several times (cf. archives)
without succeeding in changing course.]

because you (and currently no-one else) cannot
answer questions to its functionality.

See the first post in this thread, in the part about gradually
re-adding
codes if and when they are supported by a new team.

What you talk about is a complete new component without a proper upgrade
path for users of Math 3.x.

"Commons Math" is a dead end.  Is it that which you did not get?

There is "Commons" and there are "math codes" implementing various
functionalities, some in good shape, which I want to help release,
some in bad shape (for numerous reasons which you don't know about
and don't seem to want to hear about) which I'm not going to help
release as long as they are in that state.

You wanna use the new stuff for complex numbers?
Well, adjust your code to the new structures in commons-math-complex-4.0.

No.  It should be "commons-complex-numbers-1.0" (or perhaps "0.1" if
that's allowed).

Oh, you also want to use genetic algorithms?, Well, that part of the code should stick with commons-math-3.0, because we did not took it over for 4.0.
Maybe for 4.1 ...

Sorry, but for such a release I already propose my vote today: -1

So you prefer to sink whole work rather than be pragmatic about the
new reality.

How is that preferable to the user community?

In that case I'd move Math really into the incubator.

Please do.

There are several options:
 1. Go on with a monolithic Commons Math
 2. Break the codebase into (maven) modules
 3. Create (in the long term) an all-encompassing TLP
 4. Create reusable components (right now)

 [Add others if appropriate.]

Which is more useful, in your opinion?
To which are you going to contribute (multiple choice allowed,
of course)?


Gilles


Regards,
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