Re: [math] refactoring math4

2023-07-14 Thread Gilles Sadowski
Hello.

Le ven. 14 juil. 2023 à 16:15, Dimitrios Efthymiou
 a écrit :
>
> Hello devs. I need a little help.
>
> 1--Say that I want to implement a new feature/function that, technically
> exists in the math4 or legacy, but it doesn't exist in commons- geometry or
> commons- numbers. What is the protocol? Do we create a ticket on math4 and
> put the new code in math4 and ignore the geometry/numbers projects?

If it's in the [Math] component, but some rationale can be found that it
should be in one of the other (newer) components ([RNG], [Geometry],
[Numbers], [Statistics]), then it should be ported there (once done, the
functionality is removed from [Math]).

The underlying principle is that the newer components are more
focused (than [Math]), so that a contributor interested in that subject
matter is more likely to be able to help clean up all the issues that block
the next release
As you can see, there are many long-standing issues in [Math] because
it covers many subjects, and no one is sufficiently interested in everything
(or has enough time) to do the necessary refactoring.

If the feature is in "legacy", but is part of larger "subject matter" which a
refactoring could implement in a modular way (reducing dependencies
and removing circular ones), the new package should be moved to a
(maven) module of its own.  [That has been done already for several
packages for which it was relatively straightforward (because they were
not involved in circular dependencies).]

As I've already suggested, the next task on that list would be to refactor,
fix and move the "clustering" functionality (adding documentation, and
JMH benchmarks along the way).

Another pending task is the refactoring of the "genetics" package.  [See
the associated JIRA reports.  There is also a long ML thread about it (cf.
"dev" ML archive).]

>
> 2--Can contributors remove code from math4 and move it to the other new
> math projects?

Sure.
In practice, we can do it now because we released a "beta" version of 4.0;
hence we allow ourselves to break compatibility until the a non-beta version
is released.

> I see in GitHub for commons-math it says: "Functionality
> still within "Commons Math" is gradually being modularized and refactored".
> Is there documentation that explains the precise way math4 should be
> refactored and modularised and who is allowed to even touch math4 and move
> functionality out of the library?

You can do whatever you want with your copy/clone of the repository.
Of course, as you noticed, the issue is to have a committer agree to
merge your changes back to the ASF's copy.
Prior discussion avoids people doing useless work (although sometimes,
no agreement could be found a priori, yet a developer might wish to do
the work anyway; that's how the [RNG] component got started).

>
> 3–Are the math-related projects (like numbers and geometry) final?

The math-related (so called because they were initially comprising
refactored code ported from [Math]) components are
 * [RNG] (main maintainer: Alex)
 * [Numbers] (main maintainer: Alex)
 * [Statistics] (main maintainer: Alex)
 * [Geometry] (main maintainer: Matt)

The PMC did not agree to create more [Math] spin-offs.
So, the second best option was to modularize [Math].  Perhaps in
the future, some modules will grow sufficiently so as to be worthy
of their own component...

> For
> example, where is calculus gonna go?

In a module within [Math] (provided it does not enter in a dependency
loop with other modules).

> Is there gonna be a new project like
> commons-calculus? Same question for other math theories.

Currently: No (reason given above).

>
> 4--Are the submodules of the numbers and geometry projects final? Geometry
> has the commons-geometry-euclidean module and a few more. Will there be new
> modules added to the math-related projects, as time passes?

Sure (by definition, it's the goal of modularization), as long as the
new modules stay within the component's scope.
Of course, there are practical conditions to creating a new module.
Some are pretty straightforward: Thorough documentation, same
programming style as the rest of the code base, full coverage by
(Junit) unit tests, JMH benchmarks (if departing from an existing
implementation).
Some are more vague, like avoiding that the component becomes
the receptacle of code which no one wants to maintain.

Regards,
Gilles

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



[math] refactoring math4

2023-07-14 Thread Dimitrios Efthymiou
Hello devs. I need a little help.

1--Say that I want to implement a new feature/function that, technically
exists in the math4 or legacy, but it doesn't exist in commons- geometry or
commons- numbers. What is the protocol? Do we create a ticket on math4 and
put the new code in math4 and ignore the geometry/numbers projects?

2--Can contributors remove code from math4 and move it to the other new
math projects? I see in GitHub for commons-math it says: "Functionality
still within "Commons Math" is gradually being modularized and refactored".
Is there documentation that explains the precise way math4 should be
refactored and modularised and who is allowed to even touch math4 and move
functionality out of the library?

3–Are the math-related projects (like numbers and geometry) final? For
example, where is calculus gonna go? Is there gonna be a new project like
commons-calculus? Same question for other math theories.

4--Are the submodules of the numbers and geometry projects final? Geometry
has the commons-geometry-euclidean module and a few more. Will there be new
modules added to the math-related projects, as time passes?