[computer-go] Collaboration project. Once again

Ron Goldman rgoldman at cs.stanford.edu
Sat Aug 5 18:41:13 PDT 2006


On Aug 5, 2006, at 5:54 PM, Jeff Nowakowski wrote:
> This is the commonly held belief, that if you don't link and  
> communicate
> via a standard interface (like exec or a network protocol), that  
> the GPL
> never applies to your work as a whole.  Could you read the license and
> show me where it says that?  Why is linking so special anyways?   
> It's a
> standard interface like anything else.

Jeff,

You are correct that the text of the GPL never makes it explicit.  
However if you look on the FSF website you'll find an FAQ that  
explains their interpretation:

http://www.gnu.org/licenses/gpl-faq.html#MereAggregation

What is the difference between "mere aggregation" and "combining two  
modules into one program"?

     Mere aggregation of two programs means putting them side by side  
on the same CD-ROM or hard disk. We use this term in the case where  
they are separate programs, not parts of a single program. In this  
case, if one of the programs is covered by the GPL, it has no effect  
on the other program.

     Combining two modules means connecting them together so that  
they form a single larger program. If either part is covered by the  
GPL, the whole combination must also be released under the GPL--if  
you can't, or won't, do that, you may not combine them.

     What constitutes combining two parts into one program? This is a  
legal question, which ultimately judges will decide. We believe that  
a proper criterion depends both on the mechanism of communication  
(exec, pipes, rpc, function calls within a shared address space,  
etc.) and the semantics of the communication (what kinds of  
information are interchanged).

     If the modules are included in the same executable file, they  
are definitely combined in one program. If modules are designed to  
run linked together in a shared address space, that almost surely  
means combining them into one program.

     By contrast, pipes, sockets and command-line arguments are  
communication mechanisms normally used between two separate programs.  
So when they are used for communication, the modules normally are  
separate programs. But if the semantics of the communication are  
intimate enough, exchanging complex internal data structures, that  
too could be a basis to consider the two parts as combined into a  
larger program.

----

Note that projects that use the GPL can clarify matters by explicitly  
excluding certain ways of interaction from causing a second program  
from being seen as extending the GPL work. For example Linux includes  
the following as part of its licensing:

    NOTE! This copyright does *not* cover user programs that use kernel
  services by normal system calls - this is merely considered normal use
  of the kernel, and does *not* fall under the heading of "derived  
work".

to make it clear that any applications written to run under Linux do  
not need to be GPL'ed.

So if the copyright holders for GoGui added a similar statement to  
their copyright that would assure anyone wanting to connect their Go  
engine to GoGui that their engine did not need to use GPL. I also  
agree with you that LGPL is often a better choice and promotes more  
sharing.

-- Ron --



More information about the computer-go mailing list