guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

License issue with SRFI 5


From: Philip McGrath
Subject: License issue with SRFI 5
Date: Fri, 22 Oct 2021 22:13:19 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2

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/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]