mpsolve

289 views
Skip to first unread message

Jason Grout

unread,
Jun 4, 2013, 4:57:12 PM6/4/13
to sage-...@googlegroups.com
I'm at a conference and just talked with Leonardo Robol, one of the
developers of mpsolve [1]. A while ago, there was some interest in
incorporating mpsolve into Sage [2], but at that time mpsolve was not
GPL compatible. Just recently, mpsolve was switched to GPLv3. Leonardo
and I were going to try to get together and sit down and work on getting
mpsolve into Sage. However, there is a question about licenses. Do we
need mpsolve to have a GPLv3+ license? Leonardo said that if it was
needed, they could probably even change the license to GPLv2+.

(Leonardo also said he used Sage to generate test polynomials for
testing some new algorithms in mpsolve, so chalk that up to one more use
of Sage.)

Thanks,

Jason

[1] http://poisson.phc.unipi.it/~robol/trac/

[2]
https://groups.google.com/forum/?fromgroups#!msg/sage-devel/QjzwzsMkEG8/Y5DGJ9mo5jYJ

Volker Braun

unread,
Jun 4, 2013, 5:53:03 PM6/4/13
to sage-...@googlegroups.com
Sage is GPL v3, so that is perfect already.

Jason Grout

unread,
Jun 4, 2013, 9:21:36 PM6/4/13
to sage-...@googlegroups.com
On 6/4/13 5:53 PM, Volker Braun wrote:
> Sage is GPL v3, so that is perfect already.
>

Do we have core packages that are GPLv3 only, or GPLv3+? It sounds like
if we wanted to request a license change, now's the time to do it.

Jason


William Stein

unread,
Jun 5, 2013, 12:51:49 AM6/5/13
to sage-...@googlegroups.com
The vast majority of GPLv3-licensed software in Sage is GPLv3+.
However, there are a very few GPLv3-only components: palp, sagenb,
and zn_poly, at least according to our COPYING.txt, which we
distribute. Also, Singular is "GPLv2 or GPLv3".

Anything that was GPLv2-only was a pain in the ass, because GPLv2-only
is not compatible with GPLv3. If there is ever a GPLvx for x > 3, and
we have to use something licensed under it, then we may have to remove
or rewrite anything that is GPLv3-only.

In short, as others said above, GPLv3-only is OK for Sage, but being
GPLv3+ compatible is much more common and much more desirable.

-- William


>
> Jason
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+...@googlegroups.com.
> To post to this group, send email to sage-...@googlegroups.com.
> Visit this group at http://groups.google.com/group/sage-devel?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>



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

Julien Puydt

unread,
Jun 5, 2013, 1:29:29 AM6/5/13
to sage-...@googlegroups.com
Le 05/06/2013 06:51, William Stein a �crit :
> On Tue, Jun 4, 2013 at 6:21 PM, Jason Grout <jason...@creativetrax.com> wrote:
>> On 6/4/13 5:53 PM, Volker Braun wrote:
>>>
>>> Sage is GPL v3, so that is perfect already.
>>>
>>
>> Do we have core packages that are GPLv3 only, or GPLv3+? It sounds like if
>> we wanted to request a license change, now's the time to do it.
>
> The vast majority of GPLv3-licensed software in Sage is GPLv3+.
> However, there are a very few GPLv3-only components: palp, sagenb,
> and zn_poly, at least according to our COPYING.txt, which we
> distribute. Also, Singular is "GPLv2 or GPLv3".
>
> Anything that was GPLv2-only was a pain in the ass, because GPLv2-only
> is not compatible with GPLv3. If there is ever a GPLvx for x > 3, and
> we have to use something licensed under it, then we may have to remove
> or rewrite anything that is GPLv3-only.
>
> In short, as others said above, GPLv3-only is OK for Sage, but being
> GPLv3+ compatible is much more common and much more desirable.

Let me again point out that you have to make a distinction between
sage-the-distribution and sage-the-library.

If sage-the-distribution has GPLv2 and GPLv3 packages, there is no problem.

If sage-the-library links to GPLv2 and GPLv3 packages, there is a
problem (incompatible licenses).

Snark on #sagemath

William Stein

unread,
Jun 5, 2013, 2:06:11 AM6/5/13
to sage-...@googlegroups.com
On Tue, Jun 4, 2013 at 10:29 PM, Julien Puydt <julien...@laposte.net> wrote:
Yep. It turns out that mpsolve is a C program [1], and one so that is
very likely that sage-the-library would link to it at the C-library
level, via compile-time Cython bindings.

