Quantcast

Can we freely use AMOS in Octave?

classic Classic list List threaded Threaded
22 messages Options
12
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Can we freely use AMOS in Octave?

Jordi Gutiérrez Hermoso-2
Hello, regarding this discussion:

    http://octave.1599824.n4.nabble.com/Fwd-OctDev-libcruft-amos-nonfree-Bessel-code-in-Octave-td4632360.html

It has been discovered that since 1998 we have been using the
dubiously-licensed AMOS in GNU Octave, a free numerical environment
mostly compatible with Matlab. Can you confirm that this is
acceptable? We require being able to use the AMOS code in a
GPL-compatible way:

    http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean

In particular, we cannot use AMOS if you insist on forbidding
commercial use. Note that the GPL allows commercial use, so adding
such a restriction is GPL-incompatible.

Please carefully consider all of Octave's users, such as the thousands
of Coursera students who have and are currently taking gratis online
courses and using Octave for their computations. If you cannot confirm
that using AMOS in Octave is acceptable, our users may suddenly lose
features they've been enjoying since 1998.

Thanks,
- Jordi G. H.
  GNU Octave developer
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Jordi Gutiérrez Hermoso-2
On 10 August 2012 11:39, Jordi Gutiérrez Hermoso <[hidden email]> wrote:
> Hello, regarding this discussion:
>
>     http://octave.1599824.n4.nabble.com/Fwd-OctDev-libcruft-amos-nonfree-Bessel-code-in-Octave-td4632360.html

I got an automated reply from that [hidden email] email, and they
made me use a web form instead. Here is the result:

    https://s100.copyright.com/CustomerAdmin/SVP3.jsp?mac=5N1Zg7XrtSWHvIJ6P4FDKwzz&oNum=500690905&pName=ACM

As jwe and Dima Sergatskov have pointed out to me privately, Matlab is
using the same library, so I'd be kinda surprised if this turned out
to be a problem.

- Jordi G. H.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Steven G. Johnson
Jordi Gutiérrez Hermoso <jordigh <at> octave.org> writes:
> As jwe and Dima Sergatskov have pointed out to me privately, Matlab
> is using the same library, so I'd be kinda surprised if this turned
> out to be a problem.

Unfortunately, Mathworks could easily have purchased a commercial license
from ACM.

