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

ManimCE violates the GNU GPL license #2418

Closed
marcin-serwin opened this issue Jan 3, 2022 · 20 comments · Fixed by ManimCommunity/ManimPango#72
Closed

ManimCE violates the GNU GPL license #2418

marcin-serwin opened this issue Jan 3, 2022 · 20 comments · Fixed by ManimCommunity/ManimPango#72

Comments

@marcin-serwin
Copy link
Collaborator

Firstly, I am not a lawyer and this is only my understanding.

ManimPango is licensed under the GPLv3. As per the license terms this means that the program linking to it must be released under the GPL license (see FAQ). Manim uses ManimPango, thus it should be licensed under the GPLv3, but it isn't.

As I see it (again, I am not a lawyer), there are three ways to resolve it:

  • Remove ManimPango from the project - this is the most straightforward path.
  • Relicense the ManimCE to GPLv3 - since the rest of the code is under GPL-compatible licenses (to my knowledge), it should be possible for the current maintainers to simply change the license of the project accordingly.
  • Change the license of ManimPango to a license without strong copyleft (LGPL?) - this requires for all the copyright holders of ManimPango code (contributors, I think) to release their code under an appropriate chosen license.
@marcin-serwin marcin-serwin changed the title ManimCE violates GPL license ManimCE violates the GNU GPL license Jan 3, 2022
@behackl
Copy link
Member

behackl commented Jan 3, 2022

I think this is a valid concern.

@naveen521kk @PhilippImhof what do you think?

@GameDungeon
Copy link
Contributor

GameDungeon commented Jan 3, 2022

It would not be hard to change ManimPango, as it only has like 6 contributors, and if any don't respond you can always overwrite their small changes.

I would suggest converting it to MIT

@PhilippImhof
Copy link
Member

Removing ManimPango does not seem to be very straightforward for me, because we would lose all non-LaTeX text functionality.

However, I am absolutely fine with changing the license. @naveen521kk has contributed much more than I, but I think he would not mind either.

For me, any license is fine.

@marcin-serwin
Copy link
Collaborator Author

Removing ManimPango does not seem to be very straightforward for me, because we would lose all non-LaTeX text functionality.

By straightforward I've only meant the restoring of compliance with GPL. The first two proposed resolutions have far reaching consequences for users of ManimCE. Thus in that regard the third one is actually the most straightforward.

@naveen521kk
Copy link
Member

Change the license of ManimPango to a license without strong copyleft (LGPL?) - this requires for all the copyright holders of ManimPango code (contributors, I think) to release their code under an appropriate chosen license.

Yeah, I am fine with that. I have written most of the code there and it's fine for me to relicense to something like LGPL. I faintly remember making a private conversation with @PhilippImhof about this a long time ago.

I would suggest converting it to MIT

If I understand the licenses correctly I think ManimPango can't be licensed under something which isn't GPL or LGPL based because Pango has been licensed under LGPL, right? I would be happy to release under BSD or MIT licenses if I'm allowed to, but I'm not sure.

@PhilippImhof
Copy link
Member

I have had a look at the commits. As I can see, we have @jsonvillanueva who contributed one commit related to the code of conduct. As we are mainly talking about the code's license, this is not important. I still tagged them, so we can get their stance on the issue.

We also have @leotrs who did some (very minor) change to the docstrings in ManimCommunity/ManimPango#10. I tagged him anyhow, because it is a good opportunity to greet him :)

Next is @RickyC0626 with three commits. Could they please tell whether they agree with a change of license with or without reservation?

And finally, we have @marcin-serwin. As they raised the issue and suggested a change of license, I believe they have nothing against it?

I think it is best to ask the folks over at Pango whether ManimPango can be licensed as MIT or BSD, but as @naveen521kk says, I also think LGPL will be the way to go. However, I am by no means an expert for licensing questions.

@GameDungeon
Copy link
Contributor

Is it just bindings or does it contain any Pango code. If the former it can be MIT if the latter then it has to be GPL.

@PhilippImhof
Copy link
Member

IIRC it's only bindings, but I'd rather wait for @naveen521kk to confirm...

@naveen521kk
Copy link
Member

Is it just bindings or does it contain any Pango code. If the former it can be MIT if the latter then it has to be GPL.

It's just the bindings. Can you show an example where the binding is licensed under MIT while the main library is LGPL? I am asking this so that I will not be bothered to change the license of that code again.

@GameDungeon
Copy link
Contributor

