README.OpenSource 文件规范

目的

为更好追溯第三方开源软件的原始上游信息,特在《第三方开源软件引入指导》中对相关信息进行了要求 “新引入的开源软件必须在其根目录提供README.OpenSource文件,在该文件中准确描述其软件名、许可证、许可文件位置、版本、对应版本的上游社区地址、软件的维护Owner、功能描述以及引入的原因。” 但社区开发者常见问题是对于README.OpenSource 写作要求和规范并不清晰,对于其中多License情况,多开源软件情况等场景如何规范填写并不清晰,因此,本文旨在规范化README.OpenSource文件的写作要求,并将相关要求基线化,在工程能力成熟后,README.OpenSource文件可按照本规范,在选型引入时,自动基于引入的信息由IT系统生成此文件。

范围

本指导适用于所有参与OpenHarmony社区的贡献者、特别是当引入第三方开源软件到OpenHarmony项目中。

本文的改进和修订说明

  1. 本文档由OpenHarmony合规SIG主导起草和维护。本文档的最新版本总可以在 这里找到。
  2. 任何对于本文中涉及的规则的增加,修改,删除都必须被追踪,请进入该追踪系统。
  3. 最终规则经过社区充分的讨论后,由PMC评审定稿。

README.OpenSource 字段规则说明

README.OpenSource 样例

[
    {
        "Name": "linux",                   # 上游开源软件名全称
        "License": "GPL-2.0+",             # 上游开源软件中包含的许可证信息
        "License File": "COPYING",         # 许可证所在文件路径
        "Version Number": "5.10.93",       # 该软件的版本
        "Owner": "xxx@xxx.com",            # 开源软件在OpenHarmony组织下对应的维护人及邮箱
        "Upstream URL": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-5.10.93.tar.gz",   # 上游软件包发布地址
        "Description": "XXXXXXX"           # 开源软件功能描述
    },
    {
        ...
    }
]
  1. Name : 在本代码仓中包含源码的上游开源软件全称。若有多个软件,则写个{}进行描述。

注意:

假设A软件依赖B软件,若通过将B软件源码放置在本仓库中,来满足A对B的依赖关系,即A包含依赖B, 则A、B软件均需要声明; 若B软件已在OpenHarmony组织下建立其专属代码仓,仅在编译构建时通过GN指定其他代码仓目录进行依赖,不是以源码形式存放在本代码仓库的,即A开源软件编译依赖B软件,则不用在此处声明。

  1. License : 上游开源软件中包含的许可证信息此处不可随意填写,需使用SPDX Identitifer简写,每次只能写一个许可证信息; 若存在许可证二选一的情况,在此明确具体选择了哪个许可证; 若代码仓存在多许可证共存的情况,则需要在本文件的最外层数组[]中,再增加一组开源软件元数据的{}描述,对其他许可证及其对应的文件路径进行描述。

  2. License File : 许可证文件和本代码仓根目录的相对路径,包含最终的文件名。 多个许可证文件的处理方式,参考License字段的处理规则,配合完成。

  3. Version Number : 上游软件正式发布的版本号,应与上游版本号的文本内容保持完全一致。

  4. Owner : 该开源软件在本代码对应组织下的维护者,注:此Owner仅表示在本仓的软件维护者,不同于软件的实际作者。

  5. Upstream URL : 源码引入时上游软件对应版本的源码包的发布地址。

  6. Description : 开源软件功能的简要描述。