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 Philip McGrath (07 Dec 2023 05:05 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 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 Philip McGrath 07 Dec 2023 05:05 UTC

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.)

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. For details, see
<https://srfi-email.schemers.org/srfi-announce/msg/2652023/>. (It is
indicative of the thorny details that come up in this area that the
announcement email called it "the MIT (X11) license", but the actual
text of the license, both in the email and as used in practice by SRFIs,
is the MIT/Expat license, without the advertising clause that
distinguishes the X11 license. One of the benefits of SPDX, in addition
to the namespace of licenses, is the XML specification of what text
actually matches each license.)

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>:

> 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?

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.

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.

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.

(Tangentially, in case it is useful for anyone, I designed for Racket a
grammar of "license S-expressions" for representing an SPDX license
expression as a Scheme datum, with the useful property that Scheme's
normal `write` will emit text conforming to the character-based grammar
of the SPDX standard. The documentation is at
<https://docs.racket-lang.org/pkg/metadata.html#%28tech._license._s._expression%29>.)

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.

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>.

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"!).

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.

Thanks again for diving into this thorny thicket,
Philip