On 9/24/07, Bill Hart <[EMAIL PROTECTED]> wrote:
> 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.

Yep.

> 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.

That's probably the case.  Does anybody know anything about the
plans for Singular (Martin?  Michael?).

> 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.

Magma supports more target platforms than any other commercial
mathematical software and more targets than Sage.  If you go here:
    https://magma.maths.usyd.edu.au/magma/export/
you'll see they support all of:

Alpha (Linux)
Alpha (OSF/Tru64)
AMD64/Intel64 (Linux)
AMD64/Intel64 (Solaris)
i386/PC (Linux)
i386/PC (Windows)
IBM PowerPC64 (AIX)
IBM PowerPC64 (Linux)
Intel IA64 (Linux)
Macintosh 32-bit Intel (OS X)
Macintosh G4 (Mac OS X)
Macintosh G5 (Mac OS X)
Sparc (Solaris)
Sparc64 (Solaris)

It's actually pretty amazing.   We should consider having similar
support for Sage
a challenge and priority.

They won't jettison GMP.  They also use several other LGPL (and soon
to be LGPLv3)
libraries, and I bet they'll just dynamically link them.  After all,
they already support
that functionality (it's just not the default).

> 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.

Yep. That's what Maple already does too.

It could be fun, because you could write a replacement to GMP that
records all arithmetic operations that are done using GMP, then link
Maple against it and see what Maple is doing... :-)

>
> 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
>
>
> >
>


-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~---------~--~----~------------~-------~--~----~
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/
-~----------~----~----~----~------~----~------~--~---

Reply via email to