hyperpape wrote:As RBerenguel's link indicates, it's pretty common to think that it definitely does matter how the program is linked, whether it uses IPC, etc, etc. That may be wrong, but you're not really addressing what seems to be the prevailing opinion--you're just dismissing it out of hand.
Ok, perhaps my formulation was a bit misleading. I'm not saying the method of the communication is completely irrelevant. A statically linked program is definitely a derivative work, but linking via an IPC mechanism may still be a derivative work. Communication mechanism is one criterion, but not the only one.
I'm just trying to point out that merely the act of choosing a sufficiently loose linking method does not put you on the safe side.
From
http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#MereAggregation:
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.
The question is what is considered "intimate enough". If you invent a completely new communication protocol and modify the program to support it, that certainly qualifies as "exchanging complex internal data structures". If you use a standardized protocol (like in the GTP example), I'm pretty sure you're on the safe side, especially if the program already supports the protocol. Anything in between... who knows?
Quote from the GPLv2 (also quoted on the wikipedia article, emphasis mine):
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
...
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
...
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
So if you need to modify a program to work with your product, the situation is simpler: The whole is covered by GPL. That directly contradicts the example of Mike.
The relevant point here seems to be the distribution as a whole. If you distribute it separately, you're back to the question of whether the communication is intimate enough. Of course there is also the question what counts as "separate distribution". If you just produce two separate software packages, but any user must download both to get anything meaningful, then it probably depends on the judge whether that is considered separate distribution or merely an evasive action.