I am writing a library, currently under GPLv3 because I do not want my lib to be linked with a non open-source software.

A friend of mine is writing a program under the MIT X11 License and needs my library. GPLv3 does not allow that: if my friend links my GPLv3 lib with his MIT program, this gives a combination that should be released under terms that are compatible with the GPL, so it cannot stay under the MIT X11 License.

Changing the license of my library for a LGPLv3 would do the trick, but it would also allow dynamic links with closed-source programs, and I do not want that.

What are my options?

  • Firstly, FSF recommend you don't use the term "MIT licence", because it's ambiguous. Secondly, if you mean "MIT X11 licence", it's compatible with GPLv3. So at the moment, your question seems ambiguous to me, and I don't understand it. Sorry. I recommend you focus specifically on what your friend wants to do, and what you'd like to permit him/her to do. – MadHatter Jun 1 '17 at 11:55
  • @MadHatter I have rewritten my problem, I hope it is clearer now. – Florian Richoux Jun 1 '17 at 12:59

If I understand correctly, your friend still wants to release his program under the MIT X11 license, and you still want to prevent your library from being linked into proprietary, closed-source programs.

I'm not aware of any licenses that are both compatible with the MIT X11 license, yet prevent the linking into closed-source programs. A derivative of your friends MIT licensed program would be allowed to be later converted to a closed-source program, and I believe this is where the problem lies.

You may try creating a special interface and granting an exception for using this interface with non-GPL compatible software as outlined here: https://www.gnu.org/licenses/gpl-faq.en.html#LinkingOverControlledInterface

I'm not an expert on the exception mechanism of GPLv3, but maybe it's possible that you may use the Additional Terms section (section #7) of the GPLv3 to allow your friend to use your library. https://www.gnu.org/licenses/gpl-3.0.en.html


You can often find people releasing their software under permissive licenses such as MIT or BSD* complain that they can't use any GPL library and that it's unfair since their software remains open source. Sure it's open source but their software is distributed under a license that grants permission to integrate it into proprietary software (as remarked by @airfishey). Wanting to include GPL software in it is self-contradictory if you wish to continue to follow the requirements of both authors:

  • MIT/BSD-licensed software author wish to grant permission to integrate their software into proprietary software; but they want to use a library under GPL...

  • ...and GPL-licensed library author wants to prevent their software ever being integrated into proprietary software.

But if the will of the GPL-licensed software author is followed, then it defeats the purpose of the MIT/BSD license. In this case, what use would there be to keep the software under a permissive license?

In other words, why can't your friend just use GPL for their software as well?**

*I use generic terms such as GPL and MIT/BSD instead of giving version numbers, etc, because there is nothing specific to one particular version of a license here.

**My guess is because they have the (well spread) feeling that somehow the GPL license is wrong. There is nothing wrong with it. It used to be the standard, now MIT is more fashionable, but there is nothing wrong continuing to publish software under GPL.

For example, I prefer to use more permissive licenses as well but if I need to use a GPL library, I don't hesitate to switch to a GPL license.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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