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