Proposal to use SPDX for SRFI license/copyright declarations Maxim Cournoyer (06 Dec 2023 22:46 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (06 Dec 2023 23:06 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Wolfgang Corcoran-Mathe (07 Dec 2023 18:31 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (07 Dec 2023 19:00 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (07 Dec 2023 20:12 UTC)
Re: First batch of SPDX annotated SRFIs examples Maxim Cournoyer (09 Dec 2023 03:28 UTC)
Re: First batch of SPDX annotated SRFIs examples Lassi Kortela (09 Dec 2023 16:18 UTC)
Re: First batch of SPDX annotated SRFIs examples Maxim Cournoyer (09 Dec 2023 23:06 UTC)
Re: First batch of SPDX annotated SRFIs examples Lassi Kortela (10 Dec 2023 12:45 UTC)
Re: First batch of SPDX annotated SRFIs examples John Cowan (10 Dec 2023 13:15 UTC)
Re: First batch of SPDX annotated SRFIs examples Maxim Cournoyer (10 Dec 2023 16:03 UTC)
Re: First batch of SPDX annotated SRFIs examples Maxim Cournoyer (10 Dec 2023 15:59 UTC)
Re: First batch of SPDX annotated SRFIs examples Lassi Kortela (10 Dec 2023 16:32 UTC)
Re: First batch of SPDX annotated SRFIs examples Maxim Cournoyer (12 Feb 2024 19:48 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (08 Dec 2023 16:21 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (08 Dec 2023 23:37 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (09 Dec 2023 00:01 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (09 Dec 2023 00:11 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Maxim Cournoyer (08 Dec 2023 15:41 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (08 Dec 2023 23:31 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (08 Dec 2023 23:35 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (09 Dec 2023 08:06 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (09 Dec 2023 14:19 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (09 Dec 2023 16:08 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (09 Dec 2023 16:02 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (10 Dec 2023 02:21 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (09 Dec 2023 17:28 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (10 Dec 2023 02:30 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (12 Dec 2023 00:15 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (12 Dec 2023 18:44 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (13 Dec 2023 00:26 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (18 Dec 2023 19:41 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (18 Dec 2023 23:03 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (13 Dec 2023 00:41 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (12 Dec 2023 07:01 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (13 Dec 2023 00:24 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Daphne Preston-Kendal (09 Dec 2023 10:26 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Marc Nieper-Wißkirchen (09 Dec 2023 17:35 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Daphne Preston-Kendal (09 Dec 2023 21:09 UTC)
Re: Proposal to use SPDX for SRFI license/copyright declarations Arthur A. Gleckler (10 Dec 2023 02:18 UTC)

Re: Proposal to use SPDX for SRFI license/copyright declarations Maxim Cournoyer 08 Dec 2023 15:41 UTC

Hi!

Philip McGrath <xxxxxx@philipmcgrath.com> writes:

> Hi,
>
> Yes, thanks, Maxim, for looking into this issue. I've also spent some
> time digging into license issues with historical SRFIs, as they
> affected some of the SRFIs distributed with Racket. (In particular,
> I've worked to ensure that the main Racket distribution satisfies the
> Debian Free Software Guidelines, Guix's Free System Distribution
> Guidelines, and every other set of guidelines I'm aware of.)

I think you meant the GNU Free System Distribution Guidelines (rather
than Guix) here, right? (GNU FSDG).

> Broadly, I think clear and accurate license information is a good
> thing, and the https://reuse.software guidelines are indeed a
> relatively quick and easy way to record that information. I do have a
> few questions, though.
>
> As I understand the historical situation, when the SRFI process began
> in 1998, it adopted a variant of the IETF RFC license. The license was
> intended to be very permissive, but it also tried to ensure that
> derivative works would not be confused with the final, immutable SRFI
> document itself. (I have gained some sympathy for this goal as, when
> hunting down related issues, I have encountered and tried to reconcile
> subtly different versions of a few SRFI documents.) Unfortunately, in
> the judgement of Debian, Fedora, and others, the restrictions on
> modification went too far.
>
> In 2005, the SRFI editors undertook a relicensing process, changing
> the license for new SRFIs to MIT/Expat and relicensing all older SRFIs
> except for SRFI 5 and SRFI 24, for which they were unable to contact
> the authors.

[...]

> My understanding is that, since 2005, the SRFI process has included
> essentially unchanged requirement 9 under "Structure" in the current
> <https://srfi.schemers.org/srfi-process.html>:

Interesting background information.  I haven't encountered the IETF RFC
license yet in the SRFIs surveyed, and looking at SRFI 5 and 24,
thankfully only SRFI 5 (which has been withdawn) appears to still be
using it [0, 1].

[0]  https://github.com/scheme-requests-for-implementation/srfi-5/blob/755600f7b066ebbfd570e74397a1e2b94eba9be3/srfi-5.html#L325
[1]  https://github.com/scheme-requests-for-implementation/srfi-24/blob/09c37bf07f8339a1130a47d000bdb2d0a22a53df/srfi-24.html#L322

>> The SRFI document] must contain a copyright statement as follows
>> (where AUTHOR should be replaced by the name(s) of the author(s)
>>  and YEAR will be the year in which the SRFI number is allocated):
>> [ ... text of the MIT/Expat license ... ]
>> In addition to the SRFI document, any software written
>> specifically for the SRFI should be published under the above
>> license.  However, at the editors' discretion, the SRFI may
>> reference software that was already written and published under
>> another license, citing that software as its sample
>> implementation.  The BSD 2- and 3-clause licenses are
>> specifically allowed for this purpose
>
> Maxim, have you (or has anyone else) found any cases that appear to be
> inconsistent with this requirement?

Yes, it's not true that every SRFI source out there is licensed using
the set of {MIT, BSD-2-Clause, BSD-3-Clause} licenses.  Some are public
domain, some using the SLIB license, some are custom, etc.  They are
rather far and few in between, but this situation exists.

> You write that:
>
>> The srfi-N.html specification text often carries an Expat
>> (MIT) license text and copyright notice, but there are sometimes source
>> files that carry a different license, for example SRFI 120 [2].  It's
>> also common for files to not carry any license header at all.
>
> My understanding of the structure requirement is that *all*
> srfi-N.html documents should be under the MIT/Expat license except for
> the historical srfi-5.html and srfi-24.html. Sample implementations
> may use other licenses when specifically noted, but I think the
> requirement means that sample implementations that do not say
> otherwise should be included under the MIT/Expat SRFI license.

Yes, that's fair to assume, but in some cases there may be more than 2
licenses at play, in which case this assumption becomes a bit unwieldy.
Some guidelines, as those of the GNU project, suggest that every
non-trivial file should include a copyright and license notices [0].
Non-trivial in the context of copyright protection is defined elsewhere
in that document as 15 lines or more of code [1].  For remove any
ambiguity, I think it's best to stick to the REUSE guidelines of having
every file annotated with its license/copyright information.

[0]  https://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices
[1]  https://www.gnu.org/prep/maintain/maintain.html#Legally-Significant

> If Maxim's proposal is adopted, I think the SRFI process document
> should be updated accordingly. In addition to the machine-readable
> license comment, I personally would suggest replacing the written-out
> text of the license in new SRFI documents with a link to
> <https://spdx.org/licenses/MIT.html>, relieving future readers of the
> burden of determining that the text really is the SPDX-defined MIT
> license and not one of many very slightly different licenses.

Sounds like a good idea to me (noting as you did later that the license
text would still appear in a text file of the repo as LICENSES/MIT.txt).

> Also, related to this comment from Maxim:
>
>> The activity of reviewing each source files for license information is
>> also useful in its own, uncovering potential problems, such as the
>> apparent use of a non-free (ethical) software license in the SRFI 125
>> implementation
>
> To avoid such potential problems, I would suggest that, where the
> process document gives SRFI editors discretion to allow sample
> implementations under other licenses, the document should at least
> strongly encourage, and perhaps even require, that the sample
> implementation use an existing broadly-accepted license.
>
> Here's one possible concrete guideline, as articulated in
> <https://sfconservancy.org/blog/2018/oct/16/mongodb-copyleft-drafting/>:
>
>> We de-facto instituted what my colleague Richard Fontana once
>> called the “Rule of Three” — assuring that any potential FOSS
>> license should be met with suspicion unless (a) the OSI declares
>> that it meets their Open Source Definition, (b) the FSF declares
>> that it meets their Free Software Definition, and (c) the Debian
>> Project declares that it meets their Debian Free Software Guidelines.
>
> Furthermore, I think SRFI authors should be encouraged to consider at
> least dual-licensing the sample implementation under the MIT license,
> as the consistency is a benefit for downstream users and distributors
> of SRFIs.

That's a good suggestion; if everything was either Expat (MIT) or dual
license with it as an option, it'd simplify the life of downstream
users, not having to manually review if the licenses used are compatible
with their Scheme project's own license.

[...]

> I also have some more specific questions and comments about the pull
> requests, for which I'll take
> <https://github.com/scheme-requests-for-implementation/srfi-104/pull/1>
> as an example.
>
> The commit adds a ".reuse/dep5" file. My understanding is that this is
> not required unless it is actually used to give license information
> for files that don't include it. either as comments or in adjacent
> ".license" files. Since it isn't used in this case, I think it
> shouldn't be included.

These files were generated when using 'reuse init'.  You are right that
they don't seem to be part of the REUSE spec (deleting the .reuse
directory doesn't cause 'reuse lint' to fail).  I'd keep them around
though, since they still define useful metadata for the project, such as
the 'Upstream-Name', 'Upstream-Contact' and 'Source' URL (git repository
location).

> The repository includes a ".gitignore" file that, before the new
> commit, contained only "*~". I'm not a lawyer, but I would be shocked
> if this file were actually uncopyrightable. The tutorial at
> <https://reuse.software/tutorial/#insignificant-files> and FAQ at
> <https://reuse.software/faq/#uncopyrightable> suggest CC0-1.0 for such
> files, which is what I do in my own projects. In fairness, though, the
> best way to handle such files is a thorny issue under ongoing
> discussion: see <https://github.com/fsfe/reuse-docs/issues/62>.

I pondered on that situation, also in the case where the files are
already waived from copyright via some public domain assignment text.
CC0 is to be used by the author of the files (the original copyright
holder) to waive the copyright, so we can't just mark existing public
domain files with CC0.  For files not covered by copyright because of
their insignificant content (e.g. tiny '.gitignore') files, it seems it
doesn't matter too much; CC0 would convey 'public domain' status well,
but means adding an extra LICENSES/CC0-1.0.txt verbose file just for
that.  I've opted for the pragmatic solution, which is to mark these
insignificant files as MIT licensed, knowing it wouldn't be found
protected by copyright in court anyway (no harm done), which was
suggested somewhere.

> In files like "library-files-utilities.r6rs-lib", the commit removes
> the comment with the full text of the license and replaces it with
> "SPDX-License-Identifier: MIT".
>
> Only after reading the diff several times to comment on this change
> for other reasons did I notice that this the text in this file
> includes an advertising clause, which means it is not the SPDX-defined
> MIT license. It is almost the X11 license, except for two issues: the
> advertising clause is before the warranty clause, instead of after it,
> and the advertising clause ends with "prior written authorization",
> but the SPDX markup for the X11 license (see
> <https://github.com/spdx/license-list-XML/blob/main/src/X11.xml> ends
> in:
>
> ```
> authorization from <alt match=".+" name="name3Disclaimer">the X
> Consortium.</alt>
> ```
>
> which means " from " is required. I encountered a similar issue with
> software derived from Tiny CLOS, which used text that did not quite
> match the SPDX definition of the Xerox license: you may want to open a
> PR like <https://github.com/spdx/license-list-XML/pull/1346> (and
> hopefully the SPDX lawyers won't consider this one "a more interesting
> question"!).

Good catch.  In light of the above, the license could be extracted to a
custom license, e.g. LICENSES/LicenseRef-Custom.txt and refered via the
LicenseRef-Custom identifier.

> The point I originally wanted to raise about this change is that,
> while I don't have a strong view about it myself, my understanding is
> that there has been some controversy over removing existing license
> comments when adding SPDX comments. (If it is permissible, my personal
> preference would probably be in favor of removal, again with the idea
> of relieving future readers of the burden of verifying weather the
> text is really what the identifier says or if very subtle changes
> might have snuck in.)
>
> The concern as I understand it is about language like, "The above
> copyright notice and this permission notice shall be included in all
> copies or substantial portions of the Software." Under some
> circumstances and some interpretations, concerns have been raised
> about whether removing the literal text of such notices might pose
> various potential issues. (Let me say once again that I am not a
> lawyer!) I've heard this concern raised in particular in the context
> of the Linux kernel, though not all of the same considerations as with
> GPL-2.0-only would apply here. There's some discussion in this thread,
> for example:
> <https://lore.kernel.org/linux-spdx/xxxxxx@ebb.org/>
>
> If the conclusion is that the existing text should be preserved
> vebatim in existing files, note that a comment like ";; Copyright (c)
> 2010 Derick Eddington" is recognized by the Reuse specification and
> tool, so only the SPDX-License-Identifier comment would need to be
> added.
>
> Overall, I'm supportive of Maxim's proposal, but I think a great deal
> of care must be taken with the details to ensure that the license
> situation ends up unambiguously better, without introducing new
> potential problems. It might even be worth seeking guidance from a
> group like the Software Freedom Conservancy, which helped Racket to
> finish its years-long relicensing effort.

I agree that we must thread carefully.  One mistake I've made in one
(some?)  PRs (I'll change it) was to mark public domain work (with a
copyright waiver text) as CC0.  It's not my call to do so, so I should
instead use a custom public domain "license" via LicenseRef.

I'd prefer to take out the license text after it's extracted to
LICENSES/LicenseRef-SomeCustomLicense.txt instead of leaving it in to
keep things dry and consistent.

Perhaps a compromise could be: leave existing works text untouched (add
extra SPDX annotation only), while make it a policy for new SRFIs to use
strictly SPDX matching the REUSE guidelines? (with no license notice
embedded in each file).

--
Thanks,
Maxim