I recently e-mailed David Smith of Revolution Analytics with a few questions about their relationship with the R-project, and how they handle R‘s source code. David mentioned, and I’m flattered that my email motivated an additional page on the Revolution website. Beyond this, I have no other relationship with the company.
I’d like to thank David and Revolution for their openness and willingness to interact with the open-source R community. David kindly responded with the following (reproduced with permission):
Q. Is Revolution R a “downstream” project of the R-project?
A. No. Our model is Open Core: we bundle proprietary components with the open-source R project. We do sometimes make minor changes to the R source code when we distribute R, but you couldn’t consider this a “downstream version”: we always update from the latest sources for R from the R Project (and re-incorporate any of our changes to the new version, where necessary). In general our preference is to contribute changes to R directly to the R project, which we’ve done several times in the past and will continue to do so.
Q. Can the community see Revolution’s changes/additions to R source code?
A. Certainly — all the changes are listed in the ChangeLog file in the GPL sources we distribute; we provide a link to those sources via email when you download Revolution R, and also from http://www.revolutionanalytics.com/downloads/
Q. How does Revolution sell programs that use R source code? Isn’t there a license issue?
A. We use an Open Core software model, which is an established business model around open-source software. Mark Radcliffe, the General Legal Counsel for the Open Source Initiative, helps us ensure we comply with all aspects of the GPLv2. He’s written about Open Core models here: http://lawandlifesiliconvalley.com/blog/?p=485
The ‘Open Core’ model (in my shallow understanding), is an emerging business strategy for companies using open-source software. In contrast with the strategy of say, Canonical (Ubuntu), businesses operating under the Open Core model will offer an open-source ‘base’ package, and then a commercially licensed suite of enhancements to the base package. In the case of Revolution R, the base package is simply R (perhaps with minor changes of the type David mentions above). The commercial enhancements to Revolution include, for example, the use of Intel’s Math Kernel Library (MKL) and compiling under an Intel compiler.
I took a moment to browse Revolution’s modifications to version 2.10.1 of R‘s source code (obtained from the link above). The changes between the two trees involved 92 files, 1010 insertions, and 224 deletions (according to diff). Browsing through the changes, I found most to be related to the Intel compiler, its extensions, and the MKL. In addition to file changes, there were many additional files. The changes and additions involved a total 544 files, 208691 insertions, and 319 deletions (according to diff). The majority of additional files result from the inclusion of the open-source JPEG library by the Independent JPEG Group, libpng, libtiff, and several other Windows-related fixes and extensions.