CXXGraph icon indicating copy to clipboard operation
CXXGraph copied to clipboard

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

Open nolankramer opened this issue 1 year ago • 28 comments

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.

nolankramer avatar May 04 '24 22:05 nolankramer

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 avatar May 06 '24 06:05 ZigRazor

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.

sbaldu avatar May 06 '24 09:05 sbaldu

So we want to Change this license?

ZigRazor avatar May 06 '24 12:05 ZigRazor

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 ?

sbaldu avatar May 06 '24 14:05 sbaldu

@sbaldu That sounds right to me.

Looks like another project solved this recently: https://github.com/Technologicat/pyan/issues/68#issuecomment-852888394

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.

nolankramer avatar May 06 '24 16:05 nolankramer

@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.

sbaldu avatar May 06 '24 16:05 sbaldu

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

ZigRazor avatar May 06 '24 21:05 ZigRazor

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 (https://github.com/ZigRazor/CXXGraph/issues/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 (https://github.com/ZigRazor/CXXGraph/issues/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.

  • [x] @ZigRazor
  • [x] @sbaldu
  • [x] @nolankramer @nrkramer
  • [x] @sidml
  • [x] @AlfredCP
  • [x] @AryanGitHub
  • [x] @amerinor01
  • [x] @Adda0
  • [x] @sarthak17jain
  • [x] @aengusjiang
  • [x] @oliviacarino
  • [x] @Gonzalo-Mier
  • [x] @badumbatish
  • [x] @Adw8
  • [x] @Grufoony
  • [x] @edogawashinichi
  • [x] @perhapsmaple
  • [x] @fajlip
  • [x] @carlosfrodrigues
  • [x] @ErikDervishi03
  • [x] @daniepin
  • [x] @guru2396
  • [ ] @pradkrish
  • [ ] @suncanghuai
  • [ ] @Dishantdhillon
  • [ ] @pavan-pan
  • [ ] @dvd2000
  • [ ] @thesmartdeveloperr
  • [ ] @arjunkumar09
  • [ ] @joechai93
  • [ ] @Sandeep-BlackHat
  • [ ] @SaloniThete
  • [ ] @kamari-a
  • [ ] @MrDragon1
  • [ ] @bbannier

nolankramer avatar May 06 '24 22:05 nolankramer

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

nolankramer avatar May 06 '24 22:05 nolankramer

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

aengusjiang avatar May 07 '24 01:05 aengusjiang

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

ZigRazor avatar May 07 '24 08:05 ZigRazor

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

AlfredCP avatar May 07 '24 08:05 AlfredCP

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

Adda0 avatar May 07 '24 08:05 Adda0

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

sarthak17jain avatar May 07 '24 09:05 sarthak17jain

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

Gonzalo-Mier avatar May 07 '24 09:05 Gonzalo-Mier

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

sidml avatar May 07 '24 09:05 sidml

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

AryanGitHub avatar May 07 '24 09:05 AryanGitHub

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.

* [x]  @ZigRazor

* [x]  @sbaldu

* [x]  @nolankramer @nrkramer

* [x]  @sidml

* [x]  @AlfredCP

* [ ]  @badumbatish

* [ ]  @ErikDervishi03

* [ ]  @pradkrish

* [ ]  @suncanghuai

* [ ]  @guru2396

* [x]  @AryanGitHub

* [ ]  @Dishantdhillon

* [ ]  @pavan-pan

* [ ]  @perhapsmaple

* [ ]  @Grufoony

* [ ]  @amerinor01

* [ ]  @dvd2000

* [x]  @Adda0

* [ ]  @Adw8

* [ ]  @thesmartdeveloperr

* [x]  @sarthak17jain

* [ ]  @arjunkumar09

* [ ]  @daniepin

* [x]  @aengusjiang

* [ ]  @joechai93

* [ ]  @oliviacarino

* [ ]  @Sandeep-BlackHat

* [x]  @Gonzalo-Mier

* [ ]  @SaloniThete

* [ ]  @edogawashinichi

* [ ]  @kamari-a

* [ ]  @carlosfrodrigues

* [ ]  @MrDragon1

* [ ]  @bbannier

* [ ]  @fajlip

I removed @gitter-badger

sbaldu avatar May 07 '24 10:05 sbaldu

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

amerinor01 avatar May 07 '24 11:05 amerinor01

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

oliviacarino avatar May 07 '24 13:05 oliviacarino

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

Adw8 avatar May 09 '24 07:05 Adw8

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

badumbatish avatar May 09 '24 08:05 badumbatish

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

Grufoony avatar May 09 '24 20:05 Grufoony

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

edogawashinichi avatar May 12 '24 15:05 edogawashinichi

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

perhapsmaple avatar May 13 '24 07:05 perhapsmaple

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

fajlip avatar May 16 '24 14:05 fajlip

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

carlosfrodrigues avatar May 16 '24 14:05 carlosfrodrigues

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

ErikDervishi03 avatar May 23 '24 12:05 ErikDervishi03

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

ZigRazor avatar Jun 06 '24 10:06 ZigRazor

@nolankramer @sbaldu I think we can proceed

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

sbaldu avatar Jun 06 '24 13:06 sbaldu