<div class="gmail_quote">Thanks everybody for the useful insights.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Just to make clear my intent in choosing a GPL license:</div><div class="gmail_quote"><br>
<div>- keep the code free and open</div><div>- encourage the use of free and open software</div><div>- avoid the use of the code in proprietary environments.</div><div><br></div><div>So, this is what I aim for, and I thought (maybe erroneously?) that GPL would be helpful in this sense.</div>
<div><br></div><div>As Simon said &quot;... you cannot distribute an executable derived from some GPL code which is statically linked to some incompatible code.&quot;</div><div>This is the notion which I wish to rely on when distributing the code.</div>
<div><br></div><div>Now, the clarification of the GPL license is clearly not straight-forward, although I learned a lot with this thread, so thanks!</div><div>Probably, the simple fact that to produce executable code from the XS and distribute it one needs to go through all the terms of the GPL is enough to make someone&#39;s intention fail.</div>
<div>Specially &#39;cause the XS is not the Ocarina.</div><div><br></div><div>cheers,</div><div>Marco</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 16/03/12 22:37, Bryan Jurish wrote:<br>
&gt; On 2012-03-16 05:58, Simon Wise wrote:<br>
&gt;&gt; But generally this is not how an end user runs a Max executable ... they<br>
&gt;&gt; do not have Max on their machine, the executable they receive includes<br>
&gt;&gt; all required to run it. There are no Max &quot;system libraries&quot; to call, and<br>
&gt;&gt; they do not have a &quot;Max interpreter&quot; on their system.<br>
&gt;<br>
&gt; No more does the usual windoof user have a Borland or VisualC compiler<br>
&gt; installed, nonetheless it&#39;s totally legitimate (from the GPL side) to<br>
&gt; compile GPL code with one of these closed-source, commercial software<br>
&gt; packages and distribute the resulting executables, provided only that<br>
&gt; the source code for the *program* remains under GPL -- the GPL doesn&#39;t<br>
&gt; claim that because someone used Borland C to compile a GPL&#39;d program and<br>
&gt; shared the result that Borland C must be GPL: that would be absurd...<br>
<br>
The relevant difference between a compiled C program and a Max executable is<br>
that the C libraries that the compiled C program links to dynamically are on the<br>
users system, and installed quite separately from the GPL program ... these are<br>
the exception referred to in the GPL as system libraries ... however _all_<br>
libraries linked statically and included with the compiled C program must be<br>
open source and compatibly licensed if you want to distribute the resulting<br>
binary if _some_ of it is built using GPL code.<br>
<br>
In the case of a Max executable the Max libraries, and the other Max objects<br>
that were in the patch, are not on the users system ... they are included as<br>
part of the executable. If parts of that executable are GPL and parts are<br>
incompatible with GPL then you may use it yourself (for example to run on<br>
another computer for which you do not have a Max license) but the GPL does not<br>
allow you to distribute it (for example give it to the person you wrote it for,<br>
so they can use it on a machine that does not have a Max license).<br>
<br>
<br>
&gt; Such commercial C compilers also often include local utility libraries<br>
&gt; with very lax redistribution conditions, so that their users can legally<br>
&gt; do things like that.  The Max license might deal with compiled<br>
&gt; executables differently or incompatibly; I don&#39;t know.<br>
<br>
exactly - this ensures that the required libraries can be built and distributed<br>
as system libraries, or are perhaps in a form that is compatible with your main<br>
license and can be linked statically.<br>
<br>
Max however ensures the opposite. The internal Max objects are very much not<br>
licensed with &quot;lax redistribution conditions&quot;, nor are the parts of Max you will<br>
be linking with. You must buy Max to use it to interpret a Max patch directly,<br>
or to save/compile a patch as an independent executable. You can however run<br>
this saved Max executable without buying Max, or having any Max libraries in<br>
your system, or having any Max interpreter or virtual machine or whatever.<br>
<br>
In both cases this is intentional, not something that is an accident of the<br>
implementation details. And it is quite unlike running a java app on a local<br>
java VM, or linking with a closed source library you have either been given or<br>
have purchased a license for and then installed locally.<br>
<br>
I believe it is only distributing a saved executable which includes GPL code<br>
that is not allowed. Distributing a Max patch where some of the components are<br>
GPL (and which will be interpreted by Max locally) is probably fine. It seems<br>
reasonable to me to consider those GPL components in isolation when they are<br>
simply part of a patch which is in itself the source code for an interpreter.<br>
<br>
But distributing the saved executable is the usual practice in the Max way of<br>
doing things, if you are making something for somebody else.<br>
<br>
&gt;<br>
&gt;&gt;&gt;&gt; p.s. I would be happy if it was.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;d say, but I am not a lawyer, that it certainly is partly the case -<br>
&gt;&gt; GPLed libraries can&#39;t be part of standalone executables that are<br>
&gt;&gt; distributed to another party.<br>
&gt;<br>
&gt; ... unless the &quot;corresponding source&quot; of those executables is itself<br>
&gt; made available under the GPL... with which we&#39;re back to system libraries.<br>
<br>
But the corresponding source cannot be made available ... parts of the source<br>
correspond to parts of the internal Max code, or to closed-source Max objects,<br>
and these parts are not available to be distributed ... the binary parts derived<br>
from this non-distributable code is included in the executable and is in no way<br>
a &quot;system library&quot; ... it is not on the users system independently, it is only<br>
present inside the executable in question! ... And this binary is not a compiled<br>
version of the patch ready to be &quot;interpreted&quot; by Max ... there is no<br>
interpreter installed locally to run it, yet it runs fine and quite independently.<br>
<br>
You can, I think, distribute a Max patch which has some GPL objects in it (as<br>
long as you comply with the GPL for those objects and any restrictions on other<br>
objects). Then anyone can run it using Max as the interpreter, or compile it for<br>
their own use. But you cannot distribute an executable derived from some GPL<br>
code which is statically linked to some incompatible code. This is equally true<br>
of the output of a C compiler ... if the executable that results from compiling<br>
GPL code includes libraries that are incompatible with the GPL (rather than<br>
linking to external system libraries) then you cannot distribute the result.<br>
<br>
<br>
&gt;<br>
&gt;&gt;&gt; Sorry if that&#39;s bad news for you... as Stallman would very likely not<br>
&gt;&gt;&gt; hesitate to point out, __any__ kind of restriction on what your users<br>
&gt;&gt;&gt; can or cannot do with your software makes that software less free, and<br>
&gt;&gt;&gt; is therefore generally a Bad Thing (at least for the FSF and those who<br>
&gt;&gt;&gt; share its interests and goals).<br>
&gt;&gt;<br>
&gt;&gt; Yes ... to _use_ for anything, by anybody, without restriction. But<br>
&gt;&gt; distribution of executables is very deliberately restricted (in a way I<br>
&gt;&gt; personally think is very appropriate), and must be accompanied with the<br>
&gt;&gt; full, properly licensable and reusable under GPL, code for the _whole_<br>
&gt;&gt; executable.<br>
&gt;<br>
&gt; I agree -- in the case of C code it&#39;s pretty clear what is meant by<br>
&gt; &quot;library&quot;, &quot;linking&quot;, &quot;using&quot;, etc., and of course what sort of<br>
&gt; creatures the &quot;system libraries&quot; are.  For other languages, those terms<br>
&gt; get murky very quickly.  I still think that a system library /<br>
&gt; interpreter / compiler exception might be made to apply, provided that<br>
&gt; the package source remained GPL, without trying to infect Max; but it<br>
&gt; seems to come down to a question of &quot;linking&quot; vs &quot;interpreting/compiling&quot;.<br>
<br>
The GPL in no way &quot;tries to infect&quot; any other code. That would be impossible<br>
anyway. A binary that is built from mixed GPL and more liberally licensed but<br>
compatible code must be accompanied by its complete source code - original<br>
licenses remain intact, not just the GPL parts.<br>
<br>
This certainly restricts the ways that GPL code can be used significantly more<br>
than some other licenses do, since if you can&#39;t distribute your whole code then<br>
you can&#39;t use any GPL code. Projects may of course be tempted to restrict<br>
themselves to compatible code so that they are able to make use of the large<br>
body of existing GPL code.<br>
<br>
&gt;&gt; With this in mind the motivation to port to Max may evaporate.<br>
&gt;<br>
&gt; Hmm... if we can keep up the debate on GPL arcana for another few<br>
&gt; weeks, I&#39;d say it almost certainly will ;-)<br>
<br>
 From the comments by the person who wrote the code it would seem he would<br>
