JavaScript 许可网络标签
如果您是一名在网站上部署压缩 JavaScript 的网站管理员,这里有一种方法可以在不更改压缩文件本身的情况下声明它们的许可证和源代码位置。当 JavaScript 使用 GNU 许可证之一,但不包含 Loic Duros 在解放你的 JavaScript 的 3.2 节中提出的额外许可时,这尤其有用。
JavaScript 许可网络标签方法适用于压缩的 JavaScript 代码文件。此方法符合 GNU 软件许可证中的相关条件,并使 LibreJS 能够确认网站上信息的正确性。
使用网络标签的前提是相应的 JavaScript 源文件带有许可声明,声明它们已根据自由许可证发布。除非其源代码是自由的,否则编译后的代码不是自由的,并且指明许可证对于正确发布自由源代码至关重要。如果您尚未这样做,您应该首先这样做。
您也可以在未压缩的 JavaScript 文件上使用网络标签,以便以程序可以识别的方式指示其许可证;但是这些是源文件,因此请不要忘记为它们提供人类可读的许可声明。省略这些声明会给这些文件的法律地位带来不确定性。
网络标签方法不适用于直接包含在 HTML 页面中的内联 JavaScript——它们的许可证信息应该直接在这些页面中声明。
有关我们设计此格式的原因的更多解释,请参阅理由。
编写标签页面
为您的网站添加一个 JavaScript 许可网络标签页面。您可以使用对您最方便的任何路径或文件名;其他人将通过链接找到它。该页面必须包含一个标记有属性 id="jslicense-labels1"
的表格。此名称使自动化工具可以轻松找到表格,并告诉它们期望的格式。此表格的每一行将包含三个单元格,提供有关网站上使用的独立 JavaScript 文件、其许可证以及访问者如何获取其源代码的信息。
每一行的第一个单元格命名网站使用的 JavaScript 文件。该单元格必须包含一个链接到该文件的锚标记,就像网站上的 script
标记一样。
第二个单元格提供有关此 JavaScript 文件许可证的信息。该单元格必须包含一个锚标记,其链接指向完整的许可证文本,并且其文本提供许可证的完整名称,如果许可证有多个版本,则提供版本号以及文件是否已在更高版本的许可证下许可。良好的许可证标识符及其相关链接是
- GNU-GPL-2.0-或更高版本
- GNU-GPL-3.0-或更高版本
- GNU-LGPL-2.1-或更高版本
- GNU-LGPL-3.0-或更高版本
- GNU-AGPL-3.0-或更高版本
- Apache-2.0-仅限
- 修改的-BSD
- CC0-1.0-仅限
- Expat
- MPL-2.0-或更高版本
第三个单元格提供指向 JavaScript 源代码的链接。源代码文件可以是单个、未压缩的 JavaScript 文件、.tar.gz
存档或 .zip
存档。如果源存档包含多个 JavaScript 文件,则存档必须包含一个名为 00-INDEX
的文件,该文件列出了应连接各个源文件的顺序,以生成与网站上托管的文件等效的单个文件。如果从网站提供并从第一个单元格链接的 JavaScript 已经是以源代码形式存在的,请在此单元格中再次链接到相同的 URL。
以下是一个示例表格,用于说明。此网站仅使用一个 JavaScript 文件:jQuery 1.7 的压缩版本,根据 Expat 许可证分发。该表列出了该文件,并附有相应的许可证信息和指向完整源代码的链接
<table id="jslicense-labels1">
<tr>
<td><a href="/js/jquery-1.7.min.js">jquery-1.7.min.js</a></td>
<td><a href="https://directory.fsf.org/wiki/License:Expat">Expat</a></td>
<td><a href="/js/jquery-1.7.tar.gz">jquery-1.7.tar.gz</a></td>
</tr>
</table>
此页面可能包含其他文本和标记,包括您网站的正常布局和导航工具,但该表格必须突出显示在该页面上。
指向标签页面的链接
在使用 JavaScript 的每个页面上,包含一个指向上述标签页面的链接。用属性 rel="jslicense"
标记此链接,以便自动化工具可以找到它。例如,您的最终链接可能如下所示
<a href="/about/javascript" rel="jslicense">JavaScript license information</a>
此链接可以很小,但对于访问您网站的人来说应该清晰可见。
注释
如果您执行这些操作,您将符合 GNU 软件许可证中的相关条件,例如 GNU 通用公共许可证。它们也应该足以符合许多其他自由软件许可证,但我们不能确定它们会符合所有许可证。与往常一样,请确保您理解并遵守您分发的任何自由软件的许可证条件。