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

Contributor request to change CXXGraph license from AGPL-3.0 to MPL2 #427

Closed
nolankramer opened this issue May 4, 2024 · 36 comments
Closed
Assignees
Labels
Priority:Critical Priority Label for Critical Issue Under Review Under Review

Comments

@nolankramer
Copy link
Collaborator

nolankramer commented May 4, 2024

cc @ZigRazor @sbaldu

What is the general direction this project should go? OSS-copyleft? FOSS? Doesn't matter?

  • For OSS-copyleft, AGPL or GPL seems fine. Forces users to make their code open (except for web services in the case of AGPL). This does, however, inherently limit usage in commercial projects.
  • For FOSS, Apache v2 is probably best. Easy to understand, no limits, no liabilities. Just tell people you've changed something.
  • Doesn't matter, MIT is also probably best. Simply cover our asses.

FWIW, I like MPL2 the most for a project like this. There doesn't seem to be a strong reason to force users to be in the copyleft camp, unless we want to strictly push the idea that this code can only be used in OSS. We can also capture commercial users and force them to publish modifications to CXXGraph.

I typically look to the Linux kernel as an good example of needing copyleft - a project that should remain free, and anything that contributes to it or modifies it (with the idea that the majority of the work will be re-used) should also be free and freely contributable. It also enforces the idea that anything combined or derived from it, therefore becoming a relied-on extension of it becomes free and modifiable. A bit like ensuring that it's easy to tinker with after getting it.

One thing I don't like about most GPL copy-left software is that it forces entities or persons to release the entirety of their own code upon distribution, even if they did not modify the original works. This is due to a "combined works" clause, which typically encompasses header inclusion or linkage. MIT/ISC avoids this mess, but misses out on modified works being public.

Typically if there is a great fix, I've found that most people will good-naturedly contribute it upstream, as maintaining the fix separately from upstream is a pain. LGPL is nice in that it allows commercial usage if there is a way to re-link against a modified version of the library (enabling users to fix issues themselves).

Currently, to my knowledge, there doesn't seem to be any license that allows commercial usage with closed-source code and only enforcing publications of modified library code (i.e. closed-source entities can keep their code stack separate, and if they make a great fix to CXXGraph, they have to publish it). See https://opensource.stackexchange.com/questions/13021/correct-license-for-header-only-library. EDIT below invalidates this belief

A "halfway" solution to the split nature of copy-left vs FOSS is dual-licensing. That is, licensing under both a GPL-like and MIT-like license, and letting the user choose based on their needs. I say "halfway", because it doesn't force entities to contribute good fixes upstream (although it's prudent for entities to do that regardless, some entities would prefer to keep their "super ultra secret magic sauce" algorithms to themselves, even if they really aren't that magic and can be easily reverse-engineered...). I've seen some projects dual-license. But more or less, it's the same as just going full-on permissive as the choice is up to the user.

If we really just don't want to care about any of this, I recommend MIT and let the winds take us where they may.

Edit

