I'm trying to decide on a license for some code I'm going to be open-sourcing shortly, and having a hard time choosing among the major licenses (as less common licenses are things people are not as used to). It comes down to a difference between my ideals in OSS and the two major schools of OSS thought - permissive licenses and the free software movement.

Specifically, my ideals are that of maximum benefit to those who might use my code (as well as attribution, but that's required by most licenses). This means being permissive with people's use of my code (I don't care what you combine it with or whether your program is open/closed, free/commercial) but copyleft with my code itself and any improvements made to my code.

Based on my understanding, GPL is out, as it is far too restrictive with how the code can be used. Permissive licenses are also out as they don't require improvements to my code to be released in a similar license that would ensure people could benefit from those improvements.

My ideals are very similar to the LGPL, but there's one major sticking point: the requirement that users of the derivative work be able to modify my stuff in place. While this works well enough for dynamically linked libraries where there's a strong linking boundary, not only are some of the functions I intend to open-source not dynamically linked but they can be so interwoven into code they're linked to that it would be difficult even for me the author to upgrade somebody else's program to use a newer version of my code without having their full source code. This is because the case in question is for retro game code, where allocating large contiguous blocks of RAM and ROM to a statically linked library is a luxury you don't always have; often you fit the functions and variables anywhere you've got holes you can stick them, and my build (e.g. in my demo) may have a completely different RAM/ROM layout than another person's who uses my code.

I just heard about the concept of GPL with linking exceptions. Are there any well-known such exceptions that could help me with this issue?

EDIT: By "GPL with linking exceptions" I don't mean to exclude LGPL with linking exceptions as a possibility.

  • If you don't require the recipient to be able to modify the library and re-link, you're not really within the spirit of the GPL or LGPL at all. Why is this the license you think should be your baseline?
    – Barmar
    Jul 10, 2023 at 15:23

3 Answers 3


You can use LGPLv3 with the LGPL-3.0-linking-exception, which I quote below:

As a special exception to the GNU Lesser General Public License version 3 ("LGPL3"), the copyright holders of this Library give you permission to convey to a third party a Combined Work that links statically or dynamically to this Library without providing any Minimal Corresponding Source or Minimal Application Code as set out in 4d or providing the installation information set out in section 4e, provided that you comply with the other provisions of LGPL3 and provided that you meet, for the Application the terms and conditions of the license(s) which apply to the Application. ....

The other option is to use the Mozilla Public License 2.0 (MPL2).

It's a file-level weak copyleft license. Copyleft applies only to individual files.

So, there's no concern about the linking method and other language-specific concerns like C++ header-only template libraries. As long as proprietary source code and MPL2-licensed source code are kept in separate individual files, it's good enough.

MPL2 also doesn't have the Tivoization clause and other such restrictions that are a part of LGPLv3 and GPLv3.

MPL2 is also compatible with LGPLv2.1+, GPLv2+ and AGPLv3+.


The LGPL, at least v3, is simply the GPL with some exceptions. So if you're thinking that the LGPL is very nearly what you need, why look to GPL+exceptions? Surely, LGPL+exception is the way to go? Perhaps an exception that says something like "You may convey a covered work under this License without being bound by subsection 4(d) of the GNU LGPL version 3".

This language is copied pretty much directly from LGPLv3 s1, so will be reasonably familiar to those familiar with the LGPL.


In your position I would steer clear of anything related to GPL. Firstly, because some users are scared stiff of its consequences and avoid it like the plague. Secondly, because the GPL starts with a preamble:

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.

that represents a philosphical and ethical position that you clearly don't agree with, and although it's only a preamble and has no legal effect, it sets completely the wrong tone for the relationship you want to have with your users.

Your Answer

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

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