On 7/13/22 3:09 PM, Fabio Valentini wrote:
On Wed, Jul 13, 2022 at 10:38 PM Jilayne
> 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>
>>> 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"
>>> 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?
yeah... I think Richard and I are both sort of working through this as
you all come up with additional and perhaps more complex examples :)
(and trying to add to/draft guidance that will be (relative) easy to
follow and captures enough actual examples as well)
>>> 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
> what is going on.
It might be accurate. But this is also a very simplified example to
illustrate my point.
ok, fair enough - that was a simple example. And I have a
the guidance on dual-licensed packages probably contemplated more simple
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.
yeah, this is
a more interesting example for sure and agreed, it does
get a bit ridiculous looking even if still "accurate"
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,
Thanks for this, really helpful. Richard and I will discuss a bit more...
Going back to some of the original comments in this thread (or another
similar one?) - is the above actual example a common scenario for Rust
and Go packages? And can it get even more complex or lengthy than this
example? Just trying to get a sense of the typical range of examples
you all come up against, so we can be sure to try to cover those.
packaging mailing list --packaging(a)lists.fedoraproject.org
To unsubscribe send an email topackaging-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:https://docs.fedoraproject.org/en-US/project/code-of-conduct/
Do not reply to spam on the list, report it:https://pagure.io/fedora-infrastructure