restrictions on web service linking?

Clark C. Evans cce at clarkevans.com
Tue Nov 21 19:01:54 UTC 2006


On Tue, Nov 21, 2006 at 05:09:50PM +0100, Arnoud Engelfriet wrote:
| And *if* you agree that an application is a derivative of its
| libraries, then OSD 9 permits putting restrictions in the
| library license such as "if you distribute the application
| it has to be under the same license as this library."

Let us say in the year BC, there is a well-known specification for a
dynamic link library with a single export:

  readline(FILE *, char *, int buflen)
 
Let us say that shortly there after two parallel developments happen.
First, a GPL licensed application FooBar is created with a libfoo.so,
such that they are used together.  Let's say that libfoo.so implements
exactly this well-known 'readline' function, and nothing more.  The
FooBar application and libfoo.so are included on popular Linux
distributions, since they are "free" software.

Second, another group makes a far superior version of this dynamic
library they call libbar.so with wonderful buffering abilities, etc.
Since this person wants credit for their work, they use the old-style
BSD attribution license (incompatible with GPL).  This open source
library also becomes popular, and is put on that same Linux distribution
with FooBar.

Now, in the privacy of one's home, a user decides to "mv libbar.so libfoo.so"
since they've discovered that FooBar actually works after the copy, and
has greatly improved functionality.  Since this is done privately, the
author of FooBar doesn't care.

Then, one day, another person makes a different distribution of the
systems which causes FooBar to come configured to run with libbar.so
instead of libfoo.so (via a copy, symbolic link, or any other system
configuration at install time) as the FooBar author had anticipated.

The author of FooBar finds out about this, and demands that the one
distributing FooBar /w libbar.so cease and desist, since his code has
been incorporated into a whole which includes a part that is not
licensed under the GPL license (and more so, even incompatible).

Either I don't understand the GPL well enough, this isn't possible, 
I still don't get OSD#9, or, the GPL actually doesn't pass OSD#9 as it
being currently described.  Thoughts?

| Basically, in my view it just doesn't feel right to be able to
| set restrictions on independent works just because the application
| talks with them. You get all kinds of weird side-effects like
| open source browsers not being allowed to communicate with
| proprietary Web servers. 

I have tried to address this issue with the notion of Dependency, which
simulates the relationship between an application and a library upon
which it depends for its normal operation.

The test for dependency is to drop the communication channel between the
application and the component, if the application ceases to operate,
then there is a dependency.  In this case, since the browser could still
be used to visit other websites, its normal operation has not been
affected. Hence, the web browser is not dependent upon the web server.
In the converse case, since the web server could still handle requests
from other clients, the web server is not dependent upon the web
browser.  At least in this example, I don't see the issue.

Kind Regards,

Clark



More information about the License-discuss mailing list