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