in reply to Using GPL'd Perl Modules in Commercial Software

IANAL and this is not legal advice.

One of the big grey areas in the GPL is the question of what a "derivative work" is. What I have heard is that there is rather little case law on this question, and so there are a lot of question marks. Lots of those question marks are about what does and does not constitute combining components into one whole work.

This memory is verified by the GPL FAQ which says that:

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 distinction between interacting but separate and combined is very fuzzy. But legally it matters a lot because it is the line between where you have copyright over the whole, and where you don't. Since the GPL by structure only of gives back some permissions taken away by copyright law, unless copyright applies the GPL has no effect.

If this seems very arbitrary, it is. After all copyright started in the English-speaking world as a grant of control to authors so that publishers could get what they used to get through censorship laws...