unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* License issue with SRFI 5
@ 2021-10-23  2:13 Philip McGrath
  2021-10-29 14:44 ` Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Philip McGrath @ 2021-10-23  2:13 UTC (permalink / raw)
  To: Guix Devel

Hi Guix,

I was recently reminded of a thorny license issue with the SRFI 5 
standard document, which is part of the main Racket distribution. People 
from Racket, the SRFI community, Debian, and Fedora have taken steps to 
help mitigate the problem: I want to make some further improvements, but 
I first need clarity on what Guix's policy requires and permits.

Since 2005, SRFIs have used the MIT/Expat license, and all but two older 
SRFIs were relicensed: however, the SRFI editors were not able to 
contact the author of SRFI 5, Andy Gaynor, so it remains under the 
original SRFI license.[1] That license, modeled on that of IETF RFCs, 
was intended to be quite permissive while also trying to ensure 
derivative works would not be confused with the final, official SRFI 
itself. (The many versions of some SRFIs that nonetheless have come up 
while hunting down related issues has given me some sympathy for that 
goal.) Unfortunately, the restrictions on modifications went to far, at 
least in the judgement of Debian and Fedora.

Here is the license text, as it appears at 
<https://srfi.schemers.org/srfi-5/srfi-5.html> and 
<https://docs.racket-lang.org/srfi-nf/srfi-std/srfi-5.html>:

> Copyright (C) Andy Gaynor (1999). All Rights Reserved.
> 
> This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Scheme Request For Implementation process or editors, except as needed for the purpose of developing SRFIs in which case the procedures for copyrights defined in the SRFI process must be followed, or as required to translate it into languages other than English.
> 
> The limited permissions granted above are perpetual and will not be revoked by the authors or their successors or assigns.
> 
> This document and the information contained herein is provided on an "AS IS" basis and THE AUTHOR AND THE SRFI EDITORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Before going any further, let me emphasize that a great deal of progress 
has been made since distro packagers first pointed out the problem.[2] 
First, there was work to separate the problematic SRFIs (plural, at the 
time) into "srfi-lib-nonfree" and "srfi-doc-nonfree" Racket packages.[3] 
Distro packagers could cleanly remove these from their Racket 
distributions, and they also work properly if a user of the 
distro-packaged Racket explicitly decides to install them. Later, I 
wrote a free implementation of SRFI 5, so "srfi-lib-nonfree" is now 
(confusingly) free software, an empty package definition for backwards 
compatibility.[4] SRFI 29 was supposed to have been converted to the 
MIT/Expat license in 2005, but somehow was missed: just today, the 
current SRFI editor, Arthur Gleckler, confirmed the permission of the 
author, Scott Miller, and updated the official document.[5][6][7] So the 
only problem remaining is the SRFI 5 standard document.

Racketeers have high expectations of their documentation, like being 
able to right-click on an identifier in DrRacket (or the equivalent in 
Emacs with racket-mode) and jump to the locally-installed documentation 
for the relevant binding according to lexical scope and the module 
system---even for a binding like `let`, which is defined by 27 different 
Racket modules, including `srfi/5`. My tentative plan is to write free 
replacement documentation for SRFI 5, eliminate everything from 
"srfi-doc-nonfree" but the official SRFI 5 document itself, and program 
the free SRFI 5 documentation (in Racket's Scribble language) to link to 
the SRFI 5 document at racket-lang.org if there isn't a local copy 
installed.

This all raises a few questions about Guix policy:

  1. Can Guix distribute the official SRFI 5 standard document under
     the license listed above?

  2. If not, can Guix distribute free documentation that links
     to an online copy of the official SRFI 5 standard document?

  3. Would it be permissible for the free documentation to
     include instructions for installing the official SRFI 5 standard
     document locally, e.g. `raco pkg install srfi-doc-nonfree`?
     (Or perhaps `raco pkg install srfi-5-std-doc`, to avoid the
     implication of arbitrary non-free materials?)

(Of course, if someone can manage to contact Andy Gaynor, that would be 
even better!)

The first question is fundamental but less immediately important to me: 
since Debian and Fedora, at least, have answered in the negative, that's 
a scenario Racket will have to support. In FSDG terms,[8] the SRFI 5 
standard does seem like "information for practical use", so it probably 
would need a free license. On the other hand, of course, FSDG standards 
do allow some parts of documentation not to be modifiable. As a 
practical matter, the permission for "derivative works that comment on 
or otherwise explain it or assist in its implementation may be prepared, 
copied, published and distributed, in whole or in part"---particularly 
given "in part"---seems to grant just about every permission practically 
necessary, and the part about "this document itself" could be read to 
refer only to a document which purports to *be* the official SRFI 5 
standard, rather than merely to be derived it. (But I am not a lawyer.)

I very much hope the answer to the second question is that, yes, we can 
link to an online copy of the standard. It seems there is strong 
precedent for this. The GCC manual [9] links directly to "the 
authoritative manual on traditional Objective-C (1.0)" by NeXTstep, 
hosted by GNUstep, [10] and the "authoritative manual on Objective-C 2.0 
... from Apple" [11], neither of which appear to permit any modified 
derivative works at all. The same page refers to various ISO C 
standards, which AIUI are not even freely (gratis) distributed in final 
published form, and links to a reading list [12] which in turn links to 
numerous restrictively-licensed documents, from the ARM ABI standard 
[13] to a monograph on the history of the C language [14].

However, there are a few less-than-fully-developed sentences in the FSDG 
that cast some doubt, e.g., "Programs in the system should not suggest 
installing nonfree plugins, documentation, and so on."[8] I do not think 
this should be read to prohibit free documentation for free software for 
referring to restrictively licensed standards implemented by the 
software. To interpret the guidelines---which themselves state that they 
"are not complete"[8]---I turn to broader statements about the rationale 
for why free software needs free documentation[15]: in short, so that 
when users exercise their freedom [16] "to modify the software, and add 
or change its features, if they are conscientious they will change the 
manual too—so they can provide accurate and usable documentation with 
the modified program."[15] As long as free documentation for the free 
program implementing the standard exists, that criterion is 
satisfied---and indeed there are subtleties I encountered when writing 
the free implementation of SRFI 5 that are not clearly explained by the 
standard. If someone modifies the free implementation, they are free to 
modify the free documentation accordingly. There is no need to modify 
the SRFI 5 standard document, and indeed any modified document would no 
longer *be* the SRFI 5 standard as finalized on 1999-04-26 and amended 
on 2003-01-27. Perhaps "standards" should not be in precisely the same 
category as "documentation" in general. Of course, we should advocate 
for standards to be freely licensed, too! But when restrictively 
licensed standards exist, free programs can implement them, and I think 
their free documentation need not be coy about referring to the official 
standard document, especially if adequate free documentation exists for 
the free implementation.

Finally, there is the question of whether instructions could be provided 
for changing the hyperlinks in your local installation of some free 
documentation to point to a copy of the restrictively-licensed standard 
that you have downloaded to your machine, rather than a copy on the 
internet. I do not see what good purpose would be served by prohibiting 
this. Indeed, offline documentation advances positive goods like privacy 
that Guix should support. Perhaps this is also a reason to answer the 
first question in the affirmative.

I wish, albeit with the benefit of hindsight, that SRFIs had used a 
well-known and unambiguously libre license from the start---or, again, 
that someone might manage to contact Andy Gaynor and secure permission 
for relicensing. While the status quo persists, I want to provide the 
best-integrated free documentation for SRFI 5 I can.

Thanks for bearing with this long email. I hope we can think through 
together how Guix's principles ought to apply to the case of the SRFI 5 
standard document.

-Philip

[1]: https://srfi-email.schemers.org/srfi-announce/msg/2652023/
[2]: https://github.com/racket/srfi/issues/4
[3]: https://github.com/racket/srfi/pull/5
[4]: https://github.com/racket/srfi/pull/7
[5]: https://srfi-email.schemers.org/srfi-discuss/msg/17984552/
[6]: 
https://github.com/scheme-requests-for-implementation/srfi-29/commit/8790e9acc8c9740eb0f9fc6939ce6b9af4464d20
[7]: https://github.com/racket/srfi/issues/4#issuecomment-949944343
[8]: https://www.gnu.org/distros/free-system-distribution-guidelines.html
[9]: https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/Standards.html#Standards
[10]: http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf
[11]: 
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html
[12]: https://gcc.gnu.org/readings.html
[13]: https://developer.arm.com/documentation/ihi0036/latest/
[14]: https://www.bell-labs.com/usr/dmr/www/chist.html
[15]: https://www.gnu.org/philosophy/free-doc.en.html
[16]: https://gnu.tools/en/documents/social-contract/



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-03-07 22:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-23  2:13 License issue with SRFI 5 Philip McGrath
2021-10-29 14:44 ` Ludovic Courtès
2022-02-01  1:05   ` Philip McGrath
2022-03-07 10:41     ` Ludovic Courtès
2022-03-07 22:11       ` Philip McGrath

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).