Bug#990397: What are the development priorities for the csironn library? (was Bug#990397: depends on deprecated qhull library)
Alan W. Irwin
Alan.W.Irwin1234 at gmail.com
Sun Jul 4 09:16:56 BST 2021
On 2021-07-02 10:38+0200 Rafael Laboissière wrote:
> Dear PLplot developers,
>
> I am hereby forwarding a bug report filed against the Debian plplot package
> regarding the use of a deprecated Qhull library [1]. Conversion of the code
> to the reentrant version of Qhull needs more changes than merely linking
> against libqhull_r.so instead of libqhull.so and including
> libqull_r/qhull_ra.h instead of libqull/qhull_a.h [2], and should be done by
> the upstream authors.
Hi Rafael:
Since this email is primarily directed to the upstream Plplot
development list, I have generalized this discussion of how upstream
PLplot development should respond to Debian Bug#990397 to the new
subject line which is "What are the development priorities for the
csironn library?". I would value your input into that general
discussion since you are a former PLplot developer who at that time
had a lot of interest in that library and its dependence on libqhull.
You likely know all this stuff already, but to set up this discussion
for the benefit of the others here, this is a quick review why the
plgriddata routine and therefore PLplot depends on our csironn library, and
that library in turn depends on the libqhull library.
The lib/nn/README file documents that question from the historical
(2003!) viewpoint. To add to that from my own current perspective,
the fundamental issue appears to be that Pavel Sakov's free nn-c
library throughout its history including [it's latest
version](https://github.com/sakov/nn-c) has depended on [the triangle
library](http://www.cs.cmu.edu/~quake/triangle.html) whose licensing
terms are as follows:
"Please note that although Triangle is freely available, it is
copyrighted by the author and may not be sold or included in
commercial products without a license."
You (and other Debian developers) know a lot more about licensing
legalities than I do so please let me know whether this license means
in Debian packaging terms Triangle is non-free as asserted in
lib/nn/README and therefore nn-c is "contrib" rather than "free" in
Debian packaging terms.
Anyhow, as a result of that perceived (and likely real, but that needs
confirmation) licensing issue Joao stripped the version of the nn-c
library available in 2003 to just what was needed by plgriddata, and
replaced all calls to triangle library routines in that stripped
version with the equivalent libqhull calls. Anyhow it is that
stripped and triangle-replaced ancient version of nn-c that we call
csironn and that we have been maintaining (in a small way since 2003) as a free
(as opposed to contrib if the above licensing issue is confirmed) fork
of nn-c.
To help motivate further discussion of the subject-line topic would
you please briefly comment on the *potential* importance of the
csironn library in the free software world? My guess is you will find
in practice it is not important (at least at present) because nobody
knows about this PLplot gem, e.g., you will likely discover that no
other Debian package depends on our csironn library. However, do you agree
with me that situation is a real shame since the issue of
interpolating from non-gridded sample points to gridded sample points
is an important and fairly common issue that is nicely addressed by
our csironn library?
I would also appreciate your responses to the following comments and
questions concerning the new subject line topic:
* The original Debian Bug#990397 that started me thinking about this
general topic states
"your package builds and links against the non-reentrant version of
Qhull, which has been deprecated by Qhull upstream and is likely to
disappear soon."
However, I quarrel with that "likely to disappear soon" phrase since
on that subject the qhull developers say the following (from
<http://www.qhull.org/html/qh-code.htm#reentrant>):
"New code should be written with libqhull_r. Existing users of
libqhull should consider converting to libqhull_r. Although *libqhull
will be supported indefinitely* [emphasis mine], improvements may not be
implemented."
It is up to you, of course, but my feeling is you would be entirely
justified in closing this bug report because of the "supported
indefinitely" phrase above which completely contradicts the premise
of the bug report!
That said, from this language from the qhull developers I do agree use
of libqhull is (very lightly) deprecated. Therefore "it would be
nice" for libcsironn to change its dependence on libqhull to a
dependence on libqhull_r (as suggested by the libqhull developers and you)
since rentrancy although not the same as thread-safe often is a step
toward thread safety which is an extremely desirable library
characteristic. It does appear (from comments later in the above
URL) this change would be straightforward so this should be a nice
simple development topic for someone to implement.
* It "would be nice" to update our fork to the latest version of nn-c.
The reason I suggest this as a worthwhile goal is I assume that
Pavel's fairly constant development of nn-c since 2003 has found and
fixed more bugs in the nn-c code than we have found and fixed in our
fork of that code. As a short-cut to make this development topic
easier, our fork could continue to ignore everything in nn-c that is
not relevant to the problem of interpolating from non-gridded sample
points to gridded sample points, but see the next item below. I haven't
looked at what would be required by this development topic, but my
guess is it could be implemented by simply replacing the
csironn routines with the corresponding nn-c routines while keeping
just the part of of the csironn routines that set up and call
the libqhull routines and/or fix bugs in the nn-c version of these
routines that are already in csironn and which have not already
been fixed by Pavel. So it might all end up as a glorious git conflict
resolution. :-)
* The above "would be nice" development topic should be done first,
but in addition it "would be nice" to not strip nn-c at all. My
guess is what was stripped was pretty minor stuff since the csironn
ability to interpolate from non-gridded to gridded sample points
captures all the essential functionality of nn-c. But regardless of
that question, the result should be that csironn should have all the
functionality of modern nn-c (i.e., it passes all nn-c tests) with
the only changes being conversion of *all* triangle library calls to
the equivalent libqhull calls.
I hasten to add I don't want to discuss this "vapour ware" with
Pavel until it turns into "real ware". However, if we accomplish
that goal (i.e., if the updated csironn library passes all nn-c
testing) I bet Pavel (who is a really approachable guy) would be
willing to adopt our changes right into nn-c (likely as an option),
and that would clear the way for that useful library to be packaged
by Debian as "free" rather than "contrib" and would also allow us to
abandon our fork (since it would have been merged back into
mainstream nn-c development) which I think would be a highly desired
outcome.
I have stated on this list before (but you may have missed that), I
work most efficiently on just one development topic at a time. And my
current primary development topic is getting the next release of
FreeEOS out the door and my two topics following that are (i) getting
the next libLASi release out the door using recent PLplot to
comprehensively test it, and (ii) getting the PLplot release out the
door.
In sum, because of these other development commitments I don't plan
for now to contribute much toward any of the above three "would be
nice" development topics for libcsironn other than discussing them.
But if you or anyone else here that was interested in libcsironn were
inspired by this discussion to create a patch to implement any of
those topics (or any other libcsironn development topic that
interested you), I would be happy to comprehensively test that patch
in a timely manner and (assuming that was a success) push that commit
to make sure your work gets into the next release of PLplot.
Best wishes,
Alan
__________________________
Alan W. Irwin
Research affiliation with the Department of Physics and Astronomy,
University of Victoria, Victoria, BC, Canada.
Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.org); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
More information about the debian-science-maintainers
mailing list