prefer it if that motivation did evaporate. That was probably related to the<br>
reason he chose GPL as the license for his code in the first place.<br>
<br>
The GPL is very clear in its intentions ... obviously any project that does not<br>
wish to restrict the use of their code in this way should not choose GPL (and<br>
should not make use of GPL code), and anyone looking for code to use without<br>
these restrictions should either look for code more liberally licensed, offer to<br>
buy a suitable license from the authors of some other existing code, or write<br>
their own code.<br>
<br>
I don&#39;t think this is GPL arcana ... rather it is the very up front and explicit<br>
intention of the license, and presumably many coders who use it.<br>
<br>
Trying to find loopholes to avoid this intention _is_ arcane and beside the<br>
point outside a courtroom, and hopefully doomed to failure inside one. Asking a<br>
coder to change the license if you suspect they don&#39;t care for this restriction<br>
and just applied GPL as some kind of default without even reading the preamble<br>
is reasonable, but don&#39;t be surprised if they do in fact care.<br>
<br>
<br>
Simon<br>
<br><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Marco Donnarumma<br>New Media + Sonic Arts Practitioner, Performer, Teacher, Director.<br>ACE, Sound Design MSc by Research (ongoing)<br>The University of Edinburgh, UK<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Portfolio: <a href="http://marcodonnarumma.com/" target="_blank">http://marcodonnarumma.com</a><br>Research: <a href="http://res.marcodonnarumma.com/" target="_blank">http://res.marcodonnarumma.com</a> | <a href="http://www.thesaddj.com/" target="_blank">http://www.thesaddj.com</a> | <a href="http://www.flxer.net/" target="_blank">http://www.flxer.net</a><br>
Director: <a href="http://www.liveperformersmeeting.net/" target="_blank">http://www.liveperformersmeeting.net</a><br>