3

Background

I want to distribute my code simultaneously under multiple open-source licenses, so that consumers who have problems with one license might rest easy in the terms of another.

I've currently got a license text file containing literally

SPDX-License-Identifier: (AGPL-3.0 OR (BSD-3-Clause AND LicenseRef-PATENT.txt))

Obviously, "everyone knows" that the OR keyword means something like

You may, at your option, receive this Work under the terms of either, or both, of These licenses.

Additionally, whenever both of These licenses would simultaneously permit You to redistribute this Work under the same terms, and whenever You are not otherwise forbidden to sublicense this Work under different terms, You may sublicense this Work under the terms of This Dual License. (This Dual License does not IN ANY WAY modify or attempt to modify any of These Licenses, including any applicable patent or sublicensing rights granted thereunder.)

Question

However, "something like" is a bit vague.

I know that this question isn't critical when one or more of the licenses in question are permissive, but I'm still curious if there's any "best practice" boilerplate.

After searching around on Open Source Stack Exchange, I found many examples:

“dbus dual”

{project} is licensed to you under your choice of {license1}, or {license2}.

“ArtOfCode dual”

This project is dual licensed under {license1} and {license2}.

“Lukas Atkinson dual”

You may use, modify, and distribute this software under the terms of either {license1} or {license2}.

“libpng dual”

The contents of this file are DUAL-LICENSED. You may modify and/or redistribute this software according to the terms of one of the following two licenses (at your option): ...

“Mozilla triple” (No longer used!)

The contents of this file are subject to {license1}; you may not use this file except in compliance with the License.

Alternatively, the contents of this file may be used under the terms of {license2}, or {license3}, in which case the provisions of {license2} or {license3} are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of either {license2} or {license3}, and not to allow others to use your version of this file under the terms of {license1}, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the {license2} or {license3}. If you do not delete the provisions above, a recipient may use your version of this file under the terms of any one of {license1}, {license2} or {license3}.

But (almost) none of these vague gestures actually SPECIFY the “sublicensable OR” legal semantics—the ability to continue re-distributing the codebase under this "superposition" which might be too permissive to actually be allowed by any of the specific licenses in question.

Has there ever been any co-ordinated or centralized effort to build an unambiguous "dual license"? The closest thing I could find was Mozilla's efforts, but obviously they didn't stick with that long term.

4
  • Just to note (as your paragraphs are not 100% specific on this): The SPDX license identifier alone is in most cases not a sufficient expression of the license grant. It is merely a machine-readable indicator, but most (if not all) licenses require a verbose statement or sometimes even the citation of the entire license language to be provided with the licensed materials. Dec 20, 2023 at 23:25
  • I am unclear why your question focuses around "sub-licensing" instead of 'licensing'. Especially in the context of GPL (or AGPL which you are using), where Section 2 states: "... ... Sublicensing is not allowed; section 10 makes it unnecessary." Please explain! Dec 20, 2023 at 23:32
  • @Martin_in_AUT (Of course, text files for each license are included in the source tree along with it. That's a bit of a tangent.) Dec 21, 2023 at 0:54
  • @Martin_in_AUT Hopefully this edit clears up the ambiguity, for the GNU-spectrum licenses. Jan 9 at 20:18

2 Answers 2

4

When it comes to dual licensing, the OR keyword in "license A OR license B" means that the recipient can choose to follow the complete license A or the complete license B. It does not give you the right to pick and choose clauses from the two licenses in a manner you like.

Therefor, this part in your description of OR does not make sense to me:

Additionally, whenever both of These licenses would simultaneously permit You to sub-license this Work under the same terms, and whenever You are not otherwise forbidden to sub-license this Work under different terms, You may sub-license this Work under the terms of This license. (This license does not affect your ability to sub-license this Work under either of These licenses separately.)

sub-licensing is only allowed if the license under which you receive a work allows sub-licensing and you have to follow the conditions that the license places on the sub-license that you can offer. The only impact of dual or multi-licensing here is that the different licenses offered may have different sub-licensing options and you get to choose which one fits your needs best.

the ability to continue re-distributing the codebase under this "superposition" which might be too permissive to actually be allowed by any of the specific licenses in question.

Dual licensing does not create such a "superposition" that is more permissive than one of the individual choices, because dual licensing does not create some kind of new license.

To answer the question posed in the comments

The AGPL doesn't permit me to redistribute software under the terms of the React license, and the React license doesn't permit me to redistribute software under the terms of the AGPL. If I fork so-called "dual-licensed" software (that used OR rather than AND), then, how am I legally able to redistribute it under the same terms I got it under—terms which, taken as a whole, are noncompliant with both of the agreements?

The most typical case where dual-licensing is used is when there is a need or desire to offer the software under multiple, mutually incompatible, license. If all licenses are compatible, it is way easier to release under the most permissive one and dual licensing only really comes into the picture when there is an incompatibility between the licenses.

My understanding is, if you receive a dual-licensed work under "License A OR License B" and if your actions (how you use the work and redistribute the modified or original) are compatible with each license in isolation, then you can, both at the same time

  • Choose to receive the work under License A and redistribute your version under License A
  • Choose to receive the work under License B and redistribute your version under License B

As what you are distributing in both options is identical, you can equally indicate the license as "License A OR License B" and allow your users to choose.

5
  • The AGPL doesn't permit me to redistribute software under the terms of the React license, and the React license doesn't permit me to redistribute software under the terms of the AGPL. If I fork so-called "dual-licensed" software (that used OR rather than AND), then, how am I legally able to redistribute it under the same terms I got it under—terms which, taken as a whole, are noncompliant with both of the agreements? Dec 21, 2023 at 14:47
  • @JamesTheAwesomeDude Natural language works differently. You should not try to interpret it in the way as you would interpret the use of AND and OR in programming language. Apply context! Dec 22, 2023 at 14:26
  • The relevant point, which I think is missing from your analysis, is the fact that the GPL (and most similar copyleft licenses) does not actually forbid redistributing under other licenses. What it forbids is "additional restrictions" - but adding a second licensing option is hardly a restriction in this sense (it literally gives the end user additional rights).
    – Kevin
    Dec 26, 2023 at 1:52
  • >It does not give you the right to pick and choose clauses from the two licenses in a manner you like.< A strange statement to include in the first sentence with bold text, as I'm unclear what exactly you're responding to. Jan 9 at 20:20
  • @JamesTheAwesomeDude, I was responding to a sentiment that I felt in the question. Based on your reaction, that sentiment was not consciously written into the question or maybe I was the only one who read it there. Jan 10 at 7:39
3

From "SPDX IDs: How to use", we read:

// SPDX-License-Identifier: Apache-2.0 OR MIT
The licensee may choose to use the file under either the Apache-2.0 license or the MIT license.

This means that it is an exclusive-OR.

So, the licensee must choose only one of those licenses to comply with.

When described in a longer form, the SPDX way of "either A or B" is the clearest way.

This makes most sense when two of those licenses are incompatible with each other, for e.g. GPL-2.0-only OR Apache-2.0.

1
  • Let's say Alice publishes the software under FooCopyleft "OR" BarCopyleft. Then, Bob forks it, making changes to the code but leaving the license files as-is. Later, Carol forks Bob's fork. If the licenses are incompatible, how can Carol still receive the source code under the same "dual license" Bob got it under? It would seem that whichever license option Bob "chooses", doesn't permit him to redistribute his fork under the terms of the other option. Jan 11 at 9:19

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.