[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
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
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
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