Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace MarchingSquaresJS in turf-isolines and turf-isobands to eliminate license ambiguities #2723

Open
alynn-coefficient opened this issue Sep 26, 2024 · 8 comments

Comments

@alynn-coefficient
Copy link

Version: 7.1.0

turf-isolines depends on marchingsquares, which is licensed under the GNU Affero General Public License. As a derivative work, turf-isolines itself must be compatibly licensed under the GPL or AGPL by the terms of the marchingsquares license – currently it purports to be under the MIT license.

Either it should be relicensed under GPL or AGPL, or the dependency on marchingsquares should be removed and replaced by something permissively licensed.

The same applies to turf-isobands.

@smallsaucepan
Copy link
Member

Thanks for pointing this out @alynn-coefficient. It wasn't something I was familiar with. Looking at the license packaged with marchingsquares, it includes the following paragraph:

As additional permission under GNU Affero General Public License version 3
section 7, third-party projects (personal or commercial) may distribute,
include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
requirement
that said third-party project for that reason alone becomes
subject to any requirement of the GNU Affero General Public License version 3.
Any modifications to MarchingSquaresJS, however, must be shared with the public
and made available.

And then further down restates this a different way:

allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any license as long as this license notice is included

That reads to me (admittedly not a lawyer) like marchingsquares is specifically excusing third party projects from having to also be bound by the GPL. Would you interpret that a different way?

@smallsaucepan
Copy link
Member

Haven't heard back on this so will close. If anyone has a counterpoint or more detail on actions we need to take please reopen. Appreciate the effort put in to making sure Turf is doing the right thing.

@smallsaucepan smallsaucepan closed this as not planned Won't fix, can't repro, duplicate, stale Oct 15, 2024
@Cynaeon
Copy link

Cynaeon commented Nov 18, 2024

I don't really have a solution or know much about license stuff, but just voicing my concern that our client is very strict about licenses in our apps and this issue is preventing us from updating from turf 6 to 7. The issue being that we are not allowed to use packages that use "AGPL" license.

@nicorikken
Copy link

nicorikken commented Nov 22, 2024

@smallsaucepan the AGPL forbids modifying the license text, so an additional clause by MarchingSquaresJS cannot be accepted. Modification of the license text is limited in scope, see section 7.

As it stands MarchingSquaresJS is still bound by the terms of the AGPL, therefore so is turf-isolines.

Please arrange a different license or use a different library. As it stands we consider Turfjs to be AGPL.

@smallsaucepan
Copy link
Member

Thanks for running through that @nicorikken. From our point of view we've taken the license on in good faith, and are adhering to the intent of the author.

Unfortunately for everyone, they chose to express that intent with a license that is at best ambiguous. In hindsight the LGPL (for example) might have achieved the same outcome with fewer steps, and fewer unintended consequences.

What's undeniable is that no one seems very fond of the AGPL, and it's likely holding people back from adopting Turf. And adopting Turf is something we very much want to support.

With that in mind, we are going to make it a priority to replace the MarchingSquaresJS code with something that can be inarguably published under Turf's existing MIT license.

If that can't be done in a timely manner, we'll consider more drastic action such as temporarily removing the isolines and isobands modules from Turf until it can be. That seems to be the most balanced path forward for the project, our users, and the community.

I'll reopen this issue, and reframe it as an effort to remove confusingly licensed code that's presenting a barrier to Turf adoption.

@smallsaucepan smallsaucepan reopened this Nov 24, 2024
@smallsaucepan smallsaucepan changed the title turf-isolines and turf-isolines licenses are incorrect Replace MarchingSquaresJS in turf-isolines and turf-isobands to eliminate license ambiguities Nov 24, 2024
@nicorikken
Copy link

@smallsaucepan Thanks for clarifying. I can elaborate a bit more. The terms additional terms clarify the situation where MarchinSquaresJS is used as part of turf-isolines and isn't modified. One might discuss interpretation of these terms, but that is not my main concern. The moment MarchinQuaresJS is modified, AGPL applies to it and to the corresponding source of the covered work in AGPL terms which would also include the turf-isolines code. So it seems compatible with MIT when using, but not when modifying.

@httpete-broadcom
Copy link

Also interested in this - it came up in our scans.

@RaumZeit
Copy link

@smallsaucepan Thanks for clarifying. I can elaborate a bit more. The terms additional terms clarify the situation where MarchinSquaresJS is used as part of turf-isolines and isn't modified. One might discuss interpretation of these terms, but that is not my main concern. The moment MarchinQuaresJS is modified, AGPL applies to it and to the corresponding source of the covered work in AGPL terms which would also include the turf-isolines code. So it seems compatible with MIT when using, but not when modifying.

Hi all,
this last interpretation is correct! This is exactly what AGPL section 7 allows for. Since my additions under section 7 are pure permissions, they are acceptable and compatible with AGPL. (Only further restrictions are forbidden here).

So the main problem for any third-party using turf would be if they were to modify the isobands/isolines code. Then the corresponding modifications would need to be made public and probably fall under AGPL.

I'll try to have some more thoughts about this within the next week, maybe the additional permission can be adapted, such that modifications will not trigger AGPL but only require open-sourcing the modifications... But my initial intentions to put the code under AGPL still hold (any modifications of the code must be made available to the public), while I'm always willing to grant permissions to include and use the available code in any (differently licensed) project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants