Discussion:
[julia-dev] Licensing Advice when wrapping GPL software
Nathan Smith
2016-08-19 13:51:41 UTC
Permalink
Hi Folks,

I'd like some advice on my first package. I'm building a package to
interact with Maxima (similar in spirit to RCall.jl etc..). Maxima is under
the GPL license so my question is this: Does this mean my package must also
be GPL licensed? Do I have to supply the Maxima source code to respect
Maxima's license in my package?

Building Maxima.jl has been a great experience, I'd just like to cover my
bases before I start sharing my package broadly. Any advice would be
greatly appreciated!

The package is here <https://github.com/nsmith5/Maxima.jl> if anyone is
interested :)

Best,
Nathan
Stefan Karpinski
2016-08-19 14:02:00 UTC
Permalink
In short, no. If your package merely interacts with Maxima and is not
derived from Maxima, then it can have its own license, which is entirely
independent of Maxima's license. So if you're not copying code from Maxima,
then it can be MIT or whatever you like. The combined product of Julia +
your package + Maxima is a little more complicated and it depends on
whether the result constitutes a single "derived work" or not, but you
would not be distributing that, so you're not bound to the terms of that
combination. In order for the combination to be unambiguously usable and
distributable, you'll want to pick a GPL-compatible license for Maxima.jl –
e.g. MIT, BSD or GPL. If you start distributing the combination, then
you're bound to the terms of the GPL for Maxima, but you would be anyway
since you'd be distributing Maxima then.

Cool package :)
Post by Nathan Smith
Hi Folks,
I'd like some advice on my first package. I'm building a package to
interact with Maxima (similar in spirit to RCall.jl etc..). Maxima is under
the GPL license so my question is this: Does this mean my package must also
be GPL licensed? Do I have to supply the Maxima source code to respect
Maxima's license in my package?
Building Maxima.jl has been a great experience, I'd just like to cover my
bases before I start sharing my package broadly. Any advice would be
greatly appreciated!
The package is here <https://github.com/nsmith5/Maxima.jl> if anyone is
interested :)
Best,
Nathan
Nathan Smith
2016-08-19 15:11:54 UTC
Permalink
Ok great, thanks for clarifying! So if I choose to add binary support
through something like BinDeps I should be choosing something
GPL-compatible right?
Tony Kelman
2016-08-19 15:36:08 UTC
Permalink
Yes that would be the least risky. It would also be a useful courtesy to
users to note clearly the fact that the package wraps and downloads
GPL-licensed software upon installation.
Post by Nathan Smith
Ok great, thanks for clarifying! So if I choose to add binary support
through something like BinDeps I should be choosing something
GPL-compatible right?
Steven G. Johnson
2016-08-19 16:50:13 UTC
Permalink
Post by Stefan Karpinski
In short, no. If your package merely interacts with Maxima and is not
derived from Maxima, then it can have its own license,
To clarify, according to the FSF's legal counsel, if you interact with a program
that is forked into a separate address space
<https://www.gnu.org/licenses/gpl-faq.en.html#GPLAndPlugins>, then its
license can be chosen independently of yours. However, if you link
dynamically to a library and share data structures with it, then you are a
derived work of that library and are constrained by its license.

(For example, PyCall invokes Python by linking dynamically to libpython and
sharing data structures with it, so we are constrained by Python's license.
However, since the CPython license is a permissive BSD-like license, it's
not really a constraint.)

Ultimately, these questions of when something counts legally as a "derived
work" of something else (and hence is constrained by its license) cannot be
resolved except by a court, because they are determined by copyright law
and not by the license itself. But the FSF's interpretation of the GPL
seems to have held up over many years, and hence is a good standard to
follow.
Nathan Smith
2016-08-19 20:25:31 UTC
Permalink
Ok, for concreteness sake, the way Maxima.jl works is that it spawns maxima
on a seperate process and communication happens over a TCP socket. So it
seems from the FSF's interpretation I'm free to choose my license, though
something GPL-compatible is probably the safest choice.

Thanks for your help everyone! I'll be sure to report back when I finish a
stable release :)
Jeffrey Sarnoff
2016-08-19 22:30:06 UTC
Permalink
For use with Julia, the MIT License is best when one has the choice.
Post by Nathan Smith
Ok, for concreteness sake, the way Maxima.jl works is that it spawns
maxima on a seperate process and communication happens over a TCP socket.
So it seems from the FSF's interpretation I'm free to choose my license,
though something GPL-compatible is probably the safest choice.
Thanks for your help everyone! I'll be sure to report back when I finish a
stable release :)
Loading...