[License-discuss] GPL and proprietary WebAPIs

Clark C. Evans cce at clarkevans.com
Tue Dec 20 16:55:30 UTC 2011

I have a broad question about various interpretations
of the GPL with regard to WebAPIs.  Let me start with
an example scenario.

1. Suppose that Super Visual is a clever GPL
licensed data visualization program (released by
Vendor A).

2. Now suppose that there is a closed-source, but
free to redistribute, data processing library,
called Correlate (by Vendor B), which takes a data
set and a parameters and does a clever and very
proprietary data transformation.

3. Now suppose that I modify Super Visual to
incorporate the functionality of Correlate.  It
works wonderfully and I wish to share my Visual
Correlate with my friend.

Is this permitted by the GPL?

a. Suppose my modifications involve static libraries, 
   the resulting Visual Correlate is a single 
   compiled executable.

b. Suppose Super Visual has a plugin mechanism, and 
   I use this internal API to load Correlate as a
   dynamic link library.  Let's assume I also ensure
   that the program still works but lacks the
   correlate functionality if the dynamic library
   isn't there.  I don't ship correlate.dll, but
   tell my friend about the easter egg.

c. Suppose that Super Visual doesn't have a plugin
   system, but I release a GPL licensed Super Visual
   /w Plugins that does.  Now can I release Visual
   Correlate using this plugin mechanism? 

d. Suppose that I make a SuperVisual+ (GPL licensed) 
   with "generic", if complex way, to invoke separate 
   executables for external processing using standard 
   input, output, and command line arguments.  
   Suppose also I get permission from vendor B to 
   create and freely distribute a closed source 
   Correlate command line executable that takes the 
   specially formatted inputs to return outputs that 
   the SuperVisual+ needs.  I'm all clear now?

e. Suppose that I instead wrap Correlate in a
   WebAPI (let's say I get permission of Vendor B to
   do this).  Then, my modification to SuperVisual
   creates a runtime dependency on the web service;
   it degrades nicely without Correlate functionality
   if you lack a network connection or haven't paid
   to access my web service.  Can I release this
   Visual Correlate under the GPL?

f. Suppose that SuperVisual is a web application,
   and I "wrap" it with a web service running on a
   different server (without modifying one line of
   code), parsing the output stream to add additional
   functionality provided by Correlate.  The final
   result is that my users experience a single
   integrated application that mixes both Correlate
   and Super Visual functionality.

My interpretation of the GPL is that in every case,
I'd be producing a modified version.  Even in the
latter case, my wrapper would be using very specific
(and hence intimate) information about how the
application works and therefore would qualify as a
new program based on the earlier work.

Hence, since my Visual Correlate must comply with the
GPL; and since I don't have the right to also release
Correlate under the GPL, I can't share my work (as
cool as it may be) with my friend -- even if he
already has a copy of the Correlate program.

I say this for a few reasons.  First, in section #1
of the GPL, "Corresponding Source" it says that the
corresponding source must include all source code
needed to run the object code.  Hence, I must also
include Correlate under the GPL.

Secondly, under section #5c, it requires that I
license the "whole of the work, and all its parts,
regardless how they are packaged".  Hence, my
attempts to work around the intent of the license are
foiled... packaging the Correlate function as a
WebAPI doesn't make it any less of the whole work.

Is this a correct assessment?  If not, where has my
logic gone astray?  I've talked to a few attorneys
lately about this situation, and I've gotten wildly
different answers.

While the specific example is completely hypothetical, 
the general situation isn't.  I'd remark that it's 
widely held that wrapping up proprietary functionality 
in a Web API is a valid way to evade the GPL's copyleft.  




More information about the License-discuss mailing list