-- William

[1] http://poisson.phc.unipi.it/~robol/trac/browser/src#mpsolve

>
> Snark on #sagemath

Jason Grout

unread,
Jun 5, 2013, 9:29:00 AM6/5/13
to sage-...@googlegroups.com
On 6/5/13 2:06 AM, William Stein wrote:
> On Tue, Jun 4, 2013 at 10:29 PM, Julien Puydt <julien...@laposte.net> wrote:
>> Le 05/06/2013 06:51, William Stein a �crit :
Huh, I can't find the GPL3 information you quote above in COPYING.txt;
for example, palp just says "GPL":
http://hg.sagemath.org/sage-root/src/3a18de90aa0fb0fa09c40dd5482e3187468ae532/COPYING.txt?at=default

Yes, the Cython bindings is what I've been working on. So to clarify:

* does sage-the-library already link to GPLv3-only or GPLv3+ packages?
* does sage-the-library already link to GPLv2-only packages?

If both questions are answered yes, this is a problem. If the second
question is answered yes, then I'll ask for mpsolve to consider changing
to GPLv2+ license. If the answers are (yes, no), then I'll ask mpsolve
to consider changing to GPLv2+ or GPLv3+.

Thanks,

Jason


William Stein

unread,
Jun 5, 2013, 11:03:38 AM6/5/13
to sage-...@googlegroups.com
On Wed, Jun 5, 2013 at 6:29 AM, Jason Grout <jason...@creativetrax.com> wrote:
> Huh, I can't find the GPL3 information you quote above in COPYING.txt; for
> example, palp just says "GPL":
> http://hg.sagemath.org/sage-root/src/3a18de90aa0fb0fa09c40dd5482e3187468ae532/COPYING.txt?at=default
>

line 85 of COPYING.txt in sage-10.rc0:

palp GPLv3

> Yes, the Cython bindings is what I've been working on. So to clarify:
>
> * does sage-the-library already link to GPLv3-only or GPLv3+ packages?

It links to zn_poly which is "GPLv3 only" or "GPLv2 only", but no
later versions.

