On Wed, Jul 13, 2022 at 10:38 PM Jilayne Lovejoy <jlovejoy(a)redhat.com> wrote:
On 7/12/22 8:31 AM, Richard Fontana wrote:
> On Mon, Jun 6, 2022 at 5:51 PM Fabio Valentini <decathorpe(a)gmail.com> wrote:
>> On Mon, Jun 6, 2022 at 11:14 PM Richard Fontana <rfontana(a)redhat.com>
>>> On Wed, May 25, 2022 at 2:12 AM Otto Urpelainen <oturpe(a)iki.fi>
>> I wonder what you think about simple cases of "effective" licenses?
>> For example, most Rust projects are dual-licensed as "Apache-2.0 OR
>> MIT", but some odd ones are released under "MIT"-only or
>> "Apache-2.0"-only licenses.
>> So, for a binary package that contains code from both "Apache-2.0 OR
>> MIT" and "MIT"-only projects, we usually "collapsed"
that into just
>> Just enumerating the licenses in this case - "(Apache-2.0 OR MIT) AND
>> MIT" - would be kind of silly, in my opinion.
> I wanted to follow up on this point since it does feel to me like we
> are stubbornly clinging to the practice of recording a FOSS dual
> license in the license tag, when not doing so could provide some
> simplification of license tag expressions.
> In my mind, there were a few reasons for this practice: (1) it was
> what Fedora traditionally did; (2) it matches general upstream culture
> (the idea of passing down a FOSS license choice through a chain of
> distributees; (3) there's a contrary corporate culture seen in some
> quarters of making sure that "bad" (from their perspective) FOSS
> licenses in a dual license scheme are eliminated, which I think is
> based mostly on ignorance and copyleftphobia and so forth, which we
> don't want to encourage or be associated with; (4) there isn't going
> to be a good, consistently-applicable basis for selecting one or the
> other license -- this is related to (3). (4) is also related to the
> "effective license" problem: there isn't really any coherent
> license doctrine that can be consistently applied. I guess also (5)
> which is a community counterpart to (3): you would end up with
> licenses being selected out of a dual license based on the individual
> preferences of a Fedora packager. In one case, a Fedora packager might
> personally prefer the Apache License 2.0 over MIT, in another case the
> opposite. This contradicts the tradition of passing down the choice to
> the user.
Ha, you start out with "stubbornly clinging" and that maybe not
recording the dual license in the license tag helping simply things, but
then after reading your points (1) through (5), I felt even more
convinced of the value in recording/retaining such info!
I must say - the scenario where someone makes the choices (point (3) by
example) can be really annoying for downstream recipients or downstream
of downstream. I have memories of doing source code audits and running
into this and relying on some form of "tribal knowledge" that there was
a choice upstream that had gotten removed and then going upstream to
find it, so the choice could be made "again". Fedora, as a free and open
source software distro, need not make an explicit choice between two
free and open source licenses (in the way a commercial software
distribution might), so the policy of passing along the original choice
makes sense to me as a matter of convenience (for downstream recipients)
and in keeping with the principles of Fedora being free and open more
Sorry, I'm somewhat confused by these last two responses to my question.
On the other hand, you seem to be making arguments that *favor*
simplification of dual licenses.
But the conclusion seems to be that "just specify everything" is still better?
For a few packages, the license string would get very long (hundreds
of characters), and basically meaningless for any user of the package.
And what I don't understand: In the case of a project that contains -
or includes - both "(ASL 2.0 OR MIT)" and "MIT" licensed code,
the upstream project basically already made the decision about the
resulting license (i.e. "MIT")?
Assume that I as the packager would actually make a "choice" here, and
"choose" ASL 2.0", that would result in a package with license "ASL
2.0 and MIT".
However, if I make the more "obvious" choice of "MIT", the license
will be just "MIT".
So the first "choice" results in a package with *strictly more*
licensing restrictions than the second "choice".
I as the packager don't want to (or should?) produce a package that
has stronger licensing restrictions than necessary (or intended).
>> Adding the full "Apache-2.0 OR MIT" choice from
the first project
>> seems to be pointless, since it actually cannot result in a choice of
>> license - because that choice is already forced by the "MIT"-only
>> second project. Please correct me if this analysis is wrong.
sort of, but given the above points, I don't think it hurts to capture
"(Apache-2.0 OR MIT) AND MIT" - it's accurate and somewhat obvious as to
what is going on.
It might be accurate. But this is also a very simplified example to
illustrate my point.
Here's a more realistic one (taken from one of my packages, where I
also happen to be the upstream developer).
This is the list of licenses of the project itself and its
dependencies, which are all statically linked together into a final
# (ASL 2.0 or MIT) and BSD
# ASL 2.0
# ASL 2.0 or Boost
# ASL 2.0 or MIT
# MIT or ASL 2.0
# MIT or ASL 2.0 or zlib
# Unlicense or MIT
# zlib or ASL 2.0 or MIT
Just recording everything would result in a license string of:
License: (ASL 2.0 or MIT) and BSD and ASL 2.0 and (ASL 2.0 or Boost)
and (ASL 2.0 or MIT) and BSD and MIT and (MIT or ASL 2.0) and (MIT or
ASL 2.0 or zlib) and (Unlicense or MIT) and (zlib or ASL 2.0 or MIT)
This is already kind of silly, because it's stupidly long, and there
are duplicates, or clauses that are identical except for the order of
I would not say that this is "somewhat obvious as to what is going
on", because nobody will even read this string in its entirety.
Now, is reordering the contents of the clauses and removing any
duplicates already considered as doing an "effective license
Anyhow, for this package, I have "simplified" the license string to:
License: ASL 2.0 and BSD and MIT
This satisfies every clause, and I'd argue it is *much more obvious*
to users what it means than the silly long string above.
It doesn't give users any "choices", but any "choice" they would
made (differently than what I did when packaging this project) would
have resulted in a package with *strictly more* restrictions, but
I'd argue that 1) minimizing restrictions and 2) making the resulting
license actually understandable for users is much more important than
to preserve any "choice" that, if exercised differently, would only
result in either more restrictions, more complicated licensing terms,