GPL 3 allows adding additional clauses, such as exceptions, as long as such exceptions grant additional privileges. But if I distribute software under GPL 3 with exceptions, are those exceptions required to be preserved, or are downstream distributors free to remove those exceptions, leaving the license as GPL 3 only?

Exceptions are often useful to improve compatibility with non-GPL-compatible software; for example, GPL-licensed software like autoconf and GCC include exceptions to prevent their output from falling under GPL, since their output includes GPL-licensed code which would normally mean anything produced by those programs also falls under GPL.

An analogous situation is if I dual-license with GPL and a permissive license such as BSD. Normally with GPL only, someone else can take my software, redistribute with their own changes, and I can incorporate their changes back into my project because of the copyleft. However, since I'm also licensing as BSD, the downstream developer could potentially share their changes under GPL only, which means if I do choose to incorporate their changes, I can no longer distribute the combination under BSD.

My question is, does the same situation apply if I add exceptions to GPL 3?

  • If you were to preserve exceptions, your code would no-longer be "open" because other GPL projects would not be able to use your code as part of their project. – Abhi Beckert Aug 22 '15 at 23:22
  • @AbhiBeckert nonsense, GPL-incompatibility doesn't mean a license is not open. There are many open licenses that are GPL-incompatible. – congusbongus Aug 23 '15 at 1:02
  • if you extend the license and require derivatives also use your extended license, then your software will no-longer be one of the OSI approved licenses. "in general" if a license is not OSI listed then it is no-longer an "open source" license. A core feature of any "open" license is that your code can freely be used in other open source projects. If you've got a non-standard license then that is no-longer the case and therefore your code is not "open". See opensource.org/faq#unlisted-licenses – Abhi Beckert Aug 23 '15 at 6:26
  • The exception to the rule is "public domain" style licenses. For example CC0 is considered an open source license even though it is not OSI approved. But the only way an extended GPL can be "open" is if that extension can be removed by someone else without you giving permission, which is why GPL forces all extensions to be removable. – Abhi Beckert Aug 23 '15 at 6:28

No you cannot preserve exceptions in GPL 3, so yes the same situation as your GPL + MIT analogy applies. Someone can redistribute their derivative under GPL 3 only, which means that you cannot incorporate their changes and continue to provide your exception.

GPL 3 allows additional terms under section 7; these additions are treated as part of the license:

“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

BUT the same section also says that such additional terms can be freely removed when you redistribute:

When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

That is, GPL 3's copyleft only serves to preserve itself; it does not extend the same protection to additional terms you add.

The law firm Morris, Manning & Martin, LLP shares this opinion in their article, Adding Terms to the GPL:

Additional permissions are covered in Section 7 of GPLv3 and are defined as “terms that supplement the terms of this License by making exceptions from one or more of its conditions.” The GPLv3 allows the author of the work to add additional permissions to that part of the work contributed by that author. GPLv3 also allows a recipient of software that is licensed under GPLv3 with additional permissions to remove those additional permissions for subsequent distribution of the work.

The upshot of all this is, if you find GPL 3 too restrictive and wish to preserve some additional permissions, GPL 3 doesn't extend that protection, and you may need to choose a different copyleft license. For example, Linus Torvalds mentions this being the reason why he chose not to convert to GPL 3, because he disagreed with the anti-Tivoization features in GPL 3, and also believed that GPL 3 exceptions could not be preserved.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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