ASSUMPTION Parrot will only link to the GMP library, right? Either static or shared, doesn't matter.
IN BRIEF If so, then there's no problem. GMP is licensed under the LGPL, the same license as libc6. Parrot links to libc6 without any problem, right? (Though thankfully it doesn't use much of it...) The only hassle comes if the Parrot project intends to distribute >statically-linked binaries< that include GMP object code. Even this is easy to do if you add a few extra downloadable packages to your web site (see section 6). And, worst case, see section 14. :) IN DETAIL I'm working off the text shown here: http://www.gnu.org/copyleft/lesser.html Here's my section-by-section crib... Feel free to skip to the conclusion. :) -1: Ignore the preamble. All the important stuff is reiterated in detail below. 0: Describes who "you" refers to: the person using Parrot+GMP, *not* the Parrot developers or distributors. "Library" refers to GMP. Because this is the LGPL, just linking against GMP does not make Parrot a derivative work. If Parrot were to actually incorporate GMP source code, of course, it would be a derivative work. In particular, "The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library" (they don't). 1: This section does not apply since the Parrot distribution presumably won't contain any actual GMP source code. 2: We're not talking about redistributing a modified copy of the GMP library, so this section does not apply. 3: Nobody is proposing that Parrot be relicensed solely under the GPL so this section does not apply. 4: The Parrot project will be distributing source code, not object code, so this section does not apply. 5: The first paragraph is key: "A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License." Parrot, since it contains no GMP code, is defined as a "work that uses the library." This is even more clear since Parrot bignum support can be enabled or disabled at compile time: "...[that Parrot is not a derivative work] is especially significant if the work can be linked without the Library." Which, as far as I can tell, Parrot can. 6: Since the Parrot project will not be distributing binaries that are statically linked against GMP, this section doesn't apply. However, let's talk further about this section... It specifically says that it's fine to distribute a binary that dynamically links against GMP. However, statically linking merely requires accompanying the work with an offer for GMP source code for at least 3 years (why comply with clause (a) when you can comply with clause (c)?). As I read it, simply including a URL in the README that points to a downloadable GMP package on the parrotcode web site totally satisfies clause C. The last two paragraphs of section 6 are REALLY unclear. I can't even tell what the FSF is trying to say. It looks like it only applies if you're distributing GMP with your executable, either statically or dynamically linked. I assume they're talking about tools required to build GMP into Parrot. Since Parrot is entirely open source, all these tools are made available anyway, so I think that Parrot is automatically in full compliance. Frankly, though, these paragraphs are so unclear that I'd want to contact the FSF for clarification... 7: Doesn't apply since Parrot is not re-distributing GMP. 8: Parrot intends to comply with the LGPL, so this section's requirements are met. 9-13: Worries about patents, local restrictions, future versions of the LGPL, etc. None of which is really relevant to the discussion at hand. 14: If I'm wrong, and the LGPL truly is incompatible with Parrot then, in their words: "If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally." I believe that the Parrot project would be very likely to receive such an exemption if it asked for it. IN CONCLUSION GMP source code must be kept out of Parrot's source tree. No problem. To distribute binaries dynamically linked against GMP, well, go right ahead. They don't contain any GMP object code, so no problem. To distribute statically linked binaries, the distributor must also make the GMP libraries and all tools used to compile them into Parrot available and notify the end user of this in writing. It would take a tiny amount of extra effort to distribute statically-linked binaries. So, I don't see much of a problem in Parrot's using LGPL'd code. EXAMPLE Worst case, let's say that some for-profit company wanted to include Parrot pre-installed on a Zaurus. Ideally, they dynamically link Parrot against GMP and comply with each package's separate terms of redistribution. If, for whatever reason, they need to staticalliy link GMP to Parrot, then they would have to make the source to GMP and the tools they used to build it into Parrot available on their web site, and include a link to them in a README file. If they could not even comply with this simple requirement, then their statically-linked Parrot executable cannot contain bignum support (or must provide it using an alternative library). Am I missing anything? - Scott