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 · 5 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
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

4 participants