[R-pkg-devel] GPL + other licence

David C Sterratt david.c.sterratt at ed.ac.uk
Fri Apr 6 20:44:00 CEST 2018

Dear all,

I'd appreciate help with a licence conundrum I have with the geometry
package (https://davidcsterratt.github.io/geometry/) that I maintain.

The geometry package contains some functions (e.g. convhulln(),
delaunayn()) that wrap the Qhull library (http://www.qhull.org), which
has its own, non-GPL, licence. The geometry package includes this source
code, and wraps it in C files that have GPL licence headers.

The geometry package also has functions that are not derived from Qhull
code and which are licensed under GPL, including a number of functions
that are ports of the Matlab distmesh package, and some other useful
functions to do with triangulation and coordinate systems (e.g.
tsearch() and cart2bary()).

I inherited this situation when I took over maintaining the package 8
years ago, though I have added functions to both Qhull-derived and GPL

In October last year I submitted the latest version of the geometry
package, which adds quite a bit of useful functionality:

I received the following response from the CRAN maintainers:

  For the license. It is CRAN policy that a package has to have a single
  license. Can you manage to convince all copyright hoders (e.g. of
  Qhull) to relicense under GPL?

I tried persuading the author of Qhull. He replied:

  There's only one license and that's the one included with the code
  (COPYING.txt). Several years ago, I tried to clarify the license with
  the Univ. of Minn. but had no success. So I think the best approach is
  to keep the original license as is. It has not been an issue so far.

At the same time as I wrote to the Qhull maintainer, I wrote to the CRAN

  I have written to the Qhull maintainer, but I doubt he will want to
  change the license, since Qhull is used in proprietary software such
  as MATLAB. Assuming this is the case, we'll have to create a new
  package - I would need help with managing the change for dependent

The CRAN maintainers replied:

  Please try to find out how this can work.

In principle I could create a package containing only the functions
derived from Qhull (but still with GPL headers in the wrapper C files,
see e.g.,
But wouldn't this package still have to have two licenses, due to the
GPL headers?

I don't want to start on any package splitting without having a plan
agreed that I know will be OK for CRAN. It would be quite a bit of work,
as there are a number of packages that depend on geometry, so I would
have to check all the revdeps for functions that they call in the
geometry package. I would have to then perhaps write wrapper functions
in the geometry package to make sure any functions moved to a new
package still worked when called from revdeps.

I know the CRAN maintainers are busy, so any help from the list would be
much appreciated.

Best wishes,


David C Sterratt, Senior Research Associate
Institute for Adaptive and Neural Computation, School of Informatics
University of Edinburgh, 10 Crichton Street, Edinburgh EH8 9AB, Scotland, UK
http://homepages.inf.ed.ac.uk/sterratt - tel: +44 131 651 1739

The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.

More information about the R-package-devel mailing list