palp is a GPLv3-only C library; currently, the Sage library only uses
it by calling out to it as a separate process, so this isn't binary
level linking (so it's OK). However, if somebody were to rewrite
things so palp is used via Cython (as a shared library), then the
situation would change. And this is of course *precisely* what Sage
developers very often do -- take something that is called by Sage as a
separate process, and make it instead available via Cython calls, in
order to get a 100-1000x speedup in some cases. This is why the fact
that some external program is not binary linked in Sage as a shared
library today is not a good reason to ignore "derived works"
licensing issues. I would hate to reject a good patch that speed
Sage up by a factor of 100 simply because of license issues.

> * does sage-the-library already link to GPLv2-only packages?

There is absolutely no GPLv2-only code in all of Sage. There *was*,
but we went through every single such thing and sorted it out long ago
when GPLv3 came out. It was all a pain. I'm against having to deal
with such pain again.

> If both questions are answered yes, this is a problem. If the second
> question is answered yes, then I'll ask for mpsolve to consider changing to
> GPLv2+ license. If the answers are (yes, no), then I'll ask mpsolve to
> consider changing to GPLv2+ or GPLv3+.
>
> Thanks,
>
> Jason
>
>
>

Volker Braun

unread,
Jun 5, 2013, 11:38:51 AM6/5/13
to sage-...@googlegroups.com
We could probably get PALP relicensed as GPLv3+ if we ask, I don't think that would be a problem. The zn_poly author seems to have some philosophical issue against v3+ for some reason, though.

William Stein

unread,
Jun 5, 2013, 11:43:55 AM6/5/13
to sage-...@googlegroups.com
On Wed, Jun 5, 2013 at 8:38 AM, Volker Braun <vbrau...@gmail.com> wrote:
> We could probably get PALP relicensed as GPLv3+ if we ask, I don't think
> that would be a problem.

Can you please try? (Based on the argument I mentioned before.)


> The zn_poly author seems to have some philosophical
> issue against v3+ for some reason, though.

Indeed. In the long run, maybe some new version of FLINT will
completely subsume zn_poly in functionality, and we can remove
zn_poly...

-- William

>
> On Wednesday, June 5, 2013 4:03:38 PM UTC+1, William wrote:
>>
>> It links to zn_poly which is "GPLv3 only" or "GPLv2 only", but no
>> later versions.
>> palp is a GPLv3-only C library;
>

dmharvey

unread,
Jun 5, 2013, 7:29:25 PM6/5/13
to sage-...@googlegroups.com


On Thursday, 6 June 2013 01:43:55 UTC+10, William wrote:
>  The zn_poly author seems to have some philosophical
> issue against v3+ for some reason, though.

Indeed.  In the long run, maybe some new version of FLINT will
completely subsume zn_poly in functionality, and we can remove zn_poly...

Would it help if I relicensed zn_poly under a BSD-style license?

Note that a few bits of zn_poly are from GPLv2+ and LGPLv2.1+ projects (see COPYING in the zn_poly distribution), so in effect I believe it would behave like GPLv2+ if I did that.

It would probably be a good thing for FLINT to eventually replace zn_poly. I once had grand plans for zn_poly but I don't think they will ever happen. It's basically an unfinished piece of code.

david

William Stein

unread,
Jun 5, 2013, 8:13:33 PM6/5/13
to sage-...@googlegroups.com
On Wed, Jun 5, 2013 at 4:29 PM, dmharvey <d.ha...@unsw.edu.au> wrote:
>
>
> On Thursday, 6 June 2013 01:43:55 UTC+10, William wrote:
>>
>> > The zn_poly author seems to have some philosophical
>> > issue against v3+ for some reason, though.
>>
>> Indeed. In the long run, maybe some new version of FLINT will
>> completely subsume zn_poly in functionality, and we can remove zn_poly...
>
>
> Would it help if I relicensed zn_poly under a BSD-style license?

Yes, that would be very, very nice. Thanks!!

-- William

> Note that a few bits of zn_poly are from GPLv2+ and LGPLv2.1+ projects (see
> COPYING in the zn_poly distribution), so in effect I believe it would behave
> like GPLv2+ if I did that.
>
> It would probably be a good thing for FLINT to eventually replace zn_poly. I
> once had grand plans for zn_poly but I don't think they will ever happen.
> It's basically an unfinished piece of code.

... I know the feeling.

>
> david

Jason Grout

unread,
Jun 5, 2013, 11:25:56 PM6/5/13
to sage-...@googlegroups.com
On 6/5/13 8:13 PM, William Stein wrote:
>> It would probably be a good thing for FLINT to eventually replace zn_poly. I
>> >once had grand plans for zn_poly but I don't think they will ever happen.
>> >It's basically an unfinished piece of code.
> ... I know the feeling.
>

William: I hope you're not talking about Sage!

On the other hand, I don't think Sage will ever be "finished"...

Jason


dmharvey

unread,
Jul 6, 2013, 8:13:28 AM7/6/13
to sage-...@googlegroups.com


On Thursday, 6 June 2013 10:13:33 UTC+10, William wrote:
On Wed, Jun 5, 2013 at 4:29 PM, dmharvey <d.ha...@unsw.edu.au> wrote:
>
> On Thursday, 6 June 2013 01:43:55 UTC+10, William wrote:
>
> Would it help if I relicensed zn_poly under a BSD-style license?

Yes, that would be very, very nice.    Thanks!!


OK. I am sorry for the delay.

I hereby make the following public proclamation:

zn_poly 0.9 is released under a new license.

Replace the COPYING file in the source distribution with the following:

========================= begin

zn_poly: a library for polynomial arithmetic (version 0.9)

Copyright (C) 2013, David Harvey

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

***EXCEPTIONS***
zn_poly incorporates small amounts of code from other projects, which have different licensing requirements:

   The file "wide_arith.h" includes some assembly macros from the file
   "longlong.h" in GMP 4.2.1; see http://gmplib.org/. The copyright to this
   code is held by the Free Software Foundation, and it was released under
   "LGPL v2.1 or later".
  
   The file "wide_arith.h" also includes assembly macros from the file
   "SPMM_ASM.h" in NTL 5.4.1; see http://www.shoup.net/ntl/. The copyright
   to this code is held by Victor Shoup, and it was released under "GPL v2 or
   later".
  
   The filer "profiler.h" contains x86 cycle counting code from the file
   "profiler.h" in FLINT 1.0; see http://www.flintlib.org/. The copyright
   to this code is held by William Hart, and it was released under "GPL v2 or
   later".

========================= end

The various source/header files also contain licensing information in the first couple of lines. These should be changed in the obvious way to be consistent with the above statement.

I am not going to release a new tarball with these changes. Already the version on my web page is pretty out of date, it doesn't include a lot of patches that are floating around (in Sage and elsewhere).

Also anything I write on this mailing list is far more permanent than anything I put on my web page!

david

Reply all
Reply to author
Forward
0 new messages