OK, I hadn't read section 9 of the GPL. So now I agree with you that Pari doesn't need to do anything. Excellent.
So basically all the new lines of SAGE code would be a library, which can be linked against other libraries, and would be v2 or later. The SAGE tarball, that contains everything, including GMP, would be licensed under v3. But everything in it will need to be "V2 or later" or "v3 or later". At present only SINGULAR is a problem in this regard. With regards to Magma, yes, they'll be forced to dynamically link against GMP. I wouldn't put it past them to write their own library and dump GMP though. Some of their core code clearly already uses their own code. For example they use different code for FFT multiplication of integers and clearly have a different algorithm for integer division. They only support a few target platforms, so this is not that hard for them to manage. Possibly some other packages they use make use of GMP, and if *they* go GPLv3 then likely Magma will just have to dynamically link to all of those. Anyway, I think you are right. They will probably distribute those libraries separately along with the LGPLv3 and just dynamically link to them. That will give people the option of making drop in replacements for them, according to the terms of the LGPLv3. Bill. On 24 Sep, 15:25, "William Stein" <[EMAIL PROTECTED]> wrote: > On 9/23/07, Bill Hart <[EMAIL PROTECTED]> wrote: > > > I don't think these issues are simple. > > > Interestingly, Magma will not be able to use GMP under LGPLv3 as a > > statically linked library, since as a combined work it must satisfy > > section 4d of the LGPLv3, which excludes distributing a binary already > > linked statically with GMP, since you are supposed to provide the user > > with the option of upgrading the library which Magma makes use of, > > i.e. provide a drop in replacement. > > This is interesting. However all it means in practice is that Magma > will switch to > distributing a version that is dynamically linked against GMP, which > is something > they claim to already be able to do on request. So they will continue to use > new versions of GMP, with only a very mild inconvenience. > > > But, according to that page with the matrix that William linked to at > > the start of the thread, ""Use a library" means that you're not > > copying any source directly, but instead interacting with it through > > linking, importing, or other typical mechanisms that bind the sources > > together when you compile or run the code." > > > But SAGE is not currently designed to just link against GMP at compile > > *or* runtime. Rather the source code for GMP is actually included in > > SAGE, and in fact in modified form (by adding Pierrick and Jason's > > patches), and at runtime the SAGE binary actually includes GMP. > > But the problem with this is that to do this with an LGPLv3'd GMP, > > SAGE has to convert GMP to a GPLv3 license (permissible under the > > terms of the LGPL) *and* upgrade SAGE to GPLv3!! > > Let's be careful here to distinguish the Sage distribution as a whole from > the hundreds of thousands of lines of new Python / Cython / C code that > we have written. I'll call the latter "the Sage Python library" and the > former "the Sage distribution". If we change licenses, we should relicense > the Sage Python library under "v2 or later"; the Sage distribution itself > would then be forced to be licensed under "v3" as you mention above. > This means that: > (1) somebody could still use the Sage library in a GPL v2 only project, > by building against an older version of GMP and GSL. > (2) people could not use Sage as we distribute it in a project that isn't > licensed GPL * or later. > > > Regarding GMP, there are about to be lots of additions to it and, over > > the next couple of years, much of it will see a rewrite. FLINT will > > I thought that was going to happen in 2005, then 2006, then 2007? > Who is actually doing this massive rewrite, addition, etc.? > > > make use of the new versions of GMP, undoubtedly. I don't see that we > > have an option. For FLINT itself, this is not an issue. We simply put > > "GPLv2 or (at your option) GPLv3" on our code, since we do not include > > GMP in FLINT, but only link against it. Admittedly we'd like to > > statically link against it, but this seems to be precluded. But for > > SAGE the GMP thing is much more of a problem. > > I think it is the same amount of problem for the *SAGE library*, which is most > of what we've written. > > > So according to my reading SAGE has two options in the long run: > > > 1) Switch to GPLv3, ensure all code we distribute as part of SAGE is > > "GPLv2 or later" or released under a GPLv3 compatible license. Keep > > GMP as part of SAGE. > > This option seems to be best from the perspective > > that closed source competitors like Magma cannot do this. > > I don't agree with the above statement about Magma. I'm 100% Magma can > and will switch to using any future versions of GMP. I think the only reason > they currently distribute statically linked binaries is that (they > believe) it makes > using and installing Magma easier for users. Switching to a dynamically > linked > Magma is easy for them to do, and they will do it. > > > 2) Remove GMP and Pierrick and Jason's patches from SAGE and simply > > link against whatever GMP version happens to be on the users system, > > and go to "GPLv2 or later". Under this option we could not even link > > against the latest version of GSL. > > This is not an option, since it directly violates one of the 3 basic > principles of Sage: > > (1) provide a complete open source mathematical software distribution, > (2) provide a new library, > (3) provide a way for existing math programs to talk with Sage. > > Including GMP is critical to Sage's usability. > > Anyway, you're might be confusing the Sage library and the Sage distribution > as > a whole. The options to me seem to be: > > (1) fork GMP, GSL, GNUtls, etc., or > > (2) change the Sage Python library and Singular to GPL v2 or later. > > If (2) were the case, the whole Sage distribution would be possible, and would > in effect have the GPL v3 license. It appears that (1) would doom Sage to > irrelevance, but that (2) is manageable, depending on what the Singular > copyright holders decide. > > > With regard to Pari, we really need to ask them what their license is. > > I don't see them explicitly granting the right to (at our option) use > > Pari under the terms of later versions of the GPL. > > Nothing anywhere in the PARI distribution or startup banner makes any > statement about > GPL versions. The only mention of GPL versions anywhere in Pari is in > the LICENSE.txt > file that they copied from the GNU website. This means that one can > apply any version > of the GPL to PARI. Please re-read section 9 of the GPL, especially > the last sentence > in the second paragraph below: > > "9. The Free Software Foundation may publish revised and/or new versions > of the General Public License from time to time. Such new versions will > be similar in spirit to the present version, but may differ in detail to > address new problems or concerns. > > Each version is given a distinguishing version number. If the Program > specifies a version number of this License which applies to it and "any > later version", you have the option of following the terms and conditions > either of that version or of any later version published by the Free > Software Foundation. If the Program does not specify a version number of > this License, you may choose any version ever published by the Free Software > Foundation." > > This last sentence was quite a surprise to me! But it's there. > > > However, my bet is > > they will go to "GPLv2 or later" since they too wish to link against > > GMP. > > But I don't think they will even worry about it given that > (I think) technically they already have. > > William --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---