Paul Rubin <http://[EMAIL PROTECTED]> wrote:
> 
> Tim Churches <[EMAIL PROTECTED]> writes:
> > >The question is: does shipping a backend which imports a module that
> > > links with GPL code make some or all of the library GPL.
> > We sought formal legal advice on this issue from a lawyer with
> > expertise in open source licensing ...> 
> > The answer was that the GPL does not apply to combination of code at
> > run-time. Specifically, Section 0., Para 1 (assuming zero-based
> > paragraph numbering...) says:> 
> > "Activities other than copying, distribution and modification are not
> > covered by this License; they are outside its scope. The act of
> > running the Program is not restricted,..."
> 
> My IANAL amateur reading is that the GPL does in fact apply, at least
> in the US.  Running the program is not restricted, but loading the
> program from disk to memory before you can run it counts as copying
> it, which invokes the license, Computer Associates v. Altai, 982 F.2d
> 693.  I personally believe that doctrine is insane, but that's what
> software companies pushed through the courts in order to make
> shrink-wrap EULA's enforceable.  (Otherwise they'd only be enforceable
> if you agreed to the terms before the vendor got your money).

I can't comment on the situation in the US, but our advice made no reference to 
similar 
case law or interpretations under Australian law. However, even if what you say 
is true 
(that loading code from disk into memory is "copying"), it makes no difference, 
because the GPL copyleft licensing provisions only apply to copies which you 
give or 
make available to others. In other words, you can mix and match GPLed code and 
non-
GPLed code, in source code form, in object code form, or by runtime linking to 
your 
heart's content, provided you do so in teh privacy of your own organisation, 
and you 
are NOT obliged to distribute all the other code you mix together to others 
under the 
GPL. However, if you do distribute to others, it must be under the GPL. Runtime 
linking, importing or making function calls does not involve distribution to 
others. 

The so-called "viral" properties of the GPL - that by using GPLed code somehow 
your 
entire source code base will need to be made available to the entire world 
under the 
GPL - is just FUD perpetuated by certain large software companies and their 
fellow 
travellers. Sure, if you distribute your mixed GPL-and-other code to third 
parties then 
the whole lot has to be under the GPL, but the GPL does not force you to 
distribute it. 
So even if loading code into memory is copying (in the US), it isn't 
distributing to 
others.

> > Furthermore, Section 2 para 1 says: "These requirements apply to the
> > modified work as a whole. If identifiable sections of that work are
> > not derived from the Program, and can be reasonably considered
> > independent and separate works in themselves, then this License, and
> > its terms, do not apply to those sections when you distribute them
> > as separate works. ..."
> 
> That means you can run your separate program all by itself without
> needing to load the GPL module.

That test is just one interpretation of what that paragraph means. "Reasonably 
considered independent and separate works in themselves" can also be 
interpreted to 
mean that the source code is clearly identified as belonging to a separate 
work, and 
that the there is no mixing of sorce code between the two works.

However, in the case of our application, and in the case of Matplotlib, if I am 
not 
mistaken, that test is satisfied anyway.

> 
> > and Section 2 para 3 says:
> > 
> > "In addition, mere aggregation of another work not based on the
> > Program with the Program (or with a work based on the Program) on a
> > volume of a storage or distribution medium does not bring the other
> > work under the scope of this License."
> 
> That means the two programs have nothing to do with each other.

If the source code for work A does not contain a single line of the source code 
for 
application B, then it would seem reasonable to say that work A is not based on 
work 
B. However, work A can still call functions defined in work B at runtime, 
without "being 
based on it".

> > On the basis of these clauses, the legal advice to us was that merely
> > including "import rpy" and making calls to RPy-wrapped R functions
> > does not invoke the provisions of the GPL because these calls only
> > relate to run-time linking, which is not covered by the GPL. 
> 
> According to the FSF, it doesn't matter whether the linking is static
> or dynamic; the GPL applies to both cases.

That's their opinion, and they are welcome to it. However, teh GPL specifically 
states 
that "Activities other than copying, distribution and modification are not 
covered by this 
License; they are outside its scope." I cannot see how dynamic linking at 
runtime can 
be construed as copying, distribution or modification. Even if in the US it is 
considered 
copying, then the result is that you are then required to license your non-GPL 
code 
back to yourself under the GPL. However, you are NOT obliged to make that code 
available to others, if you do not wish to. 

In our case, and in the Matplotlib case, we ARE making that other code 
available to 
others anyway, just under a different free, open source license.
> 
> > Note that the formal advice was specific to Australian law, 
> 
> Oh ok, that might be different from US law.  Do you have EULA's there
> that are considered enforceable?

Yes, AFAIK, but IANAL. However, our Copyright Act says:

"47B(1) The copyright in a literary work that is a computer program is not 
infringed by 
the making of a reproduction of the work if: 
(a) the reproduction is incidentally and automatically made as part of the 
technical 
process of running a copy of the program for the purposes for which the program 
was 
designed; ..."

> > The other, informal advice, was to ignore the FAQs and other opinions
> > on the FSF web site regarding intepretation of the GPL - it's only 
> the
> > license text which counts.
> 
> Ultimately, what really counts are court decisions.  The FSF enforces
> the GPL against infringers all the time, and in each case so far, the
> infringer has backed down voluntarily because they didn't like their
> chances in court.

OK, although in the case of the GPLed code imported by our application, the FSF 
is 
not the copyright holder. We have discussed the situation with the copyright 
holder 
and they are happy to accept the interpretation of the GPL provisions given to 
us by an 
expert lawyer.

Tim C

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to