commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dimitri Pourbaix <>
Subject [math] Go back to the basics
Date Thu, 23 Jun 2016 13:54:10 GMT

For the past 10 years, I have followed the discussions about commons-math
on the dev ML and I even contributed to the Levenberg-Marquardt code some
years ago.  Before I leave this ML because I am fed up, I would like to
give my final 1 cent comment.

What I have seen over these years are distinct categories of people with
antagonist approaches trying to build something together.  For the sake of
simplicity, I am going to assume that everybody is proficient in his/her
own field.

There is a group of people who initially needed some tool for their own
work.  Regardless of how many people over the whole world would need such
a tool, those contributors decided to add it to commons-math in order to
make commons-math community a de facto beta tester (ever wondered why some
releases were pushed out so strongly, so quickly?).  These contributors
usually did their best to comply with the commons rules of coding.  Their
assumption about the amount of beta testers for their very own contribution
was often too optimistic: the more specialised the code, the fewer the
users!  They nevertheless had the feeling of bringing their block to the
big monument, whether the monument is better/stronger/nicer with it or not
did not matter to them!

A second group does not seem to be so interested in getting a working code
that it is in getting a nicely written (maintainable!) code.  Every now and
then, someone appears on the list, wants to bring some contribution (e.g.
bug fixing) and notices that the whole code is not written in the way (s)he
would have written it.  That often results in several weeks of discussions
where only purely 'philosophical' arguments are exposed (I propose this
name for a method instead of that one, that class should belong to this
package rather than that one, ...).

For the past several weeks, I have seen yet another group who seems to
only care about how this monument should be displayed/dismantled/reshaped.
Should one drop an old working block because no one feels knowledgeable
enough to maintain it?

What about the actual users?  What do they/we want?  My first guess would
be that most of them simply do not want to have to reinvent the wheel: they
do not want to go back to a linear algebra 1st year college textbook to
write down their own version of LU decomposition!  They expect it to be
readily available somewhere.  However, I bet that if they are dealing with
a huge sparse ill-conditioned matrix, they will be willing to go to a
research paper to find out what the most appropriate algorithm could be and
to implement it if it is only described in pseudo code style.  Even if one
implements the best known algorithm for this type of matrices, one should
then be humble and accept that very few other Java users would actually be
interested in that code so why would you want to pollute the Java math Swiss

Interested in aggregating some new contributors?  Always nice but you will
eventually end up in the same situation: a few users will want to contribute
with their exotic needs, written in a way that will clash with the philoso-
phers who know better how things should be written!  At the next divorce
between the two, one will again end up calling the lawyers to settle who
takes the chairs and who keeps the dog.

There is presently no consensus, not even on what the content of the Swiss
knife should be!  Rather than rushing into several votes, first agree upon
what textbook should be used to define the core of any math library.

Dimitri Pourbaix.
Dimitri Pourbaix, FNRS                   *      Don't worry, be happy
Institut d'Astronomie et d'Astrophysique *         and CARPE DIEM.
CP 226, office 2.N4.211, building NO     *
Universite Libre de Bruxelles            *      Tel : +32-2-650.35.71
Boulevard du Triomphe                    *      Fax : +32-2-650.42.26
  B-1050 Bruxelles                        *        NAC: HBZSC RG2Z6     *

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message