I have a Python module, pygalmesh (Github, PyPi), published under the MIT license. It essentially interfaces a part of CGAL which is published under the GPL3 and uses other pieces of software with different licenses (e.g., Eigen with MPL2). I understand that this is fine since MIT is GPL-compatible. Q: Is that correct?

To install pygalmesh, the user first has to download and install CGAL (e.g., via Debian/Ubuntu) and Eigen, and then

pip install pygalmesh

The resulting binary library _pygalmesh.so contains both compiled pygalmesh, Eigen, CGAL code (and more, like pybind11). I believe the user then has to adhere to all restrictions induced by those licenses, meaning, for example, she cannot include this library into another piece of software and not publish the code.

The command

pip show pygalmesh

however simply shows MIT as license as defined here. My concern is that the user might be mislead into thinking that _pygalmesh.so is completely MIT as well. Q: Is it correct to say pygalmesh is MIT or should it rather say MIT + GPL3 or MIT + GPL3 + MPL2 or Mixed or something entirely different?

  • 2
    It is correct to state that your source code is MIT-licensed. But as a courtesy to users, I'd note in your Readme that you have GPL dependencies.
    – amon
    Mar 6, 2020 at 7:02

1 Answer 1


In no way does GPL forbid mangling the code whichever way you fancy. It places conditions on distribution.

In this case, the licenses allow doing the combining, no problem. You are right (partially) in that you can't distribute the combination, as you would have to distribute the whole hairball under GPL, and at least you can't do that for the closed part.

  • 1
    But can I say "MIT" for pygalmesh on pypi.org/project/pygalmesh? The code is MIT alright, but if the user installs from there, the .so will also contain GPL code. Mar 5, 2020 at 23:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.