One possibility that occurred to me is that, since the AMOS code was
developed at Sandia National Labs, it was a work of the US Govt and therefore
automatically in the public domain (ineligible for copyright).  However, it
looks like Sandia is technically a government contractor rather than a
government agency per se, and they certainly produce copyrighted software
these days (https://software.sandia.gov/).

As an alternative, I am evaluating a package called COULCC (also written
in the 1980s).  COULCC, like AMOS, was also posted without a copyright
license, and later published in a journal (Computer Physics Communications, CPC:
see http://dx.doi.org/10.1016/0010-4655(85)90025-6 ) that distributes
code under a semi-free (non-commercial-use) license.  However, CPC (unlike
ACM) explicitly says that authors retain the copyright on the code, and
I was able to contact the COULCC author yesterday and graciously provided
me with a version of his code under the MIT/X11 license.

COULCC has some potential technical advantages over AMOS, separate from
the legal questions.  It can evaluate Bessel functions of complex order
in addition to complex arguments (AMOS only handles complex arguments
and real orders), and has routines to compute J and Y simultaneously,
as well as variants (modified Bessel functions, spherical Bessel
functions, Hankel functions, exponentially scaled Bessel and Hankel
functions, and Coulomb wavefunctions).

(COULCC was originally written in Fortran 77, but the version I now have
has been updated with a little bit of Fortran 90 code.  It probably
requires a bit of work to make it convenient to call from C/C++, and is
currently non-reentrant.)

Steven

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Dmitri A. Sergatskov
On Fri, Aug 10, 2012 at 12:14 PM, Steven G. Johnson
<[hidden email]> wrote:
> Jordi Gutiérrez Hermoso <jordigh <at> octave.org> writes:
>> As jwe and Dima Sergatskov have pointed out to me privately, Matlab
>> is using the same library, so I'd be kinda surprised if this turned
>> out to be a problem.
>
> Unfortunately, Mathworks could easily have purchased a commercial license
> from ACM.
>

What about GSL code?
http://www.gnu.org/software/gsl/manual/html_node/Special-Functions.html

Dmitri.
--
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Steven G. Johnson
On 8/10/12 3:43 PM, Dmitri A. Sergatskov wrote:
> What about GSL code?
> http://www.gnu.org/software/gsl/manual/html_node/Special-Functions.html
>
> Dmitri.

The GSL code only supports real arguments, whereas both Octave and
Matlab support complex arguments.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Susi Lehtola
On Fri, 10 Aug 2012 15:59:49 -0400
"Steven G. Johnson" <[hidden email]> wrote:

> On 8/10/12 3:43 PM, Dmitri A. Sergatskov wrote:
> > What about GSL code?
> > http://www.gnu.org/software/gsl/manual/html_node/Special-Functions.html
> >
> > Dmitri.
>
> The GSL code only supports real arguments, whereas both Octave and
> Matlab support complex arguments.
 
.. so shouldn't this capability be added in GSL instead?
--
Jussi Lehtola
Fedora Project Contributor
[hidden email]
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Steven G. Johnson
Jussi Lehtola wrote:
>> The GSL code only supports real arguments, whereas both Octave and
>> Matlab support complex arguments.
>  
> .. so shouldn't this capability be added in GSL instead?

Possibly, but in the meantime Octave still needs complex-argument Bessel
functionality.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Jordi Gutiérrez Hermoso-2
On 10 August 2012 19:20, Steven G. Johnson <[hidden email]> wrote:

> Jussi Lehtola wrote:
>>>
>>> The GSL code only supports real arguments, whereas both Octave and Matlab
>>> support complex arguments.
>>
>>  .. so shouldn't this capability be added in GSL instead?
>
>
> Possibly, but in the meantime Octave still needs complex-argument Bessel
> functionality.

I don't think we're in such a rush. Realistically, complex-argument
Bessel functions are not a killer feature.

- Jordi G. H.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Jordi Gutiérrez Hermoso-2
In reply to this post by Steven G. Johnson
On 10 August 2012 13:14, Steven G. Johnson <[hidden email]> wrote:
> Jordi Gutiérrez Hermoso <jordigh <at> octave.org> writes:
>> As jwe and Dima Sergatskov have pointed out to me privately, Matlab
>> is using the same library, so I'd be kinda surprised if this turned
>> out to be a problem.
>
> Unfortunately, Mathworks could easily have purchased a commercial license
> from ACM.

I kinda doubt it. TMW has played fast and loose with licenses in the
past (e.g. accepting code into Matlab Central for many years with no
clear license given, just like the Amos code itself), and the Amos
code is far enough in the past that it would be consistent with this
treatment.

Let's wait for the ACM response before we decide to do anything. This
may be all be a very minor thing.

- Jordi G. H.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Robert T. Short
In reply to this post by Jordi Gutiérrez Hermoso-2
On 08/10/2012 07:54 PM, Jordi Gutiérrez Hermoso wrote:

> On 10 August 2012 19:20, Steven G. Johnson <[hidden email]> wrote:
>> Jussi Lehtola wrote:
>>>> The GSL code only supports real arguments, whereas both Octave and Matlab
>>>> support complex arguments.
>>>   .. so shouldn't this capability be added in GSL instead?
>>
>> Possibly, but in the meantime Octave still needs complex-argument Bessel
>> functionality.
> I don't think we're in such a rush. Realistically, complex-argument
> Bessel functions are not a killer feature.
>
> - Jordi G. H.
>
>
It is for me.  On the other hand if push comes to shove I will help fix
the problem.  Making a good Bessel function routine isn't all that
trivial, but the algorithms have been published and I think we could do
just fine.

I don't think we should be getting our knickers in a knot though. The
code on the netlib site is a modification of the original ACM code and I
think the whole licensing thing is going to get real murky.  I wonder if
Amos is still around?  He might be the best one to ask for permission.  
I will look into that.

Bob
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Steven G. Johnson
In reply to this post by Jordi Gutiérrez Hermoso-2
Jordi Gutiérrez Hermoso wrote:

> On 10 August 2012 13:14, Steven G. Johnson <[hidden email]> wrote:
>> Jordi Gutiérrez Hermoso <jordigh <at> octave.org> writes:
>>> As jwe and Dima Sergatskov have pointed out to me privately, Matlab
>>> is using the same library, so I'd be kinda surprised if this turned
>>> out to be a problem.
>> Unfortunately, Mathworks could easily have purchased a commercial license
>> from ACM.
>
> I kinda doubt it. TMW has played fast and loose with licenses in the
> past (e.g. accepting code into Matlab Central for many years with no
> clear license given, just like the Amos code itself), and the Amos
> code is far enough in the past that it would be consistent with this
> treatment.

Matlab Central is a different situation; thanks to the safe-harbor
provisions of the DMCA, they aren't responsible for policing
user-uploaded content, just for taking it down if there is a complaint.

I seriously doubt that Mathworks doesn't legal counsel scrutinizing the
copyright and license terms of all code that ships in Matlab.  I have
dealt with their licensing people personally in the past, and they
definitely purchase licenses to third-party code.

> Let's wait for the ACM response before we decide to do anything. This
> may be all be a very minor thing.

PS. I hope remembered to refer to "TOMS Algorithm 644" in your email;
ACM wouldn't know the code under the name of "AMOS".

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Daniel Sebald
In reply to this post by Steven G. Johnson
On 08/10/2012 06:20 PM, Steven G. Johnson wrote:
> Jussi Lehtola wrote:
>>> The GSL code only supports real arguments, whereas both Octave and
>>> Matlab support complex arguments.
>>
>> .. so shouldn't this capability be added in GSL instead?
>
> Possibly, but in the meantime Octave still needs complex-argument Bessel
> functionality.

How many routines are required from the library?  Is it few enough that
we could write the routine ourselves?  If it were one or two, looking up
a few papers and writing some code might not be too bad.

Dan
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Robert T. Short
On 08/11/2012 09:33 AM, Daniel J Sebald wrote:

> On 08/10/2012 06:20 PM, Steven G. Johnson wrote:
>> Jussi Lehtola wrote:
>>>> The GSL code only supports real arguments, whereas both Octave and
>>>> Matlab support complex arguments.
>>>
>>> .. so shouldn't this capability be added in GSL instead?
>>
>> Possibly, but in the meantime Octave still needs complex-argument Bessel
>> functionality.
>
> How many routines are required from the library?  Is it few enough
> that we could write the routine ourselves?  If it were one or two,
> looking up a few papers and writing some code might not be too bad.
>
> Dan
>
>
There are 66 files, each fairly complex.  This is not a trivial
undertaking, but the algorithms for each are published in the ACM. If we
can't use the code, we can still use the algorithms.  The real issue is
that we should probably get a little more serious than that if we really
have to go that way.  Those older routines were very heavily optimized
for the computers of 1984, and many of those constraints have changed
(to say the least).

Bob
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Steven G. Johnson
In reply to this post by Jordi Gutiérrez Hermoso-2
I found something encouraging:

The AMOS functions are included in SLATEC, and the SLATEC guide
(http://www.netlib.org/slatec/guide) explicitly states:

        "The Library is in the public domain and distributed by the Energy
Science and Technology Software Center."

Mention of AMOS's inclusion in SLATEC goes back at least to this 1985
technical report from Sandia National Labs:
     http://infoserve.sandia.gov/sand_doc/1985/851018.pdf

Since the national laboratories which distribute SLATEC and which are
the authors of AMOS are willing to certify in writing that the code is
in the public domain, it looks like we are off the hook?

(i.e. the possibility of copyright assignment to ACM is irrelevant
because it wasn't copyrighted to begin with.)

Steven


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Can we freely use AMOS in Octave?

ACM Permissions
In reply to this post by Jordi Gutiérrez Hermoso-2
Hello Jordi,

Thank you for your inquiry and for explaining your dilemma.  Please forgive the delayed reply and be assured that ACM does not forbid commercial use of the algorithms, but you do require a commercial use license, which is an addendum to the ACM Software License Agreement referenced in the discussion included in your email.  

The Commercial license may be modified as needed to suit Coursera's requirements as it regards GPL distribution, however the fee will need to be adjusted accordingly.

You will note that ACM Policy also requires the original author's consent to your use as a professional courtesy.

Let me know if you have any further questions.


Regards,

Deborah Cotton
Copyright & Permissions
ACM Publications
212.626.0652
[hidden email]


-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Jordi Gutiérrez Hermoso
Sent: Friday, August 10, 2012 11:39 AM
To: [hidden email]
Cc: Octave Maintainers List
Subject: Can we freely use AMOS in Octave?

Hello, regarding this discussion:

    http://octave.1599824.n4.nabble.com/Fwd-OctDev-libcruft-amos-nonfree-Bessel-code-in-Octave-td4632360.html

It has been discovered that since 1998 we have been using the dubiously-licensed AMOS in GNU Octave, a free numerical environment mostly compatible with Matlab. Can you confirm that this is acceptable? We require being able to use the AMOS code in a GPL-compatible way:

    http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean

In particular, we cannot use AMOS if you insist on forbidding commercial use. Note that the GPL allows commercial use, so adding such a restriction is GPL-incompatible.

Please carefully consider all of Octave's users, such as the thousands of Coursera students who have and are currently taking gratis online courses and using Octave for their computations. If you cannot confirm that using AMOS in Octave is acceptable, our users may suddenly lose features they've been enjoying since 1998.

Thanks,
- Jordi G. H.
  GNU Octave developer


Commlicense.ltrhead.doc (81K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Can we freely use AMOS in Octave?

Michael Godfrey
In reply to this post by Jordi Gutiérrez Hermoso-2
Jordi,

Not a very helpful response from the ACM.  It did not read as if they had
actually read your email.

But, it appears that they do not have the right to the copyright anyhow.

I do not think anyone should give them $500 for a commercial license,
certainly not us, or Coursera.

mdg

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Dmitri A. Sergatskov
On Thu, Aug 16, 2012 at 8:31 PM, Michael D Godfrey
<[hidden email]> wrote:
....
> I do not think anyone should give them $500 for a commercial license,
> certainly not us, or Coursera.
>
> mdg
>

Moreover, paying $500 would not solve the problem, the license remains not
compatible with GPL.

Dmitri.
--
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Dmitri A. Sergatskov
In reply to this post by Steven G. Johnson
On Fri, Aug 10, 2012 at 12:14 PM, Steven G. Johnson
<[hidden email]> wrote:

> As an alternative, I am evaluating a package called COULCC (also written
> in the 1980s).  COULCC, like AMOS, was also posted without a copyright
> license, and later published in a journal (Computer Physics Communications, CPC:
> see http://dx.doi.org/10.1016/0010-4655(85)90025-6 ) that distributes
> code under a semi-free (non-commercial-use) license.  However, CPC (unlike
> ACM) explicitly says that authors retain the copyright on the code, and
> I was able to contact the COULCC author yesterday and graciously provided
> me with a version of his code under the MIT/X11 license.
>
> COULCC has some potential technical advantages over AMOS, separate from
> the legal questions.  It can evaluate Bessel functions of complex order
> in addition to complex arguments (AMOS only handles complex arguments
> and real orders), and has routines to compute J and Y simultaneously,
> as well as variants (modified Bessel functions, spherical Bessel
> functions, Hankel functions, exponentially scaled Bessel and Hankel
> functions, and Coulomb wavefunctions).
>
> (COULCC was originally written in Fortran 77, but the version I now have
> has been updated with a little bit of Fortran 90 code.  It probably
> requires a bit of work to make it convenient to call from C/C++, and is
> currently non-reentrant.)
>

It appears to me that COULCC is a part of the Fresco coide
http://www.fresco.org.uk/download.htm
with a FRES version available "for public distribution"
(I do not see an explicit licensing):

http://www.fresco.org.uk/source/fres-v29.html

> Steven
>

Dmitri.
--
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Dmitri A. Sergatskov
On Fri, Aug 17, 2012 at 12:24 AM, Dmitri A. Sergatskov
<[hidden email]> wrote:

> with a FRES version available "for public distribution"
> (I do not see an explicit licensing):
>
> http://www.fresco.org.uk/source/fres-v29.html
>

http://www.fresco.org.uk/functions.htm
has links to the special function codes as well as to a copy
of the paper.

Dmitri.
--
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can we freely use AMOS in Octave?

Steven G. Johnson
In reply to this post by Dmitri A. Sergatskov
Dmitri A. Sergatskov wrote:

> On Fri, Aug 10, 2012 at 12:14 PM, Steven G. Johnson
> <[hidden email]> wrote:
>
>> As an alternative, I am evaluating a package called COULCC (also written
>> in the 1980s).  COULCC, like AMOS, was also posted without a copyright
>> license, and later published in a journal (Computer Physics Communications, CPC:
>> see http://dx.doi.org/10.1016/0010-4655(85)90025-6 ) that distributes
>> code under a semi-free (non-commercial-use) license.  However, CPC (unlike
>> ACM) explicitly says that authors retain the copyright on the code, and
>> I was able to contact the COULCC author yesterday and graciously provided
>> me with a version of his code under the MIT/X11 license.
>>
>> COULCC has some potential technical advantages over AMOS, separate from
>> the legal questions.  It can evaluate Bessel functions of complex order
>> in addition to complex arguments (AMOS only handles complex arguments
>> and real orders), and has routines to compute J and Y simultaneously,
>> as well as variants (modified Bessel functions, spherical Bessel
>> functions, Hankel functions, exponentially scaled Bessel and Hankel
>> functions, and Coulomb wavefunctions).
>>
>> (COULCC was originally written in Fortran 77, but the version I now have
>> has been updated with a little bit of Fortran 90 code.  It probably
>> requires a bit of work to make it convenient to call from C/C++, and is
>> currently non-reentrant.)
>>
>
> It appears to me that COULCC is a part of the Fresco coide
> http://www.fresco.org.uk/download.htm
> with a FRES version available "for public distribution"
> (I do not see an explicit licensing):
>
> http://www.fresco.org.uk/source/fres-v29.html

I received a copy of COULCC with an explicit MIT/X11 license directly
from the original author.  This version of the code (including the
permission email from the author), along with a re-entrant C++
translation that I created (semi-automated, but not f2c), is available at:

     http://jdj.mit.edu/~stevenj/coulcc-20120813.tgz

However, the code (both the Fortran original and my C++ translation) has
a problem that turned up in my evaluation: it has significantly worse
accuracy than AMOS for some moderate-size Bessel orders (~ 10).  The
original author is taking a look at this, but at the moment it may be
problematic as a drop-in replacement for AMOS.

However, AMOS's inclusion in SLATEC, which has an explicit public-domain
statement by the national laboratories, seems like it may fix the
licensing problem with AMOS and eliminate the need for ACM permission.

Steven


12
Loading...