Måns Rullgård wrote:
It's all about causality. Consider two scenarios, both involving
three programs, A, B and C.
Scenario 1:
1. A is written.
2. B written, and makes use of A. You argue that B is a derivative
work of A.
3. C is written, and is compatible with A. B is clearly not a
derivative work of C, since it existed before C.
Scenario 2:
1. A is written.
2. C is written, and is compatible with A. C is not a derivative
work of A. If it were, most of the GNU programs would be
illegal, since they would be derivative works of non-free
compatible programs.
3. B is written, and makes use of the interface shared between A and
C.
In the second scenario, if B is a derivative work of A, it must also
be a derivative work of C, since A and C are equivalent. This
conflicts with scenario 1, where B cannot possibly be a derivative
work of C. In both cases, we have in the end an identical set of
programs, and the derivedness relations between them must also be
equal. The only solution is that B is not derived from either A or C.
AFAIK, as B uses A, B depends on A. At runtime, B cannot depend on A and
C at the same time. So if B is distributed to be run with A that is GPL,
B must be distributed under GPL terms.
I don't know if in this case B is legally a derivative work of A but the
dependency seems to be enough to "spread" A's GPL license to B.
But IANAL ;)
--
Jonathan ILIAS