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?


Re: Are any of these types of projects needed?

2023-07-14 Thread Gilles Sadowski
Hi.

Le ven. 14 juil. 2023 à 03:20, Dimitrios Efthymiou
 a écrit :
>
> The intended audience is the devs on this maillist.

People on this ML are mostly the developers of the Commons components:
https://commons.apache.org

> It is like market
> research to get the pulse of the community on these ideas to see if there
> is at least one that I could apply for in the incubator.

Do you mean the ASF incubator:
https://incubator.apache.org/cookbook/
?

If so, your first step would be to browse the ASF projects:
https://www.apache.org/index.html#projects-list
in order to find which ones that target the fairly specific
domains in your list.

If you mean to work on a "Commons" component, there are
different approaches, depending on whether the component
is "active" or in the "sandbox" (like "Graph").
For active components, development is usually incremental
and within the current "roadmap" (though it is often implicit).

>
> No, i am not working on all of these. I just presented ideas so that I get
> some feedback. Maybe some people will say: "yes, an open source java-based
> eCommerce platform will be in demand", you know?

No, you won't get that kind of feedback on this ML.

> Same with the other emails
> about math functions. Maybe some people from math or non-math commons
> libraries may point out that they would need some of those functions.

It might seem so, but it is not; if you on the one hand, you list the
"functions"
out of context ("use case"), and on the other you list either large
domains (like
"quantum computing", or "physics"!), there is an enormous "gap"...
Most "Commons" components are domain-agnostic but (each) focused on
specific kinds of utilities (like "collections", "file compression", "image file
formats", "random number generators", ...).  You have to fill the "gap" by
finding out where in those components, your contributions would find a
"natural" home.

"Commons Math" is probably the least "focused" component; it was a main
reason for the "spin-off" components.  Modularization is a big ongoing task
(cf. release notes of CM v4.0-beta1) for which help is welcome.

>
> Lastly, are there any math libraries that do symbolic math using functional
> interfaces? For example can I use commons math to give it a function that
> represents x^2, differentiate it and as a result get another function that
> represents 2x? I am talking about symbolic math that Wolfram Mathematica
> does.

As I noted in a previous email, there is some related functionality in
package "o.a.c.math4.legacy.differentiation".  As said, it would be great
to have this code refactored, providing an easier API (there was a JIRA
report about it, IIRC) and moved to its own module.

>
> Thank you for the time you spent on going through the emails. I did some
> pull requests implementing some things and they kept being rejected. So, (i
> think it was you that suggested it) to ask the community which math
> functions they would like to see implemented

Sorry if it was not clear; there is some misunderstanding which the above
has hopefully clarified.

Here, the "community" is mainly "those who do the work".  So, as Alex
wrote: "you develop code that you will use".  However, you can also help
by improving things that were identified as problematic (like the lack of
modularization in the "legacy" packages of CM or any bug reported on
JIRA).

Regards,
Gilles

>
>>> [...]

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



Re: Are any of these types of projects needed?

2023-07-14 Thread Alex Herbert
I would suggest you develop code that you will use. As volunteers we
have a main focus for our interests and put work in where we can, or
where it also benefits us back.

Contributions of large functionality are typically from an existing
project that would like to donate mature code to the ASF. This can go
through the process of becoming incorporated into the ASF as a new
project.

Contributions of small functionality are typically from a contributor
that had a specific need, could not find it in Java and created their
own. The Commons project is focused on all aspects of reusable Java
components. As such you can find similar functionality in other
programming languages. A contribution is more likely to be welcomed if
you can show examples of the same functionality in the core libraries
of other programming languages. This is a good acid test of what a
large number of programmers may require. For all of your suggestions
some feedback would be to put the question into a search engine: How
do I do ... in [Java|R|Matlab|Python|JavaScript|C++|etc]. If you find
Java has some missing topics then this could be a focus to start a
discussion on the dev mailing list.

Note that the ASF is not a place to host code that does not have
anyone using it. That is not productive to forming a developer
community.

Regards,

Alex


On Fri, 14 Jul 2023 at 02:21, Dimitrios Efthymiou
 wrote:
>
> The intended audience is the devs on this maillist. It is like market
> research to get the pulse of the community on these ideas to see if there
> is at least one that I could apply for in the incubator.
>
> No, i am not working on all of these. I just presented ideas so that I get
> some feedback. Maybe some people will say: "yes, an open source java-based
> eCommerce platform will be in demand", you know? Same with the other emails
> about math functions. Maybe some people from math or non-math commons
> libraries may point out that they would need some of those functions.
>
> Lastly, are there any math libraries that do symbolic math using functional
> interfaces? For example can I use commons math to give it a function that
> represents x^2, differentiate it and as a result get another function that
> represents 2x? I am talking about symbolic math that Wolfram Mathematica
> does.
>
> Thank you for the time you spent on going through the emails. I did some
> pull requests implementing some things and they kept being rejected. So, (i
> think it was you that suggested it) to ask the community which math
> functions they would like to see implemented
>
> On Fri, 14 Jul 2023, 02:03 Gilles Sadowski,  wrote:
>
> > Dimitrios,
> >
> > As requested several times, could you please add the "component"
> > prefix to the "Subject: " line, to signal to the intended audience?
> >
> > What's the purpose of the list below?
> > Are you developing all of those applications?
> >
> > Regards,
> > Gilles
> >
> > Le ven. 14 juil. 2023 à 02:54, Dimitrios Efthymiou
> >  a écrit :
> > >
> > > Java-based ECommerce platform
> > >
> > > Graph and network theory library
> > >
> > > Operations research or management science or mathematical programming
> > > library
> > >
> > > Calendar library with many useful methods that the java datetime API
> > > doesn't provide off-the-shelf
> > >
> > > Finance library including financial engineering
> > >
> > > User management (not apache shiro) i.e. account management, 2-factor
> > auth,
> > > forgot/reset password, security questions and more
> > >
> > > Web utilities from cookie service to device recognition to email service
> > > and more
> > >
> > > Image manipulation library
> > >
> > > Parallelism library for CPU and GPU parallelism
> > >
> > > Quantum computing library
> > >
> > > AdminTool platform. Imagine grafana, but with a lot of prebuilt and
> > > extensible tools
> > >
> > > Physics library
> > >
> > > Client SDK builder by taking API specs and generating java SDKs,
> > JavaScript
> > > SDKs, python etc.
> > >
> > > Transformer of MySQL data to MongoDB and vice-versa. Same for other kinds
> > > of databases
> > >
> > > Blockchain library
> > >
> > > Query Profiling Plugin: A plugin that tracks and logs all database
> > queries
> > > that are executed by the application. It could highlight inefficient
> > > queries, and also track and display query execution times.
> > >
> > > Health Check Plugin: A plugin to perform various health checks on the
> > > application and its dependencies, such as checking database connectivity,
> > > ensuring required services are running, checking disk space, etc. This
> > > plugin can expose health check endpoints that return the status of your
> > > application and its dependencies. This can be useful for monitoring and
> > > automated deployment scenarios.
> > >
> > > Scheduled Tasks Monitoring Plugin: This plugin could provide a unified
> > view
> > > of all the scheduled tasks in your application and provide information
> > like
> > > when each task last ran, whether it