10

I'm writing a commercial package that uses R (GPL) for its computation. The GPL FAQ clearly states that GPLed programming language interpreters do not impose licensing restrictions on the "program" (text file with R code). So far, so good.

Part of the package is compiled using Rcpp, which also uses the GPL. The next paragraph in the FAQ reads:

However, when the interpreter is extended to provide "bindings" to other facilities (often, but not necessarily, libraries), the interpreted program is effectively linked to the facilities it uses through these bindings.

It can be interpreted that R is providing a binding to the Rcpp libraries (Rcpp.dll in the windows package). The safe assumption is that this taints my code with the GPL, but is this really the right conclusion?

Part of my uncertainty is the tightness of the link between my code and Rcpp.dll. There are references to Rcpp in the dll, but I'm not proficient enough to know if these are references to the development environment or to calls being placed to symbols within the Rcpp library. If the former, then I believe that the Rcpp library is being linked by R and not by my library. I suspect the latter, though, since Rcpp provides a glue (sugar, actually) to simplify code-writing and execution.

There are countless related discussions related to the GPL in code distribution. To name a few:

NB: I'm generally a big supporter of OSS and have participated in development and distribution in the past. Questions of "protecting code" often raise hackles of open-source programmers, frequently resulting in heated debates over software philosophy. I recognize value on both sides and want to ensure that I'm meeting the letter and (if possible) spirit of the laws. I'm not fishing for a loop-hole in the license; I'm looking for help interpreting and placing it into context.

Are R packages that depend on Rcpp required to use the GPL?

5
  • Why did you post here, rather than at place where those actually involved with Rcpp would have seen it sooner? Commented Oct 21, 2016 at 15:02
  • 1
    I did (via email), and you responded soon after I posted this question. Thank you. And since this site is about "creating, delivering, and maintaining software responsibly" (in which licensing is bound), it is not inappropriate to ask here as well. I was not avoiding the "perfect" venue, Dirk, I was asking from multiple directions.
    – r2evans
    Commented Oct 21, 2016 at 15:28
  • Ok, reaching out directly is certainly useful, and I did not remember that you did. I was only concerned with you getting a relevant audience for your question, and I do not know anyone from our team reading this site. Commented Oct 21, 2016 at 15:29
  • 1
    Asking here was more about the "GPL inheritance" aspect of it than Rcpp programming. There are a couple of other dialects of this question (not asked): (1) GPL inheritance in general, (2) licensing of R packages without compiled code, and (3) licensing of R packages with C/C++ code (whether Rcpp or otherwise). In hindsight, my issue was more the third than it was specific to Rcpp. I'm getting a little better these days about how to ask questions more pointedly and clearly.
    – r2evans
    Commented Oct 21, 2016 at 15:47
  • Thanks for follow-up, and I hope you got your answers. I think (1) and (3) are pretty well understood because of the object code / linking aspect. (2) is a little different. Commented Oct 21, 2016 at 17:00

2 Answers 2

6

Yes, if you link your code with the Rcpp library and distribute the derivative work, your package will almost certainly be subject to the GPL. The answers to this related question apply to your situation.

Sometimes, the author of a work will offer a choice between commercial and open-source licenses (with a fee often required for the commercial option), but it doesn't appear that this is the case with Rcpp.

2
  • This is what I suspect as well, thank you for weighing in. The related question didn't address the issue of starting with an interpreter, but I think having links in my code to the Rcpp.dll library seals the deal. Thanks, @sifferman.
    – r2evans
    Commented Aug 29, 2014 at 17:44
  • 1
    I think that this answer is a bit over-simplifying; please see my answer below.
    – usεr11852
    Commented May 4, 2015 at 4:33
13

I believe that R packages that depend on Rcpp are not required to use GPL but rather to use a GPL-compatible license.

Reading the Rcpp-FAQ Section 1.5 clearly states that:

you are free to license your work under whichever terms you find suitable (provided they are GPL-compatible, see the FSF site for details).

That would mean that if one chooses to use for example the BSD-3-clause license he is perfectly fine to do so.

To add an important caveat: As Dirk has pointed out in the comments the aggregation of GPL-compatible licensed code and GPL-licensed code will have to be GPL-ed. One can find in gnu.org a good explanation of what is an aggregate and what is not. Notice that when you release a package you distribute only your code, that is why you can use any GPL-compatible license and not exclusively GPL.

7
  • 1
    The this part of the FSF FAQ clarifies: the aggregate is always going to GPL; you are however free to license your code under any compatible license. Commented Oct 21, 2016 at 14:48
  • Also, a casual scan of CRAN with its hundreds of packages using CRAN would have illustrated this quickly enough. Commented Oct 21, 2016 at 15:12
  • The answer is quoting somewhat selectively from [Question 1.5 of the Rcpp FAQ](). Better read the whole thing -- it is short. Commented Oct 21, 2016 at 15:28
  • @DirkEddelbuettel: Apologies, I do not understand what you are commenting about exactly. Is my answer that any GPL-compatible licence is sufficient, wrong? Do you aim to draw attention to the fact that hundreds of packages that use Rcpp do not always use GPL but might use different licences? (eg. BSD-3, Artistic License 2.0, MIT, etc.)
    – usεr11852
    Commented Oct 22, 2016 at 22:36
  • Your answer restates pretty much exactly what I say in the very Section 1.5 of the Rcpp FAQ. I just don't understand why you chose to quote a half-sentence when this section clearly needs more than one sentence. In aggregate all of this is true; you just don't say the important part. While "yes you can" (use a non-GPL license that is compatible) the key is that the aggregate work is still GPL'ed by the design of the GPL. Commented Oct 22, 2016 at 22:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.