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:
- Inside a virtual machine
- Exposure of intellectual property
- Consequences of GPL dependencies
- Using a GPL library in commercial software
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?