Subject: copyleft for network linking
From: "Clark C. Evans" <cce@clarkevans.com>
Date: Tue, 21 Nov 2006 01:35:13 -0500

After much thoughtful feedback, I am proposing another strawman, and I
hope it is met with your continued ear and critique.  I am hopeful that
something can be forged here.  I am encouraged by the writings of Bruce
Perns who, on 13 Mar 2002, said that restrictions based on "use" should
not be forbidden and went on to comment[1]:

    "It was an explicit goal when we created the OSD that the GPL be
    accommodated. An important goal of the GPL and a few similar licenses
    is to prevent the producers of proprietary software from parasitizing
    Free Software creations by including them in proprietary works. The
    GPL prevents the proprietary programmer from deriving from GPL works
    unless he is willing to give everybody all of the GPL rights on his
    derived work. This protection has made the GPL very attractive. It's
    our most-used license. 
    
    The GPL creators contend that a copyright permission is all they
    need to enforce the derived-works provision of the GPL, even in the
    context of dynamic linking. A future version of the GPL could deal
    with even-less-direct forms of linking such as daemonizing for the
    purpose of license-circumvention and use of object brokers to make a
    program that acts as if it's linked but actually occupies two or
    more separate address spaces."

Since this writing, serious progress has been made on one sort of
problem that Bruce mentioned, the "ASP problem".  Lawrence Rosen's Open
Source License v 3.0 addresses this issue with the "External Deployment"
concept, which triggers when the work is "made available as an
application intended for use over the network".

The second issue, as identified above, is indirect linking.   It is
becoming an increasingly troublesome problem and is hurting the open
source community.  Parasitic organizations take GPL'd software, add
"hooks" which call-out to proprietary functionality, and then sell the
components together or offer them over the web as a service.  I'm not
sure how to solve this indirect linking problem, which is why I've come
to this list to ask for your help.

The most important question for me at this time is if the Open Source
Initiative is willing to address this problem, and possibly approve a
license that extends the GPL "copyleft" to the new world of network
linking.  The followup question is, of course, how.

To clarify the idea, but not ready for an rigorous review, are a few
very flammable straw-man clauses (as appended to OSL v3.0):
    
X.1  Running System

     The term "Running System" refers to the Original Work and any
     Derived Works as executed by a computer.  The normal operation
     of the running system reflects the usual behavior of the system
     as expected by a user.  Crippled behavior or the unavailability
     of features is not considered normal behavior.

X.2  Dependency

     A dependency of the Running System on another system occurs
     when a communication channel (via packets, sockets, dynamic
     link, or whatever) is created between the two systems such that
     the normal operation of the Running System would stop if the
     communication channel were severed.

     By illustration, a web client connecting to a web service
     creates a communication channel.  However, a dependency is
     not created since the web service will continue to operate
     and serve other customers even if the communication channel
     were suddenly dropped.

     By contrast, a connection to a database system from the same
     web service would create a dependency, since a termination of
     the connection would typically cause the web-service to become
     unavailable and to stop functioning normally (at least as much
     as it depends upon the database).

X.3  Permitted Dependency

     A dependency is permitted if the link is to the operating
     system upon which the Running System is executed, considering
     that the definition of the operating system is limited to be
     of reasonable scope (managing hardware resources and providing
     hardware abstractions).

     A dependency is also permitted if the channel is made to a 
     system which is similarly licensed.  Exceptions are made for
     software which has been published under an open source license
     which have no further dependencies or whose dependencies,
     recursively are permitted under this definition.

X.4  Termination for Proprietary Dependency

     Your right to use the Original Work and any Derived Works under
     this license is terminated if You have caused the work to be
     used as a Running System with one or more Dependencies which
     are not permitted.

Kindest Regards,

Clark C. Evans

[1] http://www.mail-archive.com/license-discuss@opensource.org/msg04702.html