理由
随着 许可证表达式的引入,出现了一项可靠服务的要求,该服务将为单个许可证标识符、异常标识符或许可证表达式提供参考文本。 此服务的另一项要求是具有稳定的 URL 架构,该架构不容易链接腐烂,因此我们可以安全地使用它为旧客户端提供向后兼容性。
Licenses.nuget.org 履行该角色。 Nuget.org 使用它为使用许可证表达式指定许可证的包提供许可证文本引用。
nuget pack 或将其与其他 客户端工具 一同打包,将 licenseUrl 元素设置为指向 licenses.nuget.org,以便为那些不支持 license 元素的旧客户端提供向后兼容性。
许可证和例外情况文本
从 SPDX 项目的 许可证列表数据存储库复制 licenses.nuget.org 上显示的许可证和许可证例外信息。 信息显示的格式紧密模仿 SPDX 网站本身使用的格式,例如,在 licenses.nuget.org 上的 MIT 和 SPDX.org 上的 MIT 中查看。
未通过开放源代码计划或免费软件基础批准的许可证不托管在 licenses.nuget.org 上,并且将被排除。
除了纯文本外,还使用多个样式来显示许可证。 根据 SPDX 许可证列表数据常见问题解答,红色文本被视为可替换文本,蓝色文本被视为不可变文本。 有关 SPDX 许可证列表数据的详细信息,请参阅其 常见问题解答 和 SPDX 许可证模板规范。
请注意,数据由 nuget.org 从 SPDX 复制到 licenses.nuget.org,采用临时性方法。 如果开放源代码促进会或自由软件基金会已批准许可证标识符,但未显示在 licenses.nuget.org 上,请 报告问题,nuget.org 团队将更新 licenses.nuget.org 和 nuget.org 的包上传验证,以符合 SPDX 的最新数据。
如果你作为包作者对 licenses.nuget.org 上提供的共享许可证文本不满意,则可以考虑使用 嵌入式许可证文本 (<license type="file">)而不是 NuGet 包的许可证表达式。 这样就可以完全自定义许可条款,并在包中包含自定义文本。
协议
Licenses.nuget.org 旨在由浏览器中的用户查看,不提供计算机可读响应。
必须使用 HTTPS 协议,并且应以某种方式构造请求。 它仅支持 GET 请求。
它接受许可证表达式或许可证异常标识符作为输入,具体方式如下。 请注意,许可证表达式的所有元素都区分大小写,因此对 licenses.nuget.org 的所有输入也区分大小写。
许可证表达式
请求
许可证表达式(包括表达式包含单个许可证时的简单情况)必须 经过 URL 编码 ,并用作请求中 licenses.nuget.org 的路径。
| 许可证表达式 | 要使用的 URL |
|---|---|
| MIT | https://licenses.nuget.org/MIT |
| (MIT) | https://licenses.nuget.org/(MIT) |
| (LGPL-2.0-only WITH FLTK-exception OR Apache-2.0+) | https://licenses.nuget.org/(LGPL-2.0-only%20WITH%20FLTK-exception%20OR%20Apache-2.0+) |
该服务仅支持 nuget.org 接受的许可证标识符和许可证异常标识符。值得注意的是,这意味着仅接受开放源代码计划或免费软件基金会批准的许可证标识符。 包含不受支持的许可证标识符或许可证异常标识符或不符合许可证表达式语法的所有许可证表达式都被视为无效。
响应
Licenses.nuget.org 将对包含有效许可证表达式的请求返回 HTTP 200 状态码,并提供一个包含许可证表达式说明的网页。
- 如果提供的许可证表达式包含单个许可证标识符,则返回包含该许可证引用文本的网页;
- 如果提供的许可证表达式是复合许可证表达式,则返回一个网页,其中包含包含指向单个许可证或许可证异常引用的链接的许可证表达式。
包含无效许可证表达式的任何请求都会导致 HTTP 404 响应。
许可豁免
请求
许可证异常标识符必须经过 URL 编码,并用作请求中 licenses.nuget.org 的路径。单个请求中只能提供单个许可证异常标识符。 除了许可证异常标识符之外,没有其他字符可能存在于 URL 的路径部分中。
| 许可证异常标识符 | 要使用的 URL |
|---|---|
| FLTK-exception | https://licenses.nuget.org/FLTK-exception |
| openvpn-openssl-异常 | https://licenses.nuget.org/openvpn-openssl-exception |
响应
Licenses.nuget.org 对具有已知许可证异常标识符的请求进行响应,返回 HTTP 200 状态代码,并提供包含指定许可证异常引用文本的网页。
包含不受支持的许可证异常标识符的任何请求都会导致 HTTP 404 响应。