3

The Apache License v2.0 is incompatible with GPLv2.

Instead of dual-licensing or using the LLVM Exceptions, I am thinking of defining an exception to the Apache license that is similar to what is found in the MPL2 that confers it compatibility with the GPLv2.

For example, as follows, in which I have copied and modified the text from the MPL2:

======= Special exception to the Apache License v2.0 =======

“Larger Work” shall mean a work that combines the Work or Derivative Works with other material, in Source form, that is not part of the Work or Derivative Works.

“Secondary License” shall mean either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses.

As a special exception, if the Larger Work is a combination of the Work or Derivative Works with a work governed by one or more Secondary Licenses, You may additionally distribute the Work or Derivative Works under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Work or Derivative Works under the terms of either this License or such Secondary License(s).

Would this be acceptable? Or would it be considered a "crayon license"?

Would it be acceptable even if there's no SPDX exception identifier for my custom exception?

Would it be better for me to dual license my software as Apache-2.0 OR GPL-2.0-only or Apache-2.0 OR LGPL-2.1-only instead of adding this custom exception?

I think this is a good option, so that I can add on compatibility to all three GNU Secondary Licenses similar to the MPL2.

1 Answer 1

5

It won't work. If Bob takes your software and incorporates some code from third-party package C, which is under (eg) GPLv2, then although your exception allows Bob to relicense your code to GPLv2, the GPLv2 that applies to C wouldn't permit code from C to be relicensed to Apache.

In other words, "the recipient of the Larger Work may, at their option, further distribute the Work or Derivative Works under the terms of either this License or such Secondary License(s)" is inoperative; the Larger Work may only be distributed under the terms of the Secondary Licence.

Wwhat you're actually doing is permitting people to take your work under Apache2, GPLv2+, LGPLv2.1+, or AGPLv3+, at their choice. That's a very decent thing to do, but you could express it much more clearly, and avoid crayon issues, by simply saying so.

3
  • So I can use a much simpler exception text like "As a special exception, You may use, reproduce and distribute the Work or Derivative Works solely under the terms of either the GNU LGPL v2.1 or the GNU GPL v2, without complying with the conditions stated in this License."
    – ruben2020
    Dec 8, 2022 at 23:56
  • 2
    @ruben2020 I wouldn't describe that as an exception, but it's simple, clear, and unambiguous, which is all people really want - I think it would be fine.
    – MadHatter
    Dec 9, 2022 at 9:21
  • 1
    @ruben2020, I wouldn't call that an exception, but a statement of dual licensing. If you also include the text of those licenses, it would be a proper dual licensing. Dec 9, 2022 at 9:24

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.