[PD] porting a Pd patch to Max license issues

Simon Wise simonzwise at gmail.com
Sat Mar 17 09:17:40 CET 2012


On 16/03/12 22:37, Bryan Jurish wrote:
> On 2012-03-16 05:58, Simon Wise wrote:
>> But generally this is not how an end user runs a Max executable ... they
>> do not have Max on their machine, the executable they receive includes
>> all required to run it. There are no Max "system libraries" to call, and
>> they do not have a "Max interpreter" on their system.
>
> No more does the usual windoof user have a Borland or VisualC compiler
> installed, nonetheless it's totally legitimate (from the GPL side) to
> compile GPL code with one of these closed-source, commercial software
> packages and distribute the resulting executables, provided only that
> the source code for the *program* remains under GPL -- the GPL doesn't
> claim that because someone used Borland C to compile a GPL'd program and
> shared the result that Borland C must be GPL: that would be absurd...

The relevant difference between a compiled C program and a Max executable is 
that the C libraries that the compiled C program links to dynamically are on the 
users system, and installed quite separately from the GPL program ... these are 
the exception referred to in the GPL as system libraries ... however _all_ 
libraries linked statically and included with the compiled C program must be 
open source and compatibly licensed if you want to distribute the resulting 
binary if _some_ of it is built using GPL code.

In the case of a Max executable the Max libraries, and the other Max objects 
that were in the patch, are not on the users system ... they are included as 
part of the executable. If parts of that executable are GPL and parts are 
incompatible with GPL then you may use it yourself (for example to run on 
another computer for which you do not have a Max license) but the GPL does not 
allow you to distribute it (for example give it to the person you wrote it for, 
so they can use it on a machine that does not have a Max license).


> Such commercial C compilers also often include local utility libraries
> with very lax redistribution conditions, so that their users can legally
> do things like that.  The Max license might deal with compiled
> executables differently or incompatibly; I don't know.

exactly - this ensures that the required libraries can be built and distributed 
as system libraries, or are perhaps in a form that is compatible with your main 
license and can be linked statically.

Max however ensures the opposite. The internal Max objects are very much not 
licensed with "lax redistribution conditions", nor are the parts of Max you will 
be linking with. You must buy Max to use it to interpret a Max patch directly, 
or to save/compile a patch as an independent executable. You can however run 
this saved Max executable without buying Max, or having any Max libraries in 
your system, or having any Max interpreter or virtual machine or whatever.

In both cases this is intentional, not something that is an accident of the 
implementation details. And it is quite unlike running a java app on a local 
java VM, or linking with a closed source library you have either been given or 
have purchased a license for and then installed locally.

I believe it is only distributing a saved executable which includes GPL code 
that is not allowed. Distributing a Max patch where some of the components are 
GPL (and which will be interpreted by Max locally) is probably fine. It seems 
reasonable to me to consider those GPL components in isolation when they are 
simply part of a patch which is in itself the source code for an interpreter.

But distributing the saved executable is the usual practice in the Max way of 
doing things, if you are making something for somebody else.

>
>>>> p.s. I would be happy if it was.
>>
>> I'd say, but I am not a lawyer, that it certainly is partly the case -
>> GPLed libraries can't be part of standalone executables that are
>> distributed to another party.
>
> ... unless the "corresponding source" of those executables is itself
> made available under the GPL... with which we're back to system libraries.

But the corresponding source cannot be made available ... parts of the source 
correspond to parts of the internal Max code, or to closed-source Max objects, 
and these parts are not available to be distributed ... the binary parts derived 
from this non-distributable code is included in the executable and is in no way 
a "system library" ... it is not on the users system independently, it is only 
present inside the executable in question! ... And this binary is not a compiled 
version of the patch ready to be "interpreted" by Max ... there is no 
interpreter installed locally to run it, yet it runs fine and quite independently.

You can, I think, distribute a Max patch which has some GPL objects in it (as 
long as you comply with the GPL for those objects and any restrictions on other 
objects). Then anyone can run it using Max as the interpreter, or compile it for 
their own use. But you cannot distribute an executable derived from some GPL 
code which is statically linked to some incompatible code. This is equally true 
of the output of a C compiler ... if the executable that results from compiling 
GPL code includes libraries that are incompatible with the GPL (rather than 
linking to external system libraries) then you cannot distribute the result.


>
>>> Sorry if that's bad news for you... as Stallman would very likely not
>>> hesitate to point out, __any__ kind of restriction on what your users
>>> can or cannot do with your software makes that software less free, and
>>> is therefore generally a Bad Thing (at least for the FSF and those who
>>> share its interests and goals).
>>
>> Yes ... to _use_ for anything, by anybody, without restriction. But
>> distribution of executables is very deliberately restricted (in a way I
>> personally think is very appropriate), and must be accompanied with the
>> full, properly licensable and reusable under GPL, code for the _whole_
>> executable.
>
> I agree -- in the case of C code it's pretty clear what is meant by
> "library", "linking", "using", etc., and of course what sort of
> creatures the "system libraries" are.  For other languages, those terms
> get murky very quickly.  I still think that a system library /
> interpreter / compiler exception might be made to apply, provided that
> the package source remained GPL, without trying to infect Max; but it
> seems to come down to a question of "linking" vs "interpreting/compiling".

The GPL in no way "tries to infect" any other code. That would be impossible 
anyway. A binary that is built from mixed GPL and more liberally licensed but 
compatible code must be accompanied by its complete source code - original 
licenses remain intact, not just the GPL parts.

This certainly restricts the ways that GPL code can be used significantly more 
than some other licenses do, since if you can't distribute your whole code then 
you can't use any GPL code. Projects may of course be tempted to restrict 
themselves to compatible code so that they are able to make use of the large 
body of existing GPL code.

>> With this in mind the motivation to port to Max may evaporate.
>
> Hmm... if we can keep up the debate on GPL arcana for another few
> weeks, I'd say it almost certainly will ;-)

 From the comments by the person who wrote the code it would seem he would 
prefer it if that motivation did evaporate. That was probably related to the 
reason he chose GPL as the license for his code in the first place.

The GPL is very clear in its intentions ... obviously any project that does not 
wish to restrict the use of their code in this way should not choose GPL (and 
should not make use of GPL code), and anyone looking for code to use without 
these restrictions should either look for code more liberally licensed, offer to 
buy a suitable license from the authors of some other existing code, or write 
their own code.

I don't think this is GPL arcana ... rather it is the very up front and explicit 
intention of the license, and presumably many coders who use it.

Trying to find loopholes to avoid this intention _is_ arcane and beside the 
point outside a courtroom, and hopefully doomed to failure inside one. Asking a 
coder to change the license if you suspect they don't care for this restriction 
and just applied GPL as some kind of default without even reading the preamble 
is reasonable, but don't be surprised if they do in fact care.


Simon



More information about the Pd-list mailing list