It looks like Mozilla Public License 2.0 (MPL2) might actually be the best option, as "It's a file-level weak copyleft license. Copyleft applies only to individual files." (https://opensource.stackexchange.com/questions/14122/gpl-and-linking-exceptions/14126#14126)

Which is perfect for enabling commercial users to keep their secrets, but contribute upstream in some form.

This is now my favored option for this library.

@ZigRazor
Copy link
Owner

ZigRazor commented May 6, 2024

As you said I think that if someone wants to contribute he will do it, regardless of the license.
In any case is important to maintains the copyright of the work, just for acknowledgment.
So for me MIT license is already a good license ( the choice of AGPL3.0 is obsolete by this time ).
If we want to work in the middle also MPL2 and ApacheV2 are a good option!

So if we want to maintain a little more restriction we can use MPL2, in the other case we can use the MIT.

My ranking actually is the following:

  • MPL2
  • MIT
  • ApacheV2

We can wait @sbaldu opinion and the modify the License.

@ZigRazor ZigRazor added the Under Review Under Review label May 6, 2024
@sbaldu
Copy link
Collaborator

sbaldu commented May 6, 2024

I agree, MIT and MPL are the best options. The project is getting large, so maybe if many people start using it MPL would be better.

@ZigRazor
Copy link
Owner

ZigRazor commented May 6, 2024

So we want to Change this license?

@sbaldu
Copy link
Collaborator

sbaldu commented May 6, 2024

I think that we should.
The only problem that a collegue of mine pointed out is that in order to change the license we should ping to this issue all the past contributors and ask for their consent, because their changes were implemented under the AGPL license, which is copyleft. Do you agree @ZigRazor @nolankramer ?

@nolankramer
Copy link
Collaborator Author

nolankramer commented May 6, 2024

@sbaldu That sounds right to me.

Looks like another project solved this recently: Technologicat/pyan#68 (comment)

They had contributors post a message "I approve re-licensing my contributions to <Project Name> under the <License Type> license."

They also kept track with a checklist in the post, printed out the final result to a file, and checked it into the repo.

@sbaldu
Copy link
Collaborator

sbaldu commented May 6, 2024

@sbaldu That sounds right to me.

Looks like another project solved this recently: Technologicat/pyan#68 (comment)

They had contributors post a message "I approve re-licensing my contributions to <Project Name> under the <License Type> license."

They also kept track with a checklist in the post, printed out the final result to a file, and checked it into the repo.

Yep, that looks like exactly what we want.

@ZigRazor
Copy link
Owner

ZigRazor commented May 6, 2024

So we can proceed.
@nolankramer can you take care of this?

@nolankramer
Copy link
Collaborator Author

nolankramer commented May 6, 2024

Contributor request to change CXXGraph license from AGPL-3.0 to MPL2

As this project has grown, we would like to change the license from a copyleft (restrictive) license to a more permissive license. After discussion, we have decided that Mozilla Public License 2.0 (MPL) is the right direction forward, due to the following reasons:

  1. AGPL restricts who can benefit from this library, due to it's "viral" nature
  2. MPL2, being permissive, allows closed-source projects to benefit from the library under the following condition:
    a. They must publish their version of CXXGraph, such that users can see any alterations done to the library (including fixes and new algorithms)
    b. They can link and statically link to the project with no requirement to release their entire works. They must only publish any modifications to the files covered by the MPL2 in CXXGraph (which is covered by a.)
  3. We want to encourage more adoption, but also have the right to see fixes and new algorithms that should be part of this library. Closed-source users still have the option of developing their algorithms outside of the library if it is "secret sauce" - however MPL2 encourages sharing fixes at the least.

A general FAQ on MPL2 can be found here: https://www.mozilla.org/en-US/MPL/2.0/FAQ/

Why am I getting tagged?

Switching from a copyleft license requires a good-faith attempt to get all contributors to sign-off on the license change.

How do I agree, or disagree?

To agree, simply comment in this issue (#427), the following:

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

To disagree, simply comment in this issue (#427), the following:

I do not approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

I don't care either way, what should I do?

We recommend agreeing, as we believe it will increase adoption, and you as a contributor will benefit in-terms of open source contribution visibility.

If you do not agree or disagree within 30 calendar days, from this Monday, May 6 2024, we will assume you have agreed.

What happens if we agree/disagree?

If we agree, we will take a snapshot of this webpage and check it into the repo, and swap out the license.

If we disagree, who knows. Some members may try to convince a change of mind, or nothing will happen.

Contributor checklist (to only be modified by either @ZigRazor @sbaldu or @nolankramer)

Contributors that have agreed in a comment below, will have their handle checked here.

@nolankramer
Copy link
Collaborator Author

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@nolankramer nolankramer changed the title Licensing direction Contributor request to change CXXGraph license from AGPL-3.0 to MPL2 May 6, 2024
@aengusjiang
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

1 similar comment
@ZigRazor
Copy link
Owner

ZigRazor commented May 7, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@ZigRazor ZigRazor added the Priority:Critical Priority Label for Critical Issue label May 7, 2024
@gitkraken-boards gitkraken-boards bot assigned nolankramer and sbaldu and unassigned sbaldu and nolankramer May 7, 2024
@AlfredCP
Copy link
Contributor

AlfredCP commented May 7, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

5 similar comments
@Adda0
Copy link
Contributor

Adda0 commented May 7, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@sarthak17jain
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@Gonzalo-Mier
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@sidml
Copy link
Contributor

sidml commented May 7, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@AryanGitHub
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@sbaldu

This comment was marked as resolved.

@amerinor01
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

1 similar comment
@oliviacarino
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@Adw8
Copy link
Contributor

Adw8 commented May 9, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

4 similar comments
@badumbatish
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@Grufoony
Copy link
Contributor

Grufoony commented May 9, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@edogawashinichi
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@perhapsmaple
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@fajlip
Copy link
Contributor

fajlip commented May 16, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@carlosfrodrigues
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0

@ErikDervishi03
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@ZigRazor
Copy link
Owner

ZigRazor commented Jun 6, 2024

@nolankramer @sbaldu I think we can proceed.
@nolankramer can you take care of this?

@sbaldu
Copy link
Collaborator

sbaldu commented Jun 6, 2024

@nolankramer @sbaldu I think we can proceed

Maybe we can re-ping the remaining contributors? Just to be sure.

@daniepin
Copy link
Contributor

daniepin commented Jun 6, 2024

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@ZigRazor
Copy link
Owner

@nolankramer @sbaldu What we want to do? We can procede?

@guru2396
Copy link
Contributor

I approve re-licensing my contributions to CXXGraph under the Mozilla Public License 2.0.

@nolankramer
Copy link
Collaborator Author

Sorry for the delay here folks. Will try to get to this later today (Wednesday). Been busy.

@nolankramer
Copy link
Collaborator Author

We are now changing our license to Mozilla Public License 2.0

It has been at-least 30 days since we announced intention to change licensing with a good-faith attempt to reach all contributors before then, and therefore we will assume the remaining contributors have agreed (since we have seen no disagreement).

Therefore, with a unanimous agreement, we will now change the license of CXXGraph to MPL-2.0.

I will open a PR with the change, and check-in a copy of this webpage to keep history of this change.

@nolankramer
Copy link
Collaborator Author

nolankramer commented Jun 22, 2024

Addressed with #450

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority:Critical Priority Label for Critical Issue Under Review Under Review
Projects
None yet
Development

No branches or pull requests