Michael Abshoff pointed out to me that GMP 4.2.2 has been released!
Very exciting. The
release notes list exactly one new feature:
From http://gmplib.org/gmp4.2.html
New features of GMP 4.2.2
* License is now LGPL version 3.
Bugs:
...
The obvious question is whether the _current_ version of Sage can
include or even
link to GMP 4.2.2 or any future version of GMP. The answer is *NO*. For more,
see below.
The Sage project as an overall project is -- and must be -- released
under GPL v2 only,
at least right now. I don't know when or if this will change. It is
not within my power.
Only time will tell.
> http://gplv3.fsf.org/dd3-faq
> which has a nice matrix showing what is legal to combine.
This table very clearly says that a GPL v2 project cannot link in an
LGPL v3 library.
We will thus not be upgrading the Sage GMP package to 4.2.2 right now.
Thoughts?
William
>> http://gplv3.fsf.org/dd3-faq
>> which has a nice matrix showing what is legal to combine.
>
> This table very clearly says that a GPL v2 project cannot link in an
> LGPL v3 library.
> We will thus not be upgrading the Sage GMP package to 4.2.2 right now.
>
> Thoughts?
I wonder whether the GMP folks would consider releasing under both
LGPL v2 and v3.
david
The obvious suggestion is to ask them to license under
"LGPLv2 or greater". It can't hurt to ask.
>
> William
>
> >
>
--Mike
We are just using it as a library. The problem isn't LGPLv3,
but GPLv2 itself! But please see
http://gplv3.fsf.org/dd3-faq
where it is made crystal clear that in fact a GPLv2 project can't
even use an LGPLv3 library in library-only mode.
There is a discussion here:
http://lwn.net/Articles/241065/
In short, Magma and Maple can use GMP under LGPLv3, but
Sage can't, because Sage is GPLv2, and the GPLv2 specifically
disallows linking against libraries that are more restrictive
(except things like the C library).
-- William
1. I've been doing some performance comparisons on GMP 4.2.2 with the
patches that Sage uses, and I haven't seen any remarkable differences
between 4.2.2 and 4.2.1. Granted, I have only tested Linux on
AMD64/Intel64 and OS X on Intel64. Perhaps some other platforms have
a greater difference. (By the way, the GPL patches for gcd/xgcd seem
to work just fine.)
It is nice that it will compile under OS X now without patching... and
it even builds dynamic libraries. It is somewhat slow without
patches, though.
2. I suspect that the GMP developers were very deliberate in their
license choice and will not release it under "LGPLv2 or greater".
Much of the v2/3 license debate hinges on DRM issues: public key
crypto is a big part of most DRM systems, and GMP is a natural choice
for implementing public key crypto... but it can't hurt to ask.
3. How much of Sage is under "v2 Only"? That's the only portion that
should cause problems isn't it?
--jason
On 9/23/07, William Stein <wst...@gmail.com> wrote:
>
Is GMP-4.2.1 with the gcd/xgcd patch vastly faster than GMP-4.2.2 at
what the gcd patch is for (i.e., gcd's of million digit numbers)?
> It is nice that it will compile under OS X now without patching... and
> it even builds dynamic libraries. It is somewhat slow without
> patches, though.
Do you mean that GMP-4.2.2 is somewhat slow without patches?
Or that GMP-4.2.1 is? Or?
> 2. I suspect that the GMP developers were very deliberate in their
> license choice and will not release it under "LGPLv2 or greater".
> Much of the v2/3 license debate hinges on DRM issues: public key
> crypto is a big part of most DRM systems, and GMP is a natural choice
> for implementing public key crypto... but it can't hurt to ask.
I think GMP is not going to change to LGPLv2 or greater; switching
from LGPLv2 or greater to LGPLv3 is the one and only new "big feature"
of GMP 4.2.2 (see the release notes).
Also -- much more importantly, the copyright owners of GMP
are the Free Software Foundation -- not "the GMP developers",
and their agenda is very clear.
> 3. How much of Sage is under "v2 Only"? That's the only portion that
> should cause problems isn't it?
Good question. First, how do we determine if something is v2 only?
From the GPL itself: "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."
So the only problem would be software that specifically says "GPL
version *2*". For the Sage source code itself, we always just write
# Distributed under the terms of the GNU General Public License (GPL)
except in the following files:
interfaces/matlab.py:
matrix/matrix.pyx:
matrix/matrix0.pyx:
matrix/matrix1.pyx:
matrix/matrix2.pyx:
matrix/strassen.pyx:
I hold the copyright on all those files above.
However, in the COPYING file for Sage itself, I wrote: "All original
SAGE code is distributed under the terms of the GNU General Public
License *Version 2*."
Just out of curiosity, would anybody be angry if I were to remove the
words "*Version 2*" from the above sentence in the COPYING file?
Evidently nobody (but me) has ever actually submitted any code to Sage where
they explicitly put "Version 2" in their copyright statement.
I'm asking this mainly to see what our options are.
Regarding Sage dependencies:
* PARI -- they include the GPLv2 in the distribution, but the source code
files all just say: "you can redistribute it and/or modify it under the
terms of the GNU General Public License", i.e., nothing about V2.
So evidently PARI isn't a problem.
* Singular -- same as SAGE -- all source files say "GPL version 2 or
latter" or don't
mention anything about versions. The top-level copying file does very
explicitly say "( version 2 of the License );"
* clisp -- a cursory glance and it seems the same as Sage and Singular --
the top level COPYRIGHT file explicitly says GPL v2, but when you look
at sources, if they have a copyright statement it (here I didn't check
everything) says "v2 or later".
I'm not checking anymore right now, since perhaps the above is enough
of a sample to spark some useful discussion.
William
I would prefer that you say "GPLv2 or later (at your preference)"
instead of just removing it.
GAP is GPLv2. I will ask gap-dev about changing that to "GPLv2 or
later (at your preference)" .
A legal question: If I write SAGE code (ie, Python code which requires
SAGE's data extra data structures), doesn't that force, by the nature
of the GPL,
my code to be GPL'd, whether it is included in SAGE or not?
I just want to emphasize again, that I'm *not* just suggesting throwing
in the towel and switching to GPLv2 or later. I just want to understand
what the options are. In particular, if we make Sage all GPLv2 or later,
and start including LGPLv3-only GMP, then I think that means all the
subtle DRM-related restrictions will apply to Sage.
> A legal question: If I write SAGE code (ie, Python code which requires
> SAGE's data extra data structures), doesn't that force, by the nature
> of the GPL,
> my code to be GPL'd, whether it is included in SAGE or not?
Definitely *not*. If you write Sage *code*, that code can have absolutely
any license you want. You could release it under BSD, under Microsoft
Shared Source, public domain, anything. However, of course,
to run the program a user will have to obtain a copy of Sage.
If you write code that uses Sage, then decide to distribute that code
along with a complete copy of Sage, then the combined work would
have to be released under GPLv2. But that's not what you
were asking.
Your question is very similar to: "If I write a program against Java (say)
or Microsoft's .NET, does my program have to be --java license-- or
--microsoft license--?" The answer is definitely no.
William
Fortunately this might not be necessary anymore. See below.
I searched through the Gap distribution, and as far as I can tell
the only mention of the GPL anywhere in the entire thing is that
they include the file etc/GPL, which is a copy of the GPL license
(version 2). No source files say anything about the GPL, nor
does the readme or anything else.
The GAP website (http://www.gap-system.org/Download/copyright.html)
specifically says: "GAP is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version." Thus it looks like
GAP is GPL v>=2 already.
-- William
>
> I think GMP is not going to change to LGPLv2 or greater; switching
> from LGPLv2 or greater to LGPLv3 is the one and only new "big feature"
> of GMP 4.2.2 (see the release notes).
>
> Also -- much more importantly, the copyright owners of GMP
> are the Free Software Foundation -- not "the GMP developers",
> and their agenda is very clear.
>
See: http://www.gnu.org/licenses/why-not-lgpl.html
Do I smell something?
>
> Just out of curiosity, would anybody be angry if I were to remove the
> words "*Version 2*" from the above sentence in the COPYING file?
> Evidently nobody (but me) has ever actually submitted any code to Sage where
> they explicitly put "Version 2" in their copyright statement.
> I'm asking this mainly to see what our options are.
>
I join David Joyner: GPLv2 or later
This will resolve all issues for library usage.
Jaap
Well, I wouldn't say I'd be "angry", but I dislike the GPLv3. My principle
reason for disliking it is section 3. I didn't read up on acticle 11 of
WIPO, but my understanding is that they are attempting to forbid writing of
DRM schemes with GPL'ed code. I don't like where that goes. When I release
code under the GPL I'm not concerned about what the users do with it -- I'm
only concerned that they release their code that builds on it. I believe
this is two fundamentally different issues and I think that the FSF is
muddying the waters to mix them.
Now, I realize that people who feel strongly opposed to DRM may find my
distinction silly. Actually, I feel rather strongly opposed to DRM myself
but I don't want to start enumerating all the things that I feel strongly
about that I don't want my code to be used for.
Anyhow, maybe I'm totally misunderstanding section 3. Also I realize that
GPLv3 is probably the only realistic way forward since the FSF is the 800 lb
gorilla as far as open licenses are concerned. I guess I would sum up my
feeling as being that I'm more strongly opposed to license proliferation than
I am against the DRM clause in GPLv3.
I very much do not like the blanket "or later version" scheme for dealing with
the GPL. This, to me, gives the FSF a blank check for whatever in GPLv4, and
after seeing GPLv3, I trust them even less than I used to.
On Sunday 23 September 2007 15:46, William Stein wrote:
> Evidently nobody (but me) has ever actually submitted any code to Sage
> where they explicitly put "Version 2" in their copyright statement.
> I'm asking this mainly to see what our options are.
I didn't make any requests, but that was because I already knew it was GPLv2
(which was what I wanted).
I'm not quite comfortable with your license analysis for PARI and Singular.
If they say GPLv2 somewhere prominent in their distribution I would take that
to apply to all the source and not view the individual source files
differently because they don't specify the version number (i.e. I believe
they intended to have each individual source file released under GPLv2, but
didn't think it was worth repeating).
--
Joel
Or is it specifically excluded to distribute software derived from
that with GPLv2 under GPLv3. But that would imply that GPLv3 does
grant the user additional rights that v2 does not, i.e. it would be a
*less* restrictive license at some point.
My concern is, what happens if they release GPLv4 and they put some
nuisance clause in that we specifically don't like, such as, you may
use this software to further the aims of the FSF in total world
domination and anihilation of its arch rival {insert name of favourite
evil empire here}, even at the expense of keeping your derived
propriety source code secret if that helps. Sure, the FSF is highly
unlikely to add something like that, but how can you license a product
against all future versions without knowing what additional rights
those versions of the license may grant the user!?
My suspicion is the FSF have done this to encourage the use of their
new license. Nothing more, nothing less. They are just strategising to
advance their own cause, leveraging their existing power.
Bill.
The clam that GPLv3 forbids DRM schemes is called a "myth" by Ed Burnette
http://blogs.zdnet.com/Burnette/?p=354
I think early drafts of GPLv3 were more anti-DRm than the final draft.
>
> Now, I realize that people who feel strongly opposed to DRM may find my
> distinction silly. Actually, I feel rather strongly opposed to DRM myself
> but I don't want to start enumerating all the things that I feel strongly
> about that I don't want my code to be used for.
>
> Anyhow, maybe I'm totally misunderstanding section 3. Also I realize that
> GPLv3 is probably the only realistic way forward since the FSF is the 800 lb
> gorilla as far as open licenses are concerned. I guess I would sum up my
> feeling as being that I'm more strongly opposed to license proliferation than
> I am against the DRM clause in GPLv3.
>
> I very much do not like the blanket "or later version" scheme for dealing with
> the GPL. This, to me, gives the FSF a blank check for whatever in GPLv4, and
> after seeing GPLv3, I trust them even less than I used to.
Is "GPLv2 or GPLv3 (your preference)" better?
GPLv2 and GPLv3 are actually incompatible. You might think
GPLvN should be compatible with GPLv(N-1) but that isnt the case here.
At the moment, I think SAGE cannot be released under GPLv3.
> on principle (i.e. we disagree with the FSF on this one) or is there
> something in SAGE that we specifically do not want these restrictions
> placed on for particular reasons?
>
> Or is it specifically excluded to distribute software derived from
> that with GPLv2 under GPLv3. But that would imply that GPLv3 does
> grant the user additional rights that v2 does not, i.e. it would be a
> *less* restrictive license at some point.
>
> My concern is, what happens if they release GPLv4 and they put some
> nuisance clause in that we specifically don't like, such as, you may
> use this software to further the aims of the FSF in total world
> domination and anihilation of its arch rival {insert name of favourite
> evil empire here}, even at the expense of keeping your derived
> propriety source code secret if that helps. Sure, the FSF is highly
> unlikely to add something like that, but how can you license a product
> against all future versions without knowing what additional rights
> those versions of the license may grant the user!?
>
> My suspicion is the FSF have done this to encourage the use of their
> new license. Nothing more, nothing less. They are just strategising to
> advance their own cause, leveraging their existing power.
Agreed.
Ideally, the alternative to M* CASes should be released under more
permissive license, such as MIT or new BSD. But the current situation seems
to be far from ideal :(
Alec
From other point of view, Python, for instance, has its own license. SAGE,
probably, could be licensed under its own license, too (including the
possibility of linking to both LGPL2 and LGPL3). Why not?
Alec
I agree with his interpretation of the paragraph he quoted, but he didn't
quote the paragraph I was concerned about. The first sentence of section 3
is what bothers me: "No covered work shall be deemed part of an effective
technological measure ...". Maybe I need to read these WIPO documents before
I start spewing FUD.
And, yes, it is *much* improved over earlier versions of v3 ... they were out
of hand.
> > I very much do not like the blanket "or later version" scheme for dealing
> > with the GPL. This, to me, gives the FSF a blank check for whatever in
> > GPLv4, and after seeing GPLv3, I trust them even less than I used to.
>
> Is "GPLv2 or GPLv3 (your preference)" better?
Yes, I would consider that better, but it sort of seems like it punts on the
actual issue. I guess I'm not really happy with any of the options so I
don't actually have an opinion.
--
Joel
I agree -- this is basically off topic. Also, GPLv3 went through many
revisions, which generated "myths" as David Joyner points out below.
Personally, I don't like the GPLv3 for one reason only: it is not
GPLv2 compatible, and I know that I do like GPLv2.
> Anyhow, maybe I'm totally misunderstanding section 3. Also I realize that
> GPLv3 is probably the only realistic way forward since the FSF is the 800 lb
> gorilla as far as open licenses are concerned. I guess I would sum up my
> feeling as being that I'm more strongly opposed to license proliferation than
> I am against the DRM clause in GPLv3.
>
> I very much do not like the blanket "or later version" scheme for dealing with
> the GPL. This, to me, gives the FSF a blank check for whatever in GPLv4, and
> after seeing GPLv3, I trust them even less than I used to.
True. And "or later" definitely allows them to not only add new
terms (GPLv3 is GPLv2 + more restrictions), but it allows them
to remove terms.
> On Sunday 23 September 2007 15:46, William Stein wrote:
> > Evidently nobody (but me) has ever actually submitted any code to Sage
> > where they explicitly put "Version 2" in their copyright statement.
> > I'm asking this mainly to see what our options are.
>
> I didn't make any requests, but that was because I already knew it was GPLv2
> (which was what I wanted).
Yes, and it *is* GPLv2. Don't worry.
> I'm not quite comfortable with your license analysis for PARI and Singular.
> If they say GPLv2 somewhere prominent in their distribution I would take that
> to apply to all the source and not view the individual source files
> differently because they don't specify the version number (i.e. I believe
> they intended to have each individual source file released under GPLv2, but
> didn't think it was worth repeating).
Regarding PARI, I think Henri and Karim did the following:
(1) put "this code is GPL'd" in each file, and
(2) put the GPL v2 license file verbatim -- the only one you could
possibly put -- in the top level of the source file.
(3) did *not* -- as far as I can tell -- mention GPL v2
explicitly anywhere else.
I.e., they did the minimum reasonable work to GPL a program,
so they could get back to interesting mathematics. Also,
the section about their choice of GPL here
http://www.math.u-bordeaux.fr/~belabas/pari/doc/faq.html#GPL
says nothing about GPL v2.
It's very clear in the generic GPL license file included in PARI
that if the program itself does not specify a version number, then
any version of the license may be used. As further evidence the
PARI startup banner says:
"PARI/GP is free software, covered by the GNU General Public License,
and comes WITHOUT ANY WARRANTY WHATSOEVER."
So from a legal point of view, I think it is clear that PARI is GPL
version 2 or later. This is surprising to me, since it's not at all
what I expected. But it's true. If you can see any problem with this
argument, let me know.
That said, since I know the PARI authors, we could just ask them for
clarification.
-- William
The *only* options I can think of right now are:
(1) Stick with GPLv2 and *fork* every FSF project Sage depends on:
* GMP
* GSL
* GNUtls (openssl replacement)
Anything else?
(2) Change the Sage license to GPLv2 or later, and get clarification
about the same issue from the Singular developers.
More details:
(1) Make a stand and stick with GPLv2. This will mean in the long
run that we will have to FORK, never ever again ship updated
versions of, or remove dependence on every FSF-owned project.
This is definitely possible, since the projects are currently very
mature:
* GSL -- they just released GSL v1.10 under GPLv3 only (sage
currently includes GSL v1.9),
* GMP -- they just released GMP v4.2.2 under GPLv3 only (sage
currently includes on GMP v4.2.1),
It appears that a huge number of FSF/GNU projects are having
new releases under GPLv3 *only* right now (not GPLv2 or later).
I.e., FSF is very aggressively pushing their license in a technical sense.
(2) We change the Sage license to GPLv2 or later, and change or
eliminate all components of Sage that are GPL v2 only.
As far as I can tell Singular is the only 3rd party component of
Sage that is in fact clearly GPL v2 only. Please correct me if I'm
wrong about that.
----
I think both options are viable, since I suspect that the only projects
Sage uses that will switch to GPLv3 only are the FSF projects -- most
projects will just stick with "GPLv2 or greater". Option (1) means more
work for us, though GSL is pretty much *done* -- it hasn't changed
much in years, and likewise GMP hasn't had anything interesting
happen release-wise in nearly 2 years. (The most interesting GMP work has
been outside the GMP project.)
If you can think of a genuinely viable third option, or have strong
feelings about which of 1 or 2 is better, now is the time to speak
up. I have put off this GPLv3 license discussion repeatedly during
the last year when it came up. But now it can't be ignored anymore.
I greatly value everybody's feedback.
-- William
This is only perhaps ideal from the typical end user's point of view.
The GPL-style license is greatly preferred over the BSD/MIT as the
license for Sage by most Sage developers (this was discussed a lot
at Sage Days 2). In fact, several of the top contributors to Sage have
explicitly said they would not contribute to Sage if it were not licensed
under the GPL. It's very important to these people, who put a massive
amount of their time into Sage, that the code the write not just be
copied into Mathematica/Maple/Magma, etc., and sold for profit,
improved, etc., with nothing given in return.
> From other point of view, Python, for instance, has its own license. SAGE,
> probably, could be licensed under its own license, too (including the
> possibility of linking to both LGPL2 and LGPL3).
> Why not?
That is not possible because Sage is derived from GPL'd programs,
hence it must be licensed under the GPL. A condition of the GPL
is the programs derived from the GPL must be licensed under the GPL.
In fact, it is impossible to combine GPLv2 only and LGPLv3 only code
in they same project, under any license.
-- William
Well, one possibility is to have GPLv2 in the main distribution and LGPLv3
as an optional package.
Alec
Does changing Sage to "v2 or later" require Sage to adopted future GPL
changes? My interpretation is that it simply gives users the option
to re-distribute it according to later versions of the GPL. It
doesn't obligate Sage to adopt those future changes, does it?
--jason
> much in years, and likewise GMP hasn't had anything interesting
> happen release-wise in nearly 2 years. (The most interesting GMP
> work has
> been outside the GMP project.)
I'm not sure I agree with this. I strongly suspect GMP is likely to
improve a lot in the next few years.
david
Another possibility is to distribute SAGE-new parts under any of GPL2, GPL3,
or GPL2 and later, and distribute all the rest as a collection of packages,
each with its own license, without having a unique license for all of that.
Alec
By the way, the GPL licensing, generally, is the main thing that prevents me
personally from contributing to SAGE. I never put anything I wrote under GPL
and I am not going to (at least at this moment.) Comparing to the danger of
copying the code that I wrote to Mathematica, Maple, or Magma, the GPL
licensing (and FSF copyrighting) seems to be much worse :)
Alec
Thanks for your idea. Unfotunately, I don't understand what these
proposals are suggesting.
If we plan to use GSL and GMP under LGPLv3 in any way, then it's impossible
to have any distribution of Sage at all that is GPL v2-only,
because almost every basic component of Sage depends on GMP, and GMP
is LGPLv3,
This will be an issue for Singular too -- people won't be able to build Singular
against GMP v4.2.2 and redistribute the result.
Basically it sounds like this idea is suggesting to try to somehow
to circumvent the GPL by distributing two incompatible
programs and having the user combine them. Intentionally
circumventing copyright
On Sep 23, 2007, at 10:20 PM, David Harvey wrote:
>> happen release-wise in nearly 2 years. (The most interesting GMP
>> work has been outside the GMP project.)
>I'm not sure I agree with this. I strongly suspect GMP is likely to
>improve a lot in the next few years.
You would know much better than I would. Thanks for clarifying
this.
> Does changing Sage to "v2 or later" require Sage to adopted future GPL
> changes? My interpretation is that it simply gives users the option
> to re-distribute it according to later versions of the GPL. It
> doesn't obligate Sage to adopt those future changes, does it?
Does it matter? To give an extreme example, imagine
that Stallman/FSF in 10 years has
a vision from God or whatever, and decides that GPLv4 should
just be the BSD license. They could do that. Then "GPLV2 or later"
would mean that all Sage could be included in Magma, Mathematica,
etc., and there is nothing that we could do to stop that.
That said, having some trust in organizations like FSF does
make life much easier, so we can get on with what we really
want to do (mathematics). Having no trust is a job for lawyers,
not mathematicians. I.e., I personally would be OK with
"GPLv2 or later" because my main goal is to do mathematics...
-- William
hi Alec,
Could you please elaborate on this a bit? What is it about the GPL
that you don't like? If you were to contribute code to SAGE, what
would be your ideal license?
david
Is it your personal distate for the GPL, or is that you don't want to be forced
to license code under the GPL.
> I never put anything I wrote under GPL
> and I am not going to (at least at this moment.) Comparing to the danger of
> copying the code that I wrote to Mathematica, Maple, or Magma, the GPL
> licensing (and FSF copyrighting) seems to be much worse :)
You can contribute code to Sage under the BSD license. Some
of the code I wrote for Sage I licensed under BSD, and in fact a huge
amount of the code in the Sage distribution is BSD licensed (e.g.,
all of numpy and scipy). Contributions to Sage under any
GPL-compatible license are very welcome.
-- William
My ideal license would be MIT. I don't like the GPL in general. I read it a
few times up to some point where I said to myself - no, that's not right, I
can't go with that. At different times that was a different point, but I
believe that I never went over the half of it. I have some negative personal
experience with some of FSF people (that I don't want to share) though, so
my opinion about the GPL may be biased.
Alec
Both, I think.
> You can contribute code to Sage under the BSD license. Some
> of the code I wrote for Sage I licensed under BSD, and in fact a huge
> amount of the code in the Sage distribution is BSD licensed (e.g.,
> all of numpy and scipy). Contributions to Sage under any
> GPL-compatible license are very welcome.
I am thinking of contributing something (some representation and invariant
theory stuff) to scipy (it is BSD) and then it will be available from SAGE.
One problem is that I have main routines written in assembler and it works
only in Windows. It can be rewritten for Linux, but it is still not very
portable.
Alec
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.
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!!
SAGE couldn't even provide compiled binaries statically linked against
the latest GMP since the compiled binary of a GPL'd program must
exactly reflect the source code that is supposed to accompany it. If
compiling the source code you supply does not result in the binary you
distribute, you aren't in compliance with the GPL.
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
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.
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.
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.
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. However, my bet is
they will go to "GPLv2 or later" since they too wish to link against
GMP.
Anyhow, let me congratulate the FSF for creating this mess. It is
clear they are achieving their "mission to preserve, protect and
promote the freedom to use, study, copy, modify, and redistribute
computer software, and to defend the rights of all free software
users."
So far, no FSF licensing option grants us the right to modify and
redistribute all software ever released under a FSF license.
Effectively there is a "no" in every column of that matrix if read
properly.
Bill.
On 24 Sep, 04:10, "William Stein" <wst...@gmail.com> wrote:
If it says 'GPLv2 or any later version' version 2 still applies!
Even if GPLvx with x >= 3 is more restrictive.
Jaap
"GPLv2 or later" means "you may copy, modify, and
redistribute the code using either license GPLv2 or
GPLv3 (at your preference)". You can't
use both at the same time since they are incompatible.
>> I very much do not like the blanket "or later version" scheme for dealing with
>> the GPL. This, to me, gives the FSF a blank check for whatever in GPLv4, and
>> after seeing GPLv3, I trust them even less than I used to.
>
> True. And "or later" definitely allows them to not only add new
> terms (GPLv3 is GPLv2 + more restrictions), but it allows them
> to remove terms.
>
Software released under GPLv2 or any later version is still under GPLv2
whatever the FSF is doing.
Yes, the only problem I can think of is that GPLv4 or later is less
restrictive compared to v2. But I don't expect that will ever happen because that
will be the end of FSF.
Jaap
What do you mean by use both? Nobody will copy, modify and
redistribute software with two or more incompatible licences.
With 'Version 2 of the GPL or any later version',
users will always be permitted to use it, and change it, according
to the terms of GPL version 2, whatever higher versions are
available.
Jaap
On Sep 23, 7:54 pm, David Harvey <dmhar...@math.harvard.edu> wrote:
> On Sep 23, 2007, at 1:41 PM, William Stein wrote:
>
> >>http://gplv3.fsf.org/dd3-faq
> >> which has a nice matrix showing what is legal to combine.
>
> > This table very clearly says that a GPL v2 project cannot link in an
> > LGPL v3 library.
> > We will thus not be upgrading the Sage GMP package to 4.2.2 right now.
>
> > Thoughts?
>
> I wonder whether the GMP folks would consider releasing under both
> LGPL v2 and v3.
>
> david
Hello,
this thread got a lot more replies than I thought. Anyway to answer
that question: GMP is an official FSF prpject, so it will not be
released under LGPL V2 or later. All the new FSF releases are GPL V3
(or later) or LGPL V3 (or later).
Cheers,
Michael
On Sep 24, 1:30 pm, "David Joyner" <wdjoy...@gmail.com> wrote:
> On 9/24/07, Jaap Spies <j.sp...@hccnet.nl> wrote:
>
>
>
> > Jason Martin wrote:
> > > My vote would be to change the sage license to "GPLv2 or later" and
> > > try to get the Singular developers to do likewise. Mainly because
> > > that is less work.
>
> > > Does changing Sage to "v2 or later" require Sage to adopted future GPL
> > > changes? My interpretation is that it simply gives users the option
> > > to re-distribute it according to later versions of the GPL. It
> > > doesn't obligate Sage to adopt those future changes, does it?
>
If any file inside a project says GPL V2 only and the rest of the code
is licensed under a GPL V2 compatible license that in turn makes the
whole project if distributed in binary form GPL V2 only. That does not
apply to the sources! So if you see any file like that in Singular,
pari, GAP or whatever let the developer/copyright holder know and ask
them nicely to change the license to the same license as the rest of
the project.
We should also make sure that all our modifications to [L]GPL [2|3],
BSD, MIT licensed code are clearly licensed and we should make an
effort to merge our patches upstream.
> > If it says 'GPLv2 or any later version' version 2 still applies!
>
> "GPLv2 or later" means "you may copy, modify, and
> redistribute the code using either license GPLv2 or
> GPLv3 (at your preference)". You can't
> use both at the same time since they are incompatible.
Exactly, and this means: When releasing a Sage binary linked against
gmp 4.2.2 any source bits that are "GPL V2 or later" are in effect
covered under the GPL V3 only in that binary release, because any
[L]GPL V3 library forces the use of the compatible GPL V3 license. The
sources that are GPL V2 or later can still be used under GPL V2 and if
you choose to use gmp 4.2.1 and not any other [L]GPL V3 code the
resulting binary distribution is covered under GPL V2. Obviously the
other code that is BSD licensed retains its license.
As was pointed out in the thread before performance wise it won't make
any difference with Jason's patches. The are various bug fixes that
make it worthwhile to switch to the new release (even though there are
no new features beside the license change) and one patch went in to
support gcc 4.3, but that that one was mine (even though the patch
that went in did it differently). So I would suggest to license Sage's
code under GPL V2 or V3 (if you are paranoid about the successor of
GPL V3), but one should consider that once a hypothetical GPL V4 rolls
around some of the authors of Sage code might no longer be around/lost
contact to the project. So GPL V2 or later covers that and as long as
say William's contributions only are covered under "GPL V2 or V3"
nobody could realistically "hijack" Sage under a hypothetically bad
GPL V4, if you are that paranoid ;).
>
> > Even if GPLvx with x >= 3 is more restrictive.
>
> > Jaap
Cheers,
Michael
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
Agreed.
> > > If it says 'GPLv2 or any later version' version 2 still applies!
> >
> > "GPLv2 or later" means "you may copy, modify, and
> > redistribute the code using either license GPLv2 or
> > GPLv3 (at your preference)". You can't
> > use both at the same time since they are incompatible.
>
> Exactly, and this means: When releasing a Sage binary linked against
> gmp 4.2.2 any source bits that are "GPL V2 or later" are in effect
> covered under the GPL V3 only in that binary release, because any
> [L]GPL V3 library forces the use of the compatible GPL V3 license. The
> sources that are GPL V2 or later can still be used under GPL V2 and if
> you choose to use gmp 4.2.1 and not any other [L]GPL V3 code the
> resulting binary distribution is covered under GPL V2. Obviously the
> other code that is BSD licensed retains its license.
This is exactly right.
> As was pointed out in the thread before performance wise it won't make
> any difference with Jason's patches. The are various bug fixes that
> make it worthwhile to switch to the new release (even though there are
> no new features beside the license change) and one patch went in to
> support gcc 4.3, but that that one was mine (even though the patch
> that went in did it differently). So I would suggest to license Sage's
> code under GPL V2 or V3 (if you are paranoid about the successor of
> GPL V3), but one should consider that once a hypothetical GPL V4 rolls
> around some of the authors of Sage code might no longer be around/lost
> contact to the project. So GPL V2 or later covers that and as long as
> say William's contributions only are covered under "GPL V2 or V3"
> nobody could realistically "hijack" Sage under a hypothetically bad
> GPL V4, if you are that paranoid ;).
I'm not going to do a GPL v2 or v3 only license. That is too painful
to contemplate, since it will mean in 10 years having the same sort
of problem, but much much worse.
-- William
Thank you for all this licensing discussion. Given our resources, it seems
to me that the only viable option is as follows:
(1) Get permission to relicense the Sage library under "GPL v2 or later",
(2) Remove anything from Sage that doesn't switch to "GPL v2 or
later" within some
reasonable period of time. (I'm still not convinced this is
anything except Singular.)
(3) Once 1 and 2 are done, release the Sage library under GPL v2 or later.
The Sage distribution will then be GPL v3 or later, and will only be
usable by GPL v3 or later programs.
This will all be done slowly and patiently. This means that Sage will not
have any new versions of GMP or GSL for quite a while.
Regarding (1), I'll define the copyright holders of the Sage *library*
to be the names
listed in the output of the following command (with some slight
editing, e.g., since
copyright statements for octave are in doctests):
$ cd SAGE_ROOT/devel/sage
$ grep -r -i Copyright * > a.txt
These are the people that both contributed code to the core library and
took the time to actually explicitly put their names as copyright holders
on files (in most cases this means they were the first to create the given
file). They contributed code under the assumption that their code is
GPL v2 only, so permission should be obtained before changing the
license on their code to GPL v2 or later.
There are 29 people listed below. In a few days (there is no hurry),
I'll send the following email to each of them:
"Do I have your explicit written permission to relicense code you submitted
to Sage to be under the 'GPL v2 or later license'?
[ ] Yes
[ ] No
Note: If you answer "no", unfortunately your code may have to be removed
from Sage. Please blame the FSF not me for this license fiasco."
Regarding the list below, you don't have to email me if you're listed -- I'll
email you. If you are not listed, but believe you should be, please
let me know.
Some people have already emailed me about this, so I won't have to email
them again.
Martin Albrecht
Gregory Bard
Tom Boothby
Robert Bradshaw
Timothy Brock
Iftikhar Burhanuddin
Craig Citro
Alex Clemesha
Didier Deshommes
Chris Gorecki
Marshall Hampton
Jon Hanke
Mike Hansen
David Harvey
Sean Howe
David Joyner
Josh Kantor
Joshua Kantor
Kiran Kedlaya
Emily Kirkman
David Kohel
Robert Miller
Joel Mohler
Yi Qiang
Dorian Raimer
David Roe
Jaap Spies
William Stein
Chris Wuthrich
-- William
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" <wst...@gmail.com> wrote:
:-)
> 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... :-)
--
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org
I do not know.
> > 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)
Have access, but who cares about Linux ob Alpha? This should be fairly
easy, but after the Alphacide by Intel few alpha clusters should be
left.
> Alpha (OSF/Tru64)
Have access, but who cares about OSF on Alpha ? Shouldn't be too hard
assuming one builds his/her own toolchain. Chances are that if you own
an alpha that by now you have switched that box over to Linux - if you
need to ask why I just recommend using OSF for an hour or two :)
> AMD64/Intel64 (Linux)
Yep.
> AMD64/Intel64 (Solaris)
Close to getting it to work, but the 32 bit version also is close to
work.
> i386/PC (Linux)
Yep.
> i386/PC (Windows)
Well, this is a tricky one, especially AMD64/Intel64 - which Magma
doesn't seem to support, but I consider this possible. This should
overall dwarf the rest of the potential Sage installations, if you
look at high schools and not the university scene. But even in the
university scene there is a surprising amount of Windows around in my
experience. Getting at least Cygwin to (mostly) work again isn't that
hard, but it seems that nobody has the time to do so and I rather work
on Solaris than Windows.
> IBM PowerPC64 (AIX)
Nope, lack access, but not a very high priority in my opinion.
> IBM PowerPC64 (Linux)
Well, 32 bit runs and 64 bit isn't very difficult to do, just need
something faster than a PS3 to build it. We also need to do something
about multilib configurations for Sage in general.
> Intel IA64 (Linux)
> Macintosh 32-bit Intel (OS X)
> Macintosh G4 (Mac OS X)
> Macintosh G5 (Mac OS X)
Yep to all of the above.
> Sparc (Solaris)
> Sparc64 (Solaris)
Getting close.
>
> It's actually pretty amazing. We should consider having similar
> support for Sage
> a challenge and priority.
>
:) - well at least William has gotten my proposal about Sage/Windows/
MSVC.
> 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... :-)
>
Hehe, I would consider it next to impossible to catch up with GMP in
the short term. Pretty much any other arbitrary precision library out
there has folded. While it is certainly true that working with some of
the GMP people can be hard it seems to be much easier to carry a
couple patches. In regards to remedy the Core Duo situation I can
probably say something about that at SD5.
> > Bill.
<SNIP>
Cheers,
Michael
John
On 9/24/07, mabshoff <Michael...@fsmath.mathematik.uni-dortmund.de> wrote:
>
--
John Cremona
Well, if you really want to know just hook a couple logging functions
in the gmp lib and you are done. That could even be done with their
version via LD_PRELOAD :). No need to program anything from scratch.
Does Maple have a reverse engineering clause?
<SNIP>
>
> William
>
Cheers,
Michael
Should you actually grep for author lines as well (even with some context!)
E.g c_lib/mp{n,z}_pylong.c read
* Author: Gonzalo Tornaría <torn...@math.utexas.edu>
* Date: March 2006
* License: GPL v2
(that's even explicit about license, altough no copyright word in the
whole file) and my name also appears in a few other places as author,
altough no explicit license.
Forget about me, but one could worry whether there are more authors
with no copyright statement (but clear author statements, thus clear
copyright hold).
Something I noticed while grepping is that some files have a heading
claiming GPL license with no version number which, as mentioned above,
seem to effectively mean any version of GPL. OTOH, some files (notably
sage/libs/pari/gen.pyx) have no copyright NOR license statement.
Besides, sage-2.8.5.spkg has no clear "top-level" copyright notice
(there is a copy of GPL v2 in directory c_lib, and an (unversioned)
statement in file PKG-INFO.)
> These are the people that both contributed code to the core library and
> took the time to actually explicitly put their names as copyright holders
> on files (in most cases this means they were the first to create the given
> file). They contributed code under the assumption that their code is
> GPL v2 only, so permission should be obtained before changing the
> license on their code to GPL v2 or later.
I contributed under that assumption. I don't like GPL v2 or later, I
might be closer to GPL v2 or v3 than that. Overall, I agree with
Joel's comments earlier in this thread.
For the record, I don't think I would have contributed to BSD or MIT
licensed sage.
Gonzalo
Wait, are you saying that you would not allow your code to be re-licensed
"GPL v2 or later" for Sage? Or, are you just saying you don't like it,
but you would do it.
There's no way I'm going to do "GPL v2 or v3 only". It doesn't solve anything,
since they same problem will come up again in a few years, and it
will vastly more difficult to move forward since people will be so
hard to contact. That could effectively kill Sage. The options are either
"GPL v2 or later" (and remove any code from Sage that can't be relicensed)
or "fork GMP and GSL". I don't like either option at all, and I right now I
really hate the FSF for forcing this crap on me. But that's the situation
we're in.
-- William
At this time I'm just saying that I don't like it.
> There's no way I'm going to do "GPL v2 or v3 only". It doesn't solve anything,
> since they same problem will come up again in a few years, and it
> will vastly more difficult to move forward since people will be so
> hard to contact. That could effectively kill Sage. The options are either
> "GPL v2 or later" (and remove any code from Sage that can't be relicensed)
> or "fork GMP and GSL". I don't like either option at all, and I right now I
> really hate the FSF for forcing this crap on me. But that's the situation
> we're in.
I know, but this only makes me *more* hesitant to be happy with the switch.
I understood the plan was to ignore the issue for the time being, and
see how other projects react. I think this was a good idea, and I
think it's still feasible to wait and see. The fact that GMP and GSL
have switched to GPLv3 is not the reaction of other projects, but
rather the problem itself. I'd rather take a decision based on what
*other* players do, rather than what the FSF does (which we knew well
in advance).
Anyway, GMP has been stale for... 5 years? And I gather that GSL is
not critical. Maybe someone else will fork GMP in the coming months,
or maybe GMP will stay frozen. We never know...
Just my 2 cents.
Gonzalo
> Anyway, GMP has been stale for... 5 years?
Why do people keep saying that GMP is stale?
This has not been my observation at all.
There are not insignificant performance differences between even a
fairly recent version (like 4.1.4) and the current version.
There are various other projects like
(a) fast GCD code
(b) toom multiplication for unbalanced operands
(c) O(M(n)) division code instead of the current O(M(n) log n)
division code
see for example http://gmplib.org/devel/. All of the above are in
development stages, and I expect them to show up in GMP in the not-
too-distant future.
There is also a massive architectural change being brought in at the
low levels (called "nails") which involves (for example) storing less
than 64 bits per word on a 64-bit machine, and taking advantage of
better carry handling in such cases. I've heard claims that this
could double the multiplication speed on some architectures, and that
wouldn't surprise me at all.
david
I released some of the code I've written for SAGE to public domain. We've got MIT and (new) BSD licensed code, too. There's no obligation to release any code under the GPL.
I, too, have a growing dislike for RMS. I don't know anything about his followers. But he's too free with terms like "subjugation" in a time when slavery and genocide are very real problems in the world. Furthermore, with the incompatability of GPLv2 and v3, he's violated his own "four essential freedoms", and is intentionally causing a rift in the free software community. He's much more dangerous to the community than Microsoft has ever hoped to be.
Hence, I am against version 3 of the GPL for two distinct reasons:
The first is political bullshit which I will not be entirely quiet about (though I'll try to keep it to a paragraph every few months in this public forum). Second, the body of v3-only licensed software is pretty small, and among these are apparently lame versions which only institute the change of license.
The first reason above, I'm willing to cede. I'm not quite so hard-headed as RMS, and I don't want to foist my opinion upon the community regardless of the delicate and polar nature of the issues. The second reason, then, indicates to me that more time is necessary.
I say that we should still wait. There's a lot of software out that that *doesn't* use GPLv3 -- if many of the projects we depend upon flock over, then we should follow. If not many more do, we should do our best to wean ourselves from the GNU projects (or *yuck* fork). To me, The scariest possibility is that around half of our dependencies switch. "Version 2 & later" (or alternately, v2&3) works with LGPLv3. Let's hope that would be enough.
That has been the plan for a long time, but now is the time that
we have to start worrying about this. It was unclear until now
whether or not GMP would switch to LGPLv3 or stay LGPLv2
or later. Now it seems that all GNU projects are switching
to *GPLv3 or greater.
> have switched to GPLv3 is not the reaction of other projects, but
> rather the problem itself. I'd rather take a decision based on what
> *other* players do, rather than what the FSF does (which we knew well
> in advance).
I didn't know what FSF would do.
The only other player directly relevant to Sage that has a move to make
is Singular. So far as I can tell, everybody else is already GPL version 2
or greater.
> Anyway, GMP has been stale for... 5 years? And I gather that GSL is
> not critical. Maybe someone else will fork GMP in the coming months,
> or maybe GMP will stay frozen. We never know...
Actually GMP is far from stale. Anyway, I put the chances of a
viable GMP fork in the next year at 1% (see below).
It would be very useful to figure out what the situation is with Singular's
licensing plans. Do they have a mailing list or something?
-- William
Why I think GMP won't be fork: Torbjörn is
really the organizing force behind GMP, as far as I can tell, and he
seems completely OK with LGPLv3 as a license for GMP. I don't know
of
any serious players who have the necessary resources and who are
interested in forking GMP, and the license change from LGPLv2 to LGPLv3
likely has no impact on Maple and almost none on Magma. Basically
before any of this LGPLv3 stuff, various people have made noise about
forking GMP for more serious reasons, and nothing happened, so I doubt it
would happen now.
I also have serious doubts that GMP will be successfully forked. I
looked into doing this myself, and the simple, painful, truth is that
the build scripts in GMP are more complicated than the mathematics.
(And, several times a year, someone on the GMP mailing lists suggests
forking the project, to which Torbjörn always responds, "go ahead,"
but I can't find any successful GMP forks on the web.) Maintaining
build scripts for assembly level code for hundreds of platforms has
got to be a painfully tedious task that no one else wants to take on.
Torbjörn may be somewhat tough to work with, but you have to give the
guy credit: he's probably one of the best all around programmers on
the planet.
So, I think that there is only one realistic option: Sage must go "v2 or later".
--jason
But I alone do not have the time to maintain such an enormous package,
especially given that I'm already codeveloper of FLINT. A group of us
could manage it, I'm sure. But whether it would be successful, I
couldn't say.
Bill.
P.S: When I say "thin on the ground", of course I mean that SAGE has
many developers, but the overwhelming task of implementing all this
mathematics is much greater.
I feel precisely the same way. I also hope Sage developers will
become a bit more thick on the ground.
That said, it might be good to think about what team would do a GMP
fork, if it were to happen, just in case. Probably you, me, Jason Martin, ??
Jason Martin remarked:
> Maintaining build scripts for assembly level code for
> hundreds of platforms has
> got to be a painfully tedious task that no one else
> wants to take on.
The first thing I would do if I forked GMP would be to greatly
reduce the number of supported platforms, in the same way
that Ubuntu supports far fewer platforms than Debian. I would
chose the same platforms that Sage targets (and that Sage
*wants* to target). The second thing I would do is release
the forked version (i.e., all _new_ code in the forked version)
under GPL (not LGPL) to prevent usage by Maple/Magma of
our version. The third thing would be to integrate
in all the patches to GMP that we currently distribute that aren't part
of the official GMP. The fourth thing would be to choose a
new name for the project. The fifth thing would be to setup a website
with bug tracker, wiki, mailing lists, and all the other standard
tools of an open source project.
That sounds like a lot of work. I'm glad I'm not forking GMP.
-- William
In doing this, however, we would loose what to me is the biggest
advantage of the GPL over all the other copyleft Open Source licenses
out there, namely that one merely has to say "this code is GPL" and
everyone has an idea (of varying accuracy) what you're talking about.
Also, it would only cover LGPL code, not anything GPL.
I am not convinced that this is the best idea, I just wanted to throw
it out there.
- Robert
On Sep 23, 2007, at 11:34 AM, William Stein wrote:
>
> On 9/23/07, Mike Hansen <mha...@gmail.com> wrote:
>> It seems odd that closed source software could use GMP under the
>> LGPLv3, but that a GPLv2 project could not. How tightly
>> integrated is
>> the GMP stuff? Aren't we pretty much just using it as a library?
>
> We are just using it as a library. The problem isn't LGPLv3,
> but GPLv2 itself! But please see
> http://gplv3.fsf.org/dd3-faq
> where it is made crystal clear that in fact a GPLv2 project can't
> even use an LGPLv3 library in library-only mode.
>
> There is a discussion here:
> http://lwn.net/Articles/241065/
>
> In short, Magma and Maple can use GMP under LGPLv3, but
> Sage can't, because Sage is GPLv2, and the GPLv2 specifically
> disallows linking against libraries that are more restrictive
> (except things like the C library).
>
> -- William
>
>
2. ...
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
From GPL3:
These requirements apply to the modified work as a whole. If identifiable
sections of that work, added by you, 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 for use not in combination with the Program. But when
you distribute the same sections for use in combination with covered works, no
matter in what form such combination occurs, the whole of the combination must
be licensed under this License, whose permissions for other licensees extend to
the entire whole, and thus to every part of the whole. Your sections may carry
other terms as part of this combination in limited ways, described in section
7.
Hence, if Sage cannot function without GPL3 software, it *must* be licensed
under GPL3, and no other license. Therefore, "GPL2 or later" truly means
"GPL3" the instant that we include gmp4.2.2, no matter what we might tell
ourselves. Similarly, if there is a library which is GPL2 only, we cannot
include it once we've included gmp4.2.2. This is utterly ridiculous, but
apparently a fact of life.
<rant>With all of RMS's talk about "subjugation", and Microsoft "forcing"
people into using their software, he seems pretty happy to "force" people into
using the new license, and cause others to turn around and pressure their
friends to do the same -- does this remind anybody else of the early days of
communism in China? Oh, wait. No. I almost forgot: people aren't getting
*killed* for doing or not doing these things -- what's "subjugation" mean
again?</rant>
Anyway. Sorry for that. I found this link useful:
http://www.groklaw.net/articlebasic.php?story=20060118155841115
and I got the above quotes from row #5.
My understanding is that GPLv2 can link to libraries that are less
restrictive (for instance BSD/MIT/LGPLv2) as long as they are GPL-
compatible, but LGPLv3 is more restrictive which is why that doesn't
work.
BTW, I totally agree with your rant.
- Robert
The Sage program overall is GPL3. The Sage library (new python/cython code)
itself is still "GPLv2 or later", since it could be (in fact is) used
with GMP-4.2.1
and GSL-1.9.
> Similarly, if there is a library which is GPL2 only, we cannot
> include it once we've included gmp4.2.2. This is utterly ridiculous, but
> apparently a fact of life.
It is true that we cannot include any GPLv2 only libraries if we include
GMP-4.2.2. Singular is a library with that property, so no matter what
happens we won't be including GMP-4.2.2 (or GSL-1.10) until Singular
is relicensed. If for some reason the Singular people do decide not
to relicense, then we would be in quite a pickle (and would probably
be forced to fork GMP).
> Anyway. Sorry for that. I found this link useful:
>
> http://www.groklaw.net/articlebasic.php?story=20060118155841115
>
> and I got the above quotes from row #5.
Excellent, many thanks for posting that, but I hope nobody else
looks at it, since unfortunately it seems to be seriously out of date.
It's from January 2006 and the GPLv3 changed a lot since then.
william
What you're missing here is that gmp4.2.2 is not GPL3 licensed; it is
LGPL3 licensed. I don't know of any SAGE component that is planning
to switch to being GPL3(-only) licensed.
Carl Witty
>
> Anyway. Sorry for that. I found this link useful:
>
> http://www.groklaw.net/articlebasic.php?story=20060118155841115
>
> and I got the above quotes from row #5.
>
FYI, this is a diff to an old draft of GPLv3! Mark the date.
Read the real thing: http://www.gnu.org/licenses/lgpl-3.0.html
Jaap
GSL (http://www.gnu.org/software/gsl/), which is an extremely
important component of Sage, has made a new release and it is
GPL3-only licensed.
William
No; that's not how it works. LGPL3 is much less restrictive than
GPL2; LGPL3 can link to anything, including proprietary software.
It's GPL2 that's restrictive here; like you say, GPL2 software can
link to anything GPL2-compatible. The problem is that LGPL3 is not
GPL2-compatible.
Let me go through an example to explain why LGPL3 is not GPL2-
compatible.
Imagine a hypothetical Ovit-brand scientific calculator. The Ovit
calculator is far more powerful than any previous scientific
calculator; in fact, it can do anything SAGE can do...because it
includes SAGE. The Ovit comes with a CD containing the complete
source code to SAGE, which makes the Ovit totally legal. The sad
thing about the Ovit, though, is that there's no way to fix bugs. The
Ovit software is cryptographically signed, and only Ovit themselves
can produce new software that runs on this calculator.
This goes totally against one of the original reasons for the free
software movement, which is that users should be able to fix bugs in
the software they use. Even so, Singular is released with a license
(the GPL2) that says that Ovit is allowed to build their calculator
using Singular and any derived work of Singular (which arguably
includes SAGE). In other words, as long as SAGE is a derived work of
Singular and Singular is licensed GPL2-only, William Stein is
responsible for ensuring that every component of SAGE is suitable for
Ovit to take and install on their non-user-modifiable calculator.
Now, GMP 4.2.2 is released with a license (the LGPL3) that says (among
many other things) that if Ovit wants to use GMP, they must make it
possible for the user to replace GMP on their calculator (to fix bugs,
or use higher-performance algorithms, or whatever). Since Ovit can't
use GMP 4.2.2 (while retaining their non-user-modifiable business
plan), neither can SAGE (while SAGE is a derived work of Singular and
Singular is GPL2-only).
Since one of the main purposes of the GPL3 and LGPL3 is to discourage
Ovit-style devices (which would normally be called Tivo-style
devices), by not providing code for people to use on them, and the
GPL2 requires that any GPL2-compatible license allow use on Ovit-style
devices, it's not surprising that they are incompatible.
As far as getting people to pressure their friends into using the
GPL3, it's hardly a new tactic. That's the whole point of a copyleft-
style license.
Please don't take this as implying that I approve of the GPL3 and
LGPL3; I haven't decided yet one way or another. I dislike Tivo-style
devices, and would dislike them much more if they included code that I
had written and released under the GPL2. On the other hand, the GPL2
vs. GPL3 arguments, and forks, and rewritten code, and bad feelings,
are pretty bad too. Maybe in a few years, with the benefit of
hindsight, I'll decide whether I like the GPL3. (Even then, though,
we still won't know what the world without GPL3 would have been like.)
Carl Witty