BTW LGPL is not compatible with GPL2, nor is GPL3. The search terms copyright and binding give too much noise so I don't know.

@GameDungeon
Copy link
Contributor

Uggggg

However, when the interpreter is extended to provide “bindings” to other facilities (often, but not necessarily, libraries), the interpreted program is effectively linked to the facilities it uses through these bindings. So if these facilities are released under the GPL, the interpreted program that uses them must be released in a GPL-compatible way. The JNI or Java Native Interface is an example of such a binding mechanism; libraries that are accessed in this way are linked dynamically with the Java programs that call them. These libraries are also linked with the interpreter. If the interpreter is linked statically with these libraries, or if it is designed to link dynamically with these specific libraries, then it too needs to be released in a GPL-compatible way.

Another similar and very common case is to provide libraries with the interpreter which are themselves interpreted. For instance, Perl comes with many Perl modules, and a Java implementation comes with many Java classes. These libraries and the programs that call them are always dynamically linked together.

A consequence is that if you choose to use GPLed Perl modules or Java classes in your program, you must release the program in a GPL-compatible way, regardless of the license used in the Perl or Java interpreter that the combined Perl or Java program will run on

@GameDungeon
Copy link
Contributor

GameDungeon commented Jan 4, 2022

  1. If you wish to incorporate parts of the Library into other free
    programs whose distribution conditions are incompatible with these,
    write to the author to ask for permission.

Honestly, we are getting rid of cario, we should probably get a new text renderer too.

@RickyC0626
Copy link
Contributor

I'm fine with a license change, whichever decision best benefits the community. Since Pango is using the old LGPLv2 license, and not LGPLv2.1, it would not be compatible with GPL, but it would offer more freedom of use.

@marcin-serwin
Copy link
Collaborator Author

@GameDungeon The cited passages refer to GPL, but Pango (and Cairo) are released under LGPL. To be more precise Pango is under LGPL 2.0, section 6 of this license states (emphasis mine):

As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

There are other requirements for use, but my basic understanding is that ManimPango and Manim can be released as MIT provided that they contain license text and mention the usage of LGPL content somewhere.

On a related note it may be a good idea to create some main document (e.g. ACKNOWLEDGEMENTS.md) with the copyright notices of all dependencies (since most of them require attribution anyway) and print them when manim is invoked with --copyright or --license flags (similar to python's copyright and license commands).

@GameDungeon
Copy link
Contributor

Ah I though Pango was GPLv2 my bad.

@naveen521kk
Copy link
Member

There are other requirements for use, but my basic understanding is that ManimPango and Manim can be released as MIT provided that they contain license text and mention the usage of LGPL content somewhere.

So changing the license of ManimPango to MIT, should work right? And mention somewhere (in the README and wheels) probably that it contains LGPL code from Pango, should work right?

naveen521kk added a commit to ManimCommunity/ManimPango that referenced this issue Jan 5, 2022
All the authors and contributors have agreed to this change.

Fixes ManimCommunity/manim#2418
@naveen521kk
Copy link
Member

I have made ManimCommunity/ManimPango#72

@marcin-serwin
Copy link
Collaborator Author

marcin-serwin commented Jan 5, 2022

So changing the license of ManimPango to MIT, should work right? And mention somewhere (in the README and wheels) probably that it contains LGPL code from Pango, should work right?

Again, I am not a lawyer, but my understanding is that we need to mention that LGPL code is used and attach full license text.

EDIT: The same applies to Manim.

@naveen521kk
Copy link
Member

Again, I am not a lawyer, but my understanding is that we need to mention that LGPL code is used and attach full license text.

I have already attached the full license text in the wheels for a long time now: see https://github.com/ManimCommunity/ManimPango/blob/main/packing/LICENSE.bin and I think that should be fine on ManimPango's part I guess, right? I am wondering where it should be mentioned in manim though. Even pycairo/cairo is LGPL and we haven't mentioned it anywhere.

Should we email FSF for clarification (I think they should help out right?)?

@PhilippImhof
Copy link
Member

I suggest we'd rather ask the people over at Pango (and maybe Cairo). It's their software, so they could also just grant an exception if it is not 100% correct but does not bother them.

naveen521kk added a commit to ManimCommunity/ManimPango that referenced this issue Jan 24, 2022
* Change to MIT license

All the authors and contributors have agreed to this change.
Fixes ManimCommunity/manim#2418
Also,
* Add note about license in README
* Update setup.py to reflect license change
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

Successfully merging a pull request may close this issue.

6 participants