Re: [math] refactoring math4
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
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?
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?
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