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?
Can I preserve exceptions in GPL 3?
licensing;copyleft;gpl 3;exceptions
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.