[License-discuss] GPL and proprietary WebAPIs
Clark C. Evans
cce at clarkevans.com
Fri Dec 23 05:10:38 UTC 2011
On Thu, Dec 22, 2011, at 02:00 PM, Lawrence Rosen wrote:
> Linking GPL software to proprietary software is legal as
> long as one doesn't create a derivative work.
Thank you for the helpful response. The hard part then is
knowing when a derivative work would be formed, or, perhaps
more difficultly, what is the derivative work constitutes.
(I know the analysis below is too generic to provide any
concrete answer, but I'd love to learn more about the
frequently misunderstood things about the GPL)
Let's say my original work O has been changed via a set of
non-trivial modifications M, where these changes provide
new/different functionality to the base work O and cannot
be used independently. In this case, it seems clear that
both M and the combined work, C = O+M are derived works.
At this point, if O is licensed under the GPL, to publicly
distribute M (and hence C), it should be licensed and
distributed under a license compatible with the GPL.
Now for the hard part. Suppose there is a proprietary work
P which M references and uses for a critical part of its
implementation and that P doesn't have any substitutes;
that is, the interface between P and M is proprietary,
and not a standard protocol with open implementations.
Does the GPL prevent the distribution of M if the work
it relies upon, P, isn't compatibly licensed?
I've heard some GPL advocates say that the answer depends
on the type of linking and if M is also derived from P.
Frankly, I don't understand either of these limitations,
the first is a technical detail. If M doesn't operate as
intended without P, why would it matter if M be a derived
work of P?
As a non-lawyer, I read section 5(c) where it says in order
to distribute the modifications M, you must license under
GPL "the whole of the work, and all its parts, regardless
of how they are packaged". Further, in section 1 of the
GPL it states the corresponding source must include "all
the source" needed to "run the object code". So, I'm quite
confused... it doesn't talk about the type of linking nor
does it seem to require that M be derived from P. I do
know that I can't operate O+M without P and this seems
sufficient to bar the public distribution of M.
I suppose it matters on the specifics of the given case.
> If GPL advocates insist upon distinguishing among types
> of functional linking, then talented software engineers
> will avoid disputes by building shims, APIs, or use
> dynamic linking to accomplish their functional goals.
I absolutely agree with this. It shouldn't matter at all
how the components are connected, via direct incorporation,
static linking, dynamic linking, or via WebAPIs. Those are
simply technical details and attempts to discuss type of
linking I think really distracts from the primary concern.
More information about the License-discuss