Proposal to use SPDX for SRFI license/copyright declarations Maxim Cournoyer 06 Dec 2023 22:46 UTC

Hello Schemers,

I'd like to propose the use of SPDX [0] for tersely yet unambiguously
tagging the sources of every SRFI spec/implementation.  I've found it
relatively quick and easy to do, via the 'reuse' tool [1], as was
suggested in the #scheme channel.  Using such a tool, one can run 'reuse
lint' to verify that each file carries the copyright/license information
and that all the used licenses have their license text files checked in
the repository.

And now for some context as to how I came looking into this: while
integrating various SRFIs into Guile [2], I was looking at the licenses
of the sources I was copying into the Guile tree, and it would have made
things easier if each file carried its copyright and license
information.  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.

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 [3].

Here are some examples I've worked on, to visually demonstrate what SPDX
usage looks like in practice: SRFI 104 [4], SRFI 125 [5], SRFI 151 [6].

Is the community in agreement with this initiative?  If yes, I'll
continue producing such pull requests, and it would be a good idea to
ask/document that every new SRFI contributed should pass the "reuse
lint" check.

[0]  https://spdx.dev/
[1]  https://reuse.software/
[2]  https://lists.gnu.org/archive/html/guile-devel/2023-12/msg00026.html
[3]  https://github.com/scheme-requests-for-implementation/srfi-125/blob/0c11dec815d0d34eeb098eb97387ecc4bc1a212a/srfi/125.body.scm#L4
[4]  https://github.com/scheme-requests-for-implementation/srfi-104/pull/1/files
[5]  https://github.com/scheme-requests-for-implementation/srfi-125/pull/10/files
[6]  https://github.com/scheme-requests-for-implementation/srfi-151/pull/6/files

--
Thanks,
Maxim