本文件适用于deepin自研的所有已开源的项目源代码,包括首次发布及版本迭代。
可以理解为此规范为在 REUSE 规范 基础之上的补充规范,增加了对自述文件(README)与根目录下的 LICENSE 文件的要求。故如果您已经熟悉 REUSE 规范,则可只留意这些相应的段落。
完整使用的开源代码文件是指来自其它开源项目的、未经修改就直接在项目中使用的开源代码文件。对于这类代码文件,需要完整保留原作者在源文件头部的所有声明。
对于从外部开源项目获得的、经过修改之后在项目中使用的开源代码文件,需要完整保留原作者在源文件头部的所有声明,并在源文件首行标注修改声明;
(日期表达方式只是一个示例,内容上来说只需要精确到年月日即可)
# This file was modified by UnionTech Software Technology Co., Ltd. in yyyy/yy/yy(修改声明,需标明最后定稿的日期)
# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
# SPDX-License-Identifier: GPL-3.0-or-later
在上述模板中,除每行开头的“SPDX-FileCopyrightText: ”和“SPDX-License-Identifier: ”部分,版权年份、邮箱地址(可不写)等其它字段需要根据实际情况进行修改。
年份的格式为 “yyyy-yyyy”,前者为此文件的创建年份,后者为最后一次的修改年份,如果两者相同,则直接简写为一个年份,即“yyyy”
例如:
A项目于2022年发布,则A项目的版权声明写作:
# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
B项目于2015年首次发布,最后一次更新版本在2022年。则B项目的版权声明写作:
# SPDX-FileCopyrightText: 2015-2022 UnionTech Software Technology Co., Ltd.
为保证许可证名称的统一,符合ISO/IEC 5962:2021的标准,请在填写许可证名称时严格按照SPDX规范填写。
常见的许可证名称标准格式如下表所示,可访问https://spdx.org/licenses/ 查看全部。
常见写法 | SPDX规范写法 |
---|---|
GPLv2;GPL2 | GPL-2.0-only |
GPLv2+;GPL2+ | GPL-2.0-or-later |
GPLv3;GPL3 | GPL-3.0-only |
GPLv3+;GPL3+ | GPL-3.0-or-later |
LGPL3;LGPLv3 | LGPL-3.0-only |
LGPL3+;LGPLv3+ | LGPL-3.0-or-later |
Mulan PubL v2 | MulanPubL-2.0 |
Mulan PSL v2 | MulanPSL-2.0 |
MIT | MIT |
BSD-3 | BSD-3-Clause |
BSD-2 | BSD-2-Clause |
Apache2.0 | Apache-2.0 |
当新增一个文件时,Copyright的主体需填写该文件所有者(可以是个人或公司等主体),如有多个所有者,可增加多行。
自述文件需要中英双语两份文件。其中,英文版命名为README.md;中文版命名为 README.zh_CN.md。
自述文件的内容,需要包含以下以下部分(这是一个推荐的例子,具体情况根据项目内容变动):
(英文模板)
# Project Name
<copyright notice>
A short description of this project, so users could know what's this project is for, what does this project do.
### Dependencies
What packages need to be installed to use this project? You can also check the "Depends" provided in the `debian/control` file.
### Build dependencies
What packages need to be installed to be able to build this project from source?
## Installation
### Build from source code
Steps to build the project.If the project involves machine learning, it is necessary to provide legal data sources and training steps.
## Documentations
If any, link the documentation here. Please ensure the linked pages can be accessible from the public internet.
- Link 1
- Link 2
- ...
## Getting help
- [Official Forum](https://bbs.deepin.org/) for generic discussion and help.
- [Developer Center](https://github.com/linuxdeepin/developer-center) for BUG report and suggestions.
- [Wiki](https://wiki.deepin.org/)
(按照项目实际情况放帮助链接)
## Getting involved
We encourage you to report issues and contribute changes
- [Contribution guide for developers](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers-en) (English)
- [Translate for your language on Transifex](#) *please update to the actual Transifex link of this project*
(按照项目实际情况放贡献指南链接)
## License
License description here. The license name is suggested to use the same one as [SPDX license identifier](https://spdx.org/licenses). Following is an example:
Project Name is licensed under [GPL-3.0-or-later](LICENSE)
(中文模板)
# 项目名称
版权通知
项目的简短介绍,告知使用者本项目的目的和主要内容。
### 依赖
项目运行所依赖的软件包
### 编译依赖
项目编译时所依赖的软件包
## 安装
### 构建过程
项目构建步骤
## 文档
放置项目文档的链接。(确保该链接是外网可用的)
## 帮助
- [官方论坛](https://bbs.deepin.org/)
- [开发者中心](https://github.com/linuxdeepin/developer-center)
- [Wiki](https://wiki.deepin.org/)
(按照项目实际情况放帮助链接)
## 贡献指南
我们鼓励您报告问题并做出更改
- [开发者代码贡献指南](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers)
(按照项目实际情况放贡献指南链接)
## 开源许可证
许可证说明,建议使用SPDX规范描述许可证。例如:
[项目名称] 在 [GPL-3.0-or-later]下发布。
为满足各开源许可证对提供许可证副本的要求,同时便于操作,需要将本项目源码里直接合并/在开源时直接展示和分发给下游的那些第三方组件开源许可证的全文副本以单独文件的形式放置在源代码中。
项目迭代中新引入开源组件时,如果新的组件引入了新的许可证,则需要及时更新提供LICENSE副本。
放置方式如下:
针对项目许可证,在根目录中创建LICENSE.txt文件,将本项目对外开源所使用的许可证的全文作为txt文件内容。
如果本项目使用多个许可证开源,则在根目录中创建多个txt文件,分别以LICENSE-SPDX名称为文件名(例如:LICENSE-Apache-2.0.txt),将许可证全文作为文件内容。
针对第三方项目许可证,在根目录下创建LICENSES文件夹,分别将本项目所使用的全部第三方项目的许可证全文作为txt文件内容,以其SPDX规范名称为文件名。相同的许可证只需要放置一份副本。
注:
1)除木兰系列许可证(木兰公共许可证1、2版,木兰宽松许可证1、2版)需复制中英双语文本外,其余许可证文本仅需要放置英文原文版本。
2)在考虑许可证兼容性问题时,如果实际分发该组件所使用的许可证并非其声明的许可证时,需注意,不要提供其声明的许可证的副本。
例如:项目在GPL-3.0下开源,并使用了一个GPL-2.0-later(或LGPL-2.1-only)的三方组件X。由于GPL-3.0与GPL-2.0(LGPL-2.1)不兼容,因此,项目实际上是使用了GPL-3.0分发了X组件。在这种情况下,无需提供GPL-2.0(LGPL-2.1)的许可证副本。
3)在组件涉及多重许可时,仅需提供本项目实际分发该组件所使用的的许可证的副本。
dep5文件的用途,是向用户提供的源码中所有文件的版权声明及许可证声明。为便于汇总查看与及时修改,参照debian社区的dep5标准,deepin社区要求将本项目源码中的所有文件(即在开源时直接展示和分发给下游的所有文件,例如git submodule 拉取的是一个独立的git仓库,虽然项目实际构建中是需要依赖这部分代码,但在本项目的分发中并没有实际分发这部分代码,因此无需包含。)的声明信息统一在该文件中体现。dep5文件放置在.reuse/目录下。
对于源码中的所有文件,包括配置文件、json文件、翻译文件,以及一些多媒体文件资料,都应当在dep5文件中明确其版权及许可信息。
以下模拟一个将以GPL-3.0-only开源的项目,项目中所有自研部分均使用GPL-3.0-only开源。包含的第三方开源组件有:
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Copyright:2022 UnionTech Software Technology Co., Ltd.
License:GPL-3.0-only
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Files: *
Copyright: 2022 UnionTech Software Technology Co., Ltd.
License: GPL-3.0-only
You should have received a copy of the GNU General Public License along with this program. If not, see<https://www.gnu.org/licenses/>.
Files: A1/*
Copyright: XXXXXX
License: GPL-3.0-only
Files: B1/*
Copyright: XXXXXXX
License: Apache-2.0
[NOTICE文件内容]
Files: dog.png
Copyright: XXXXXXXX
License: CC-BY-4.0
关于dep5格式更加详细的内容,可参见https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
1、如果项目需要使用Apache-2.0对外开源,则需要在根目录下创建NOTICE文件,将dep5文件的内容全部复制在NOTICE文件中。
2、对于使用Apache-2.0许可证的开源项目,需要注意在原项目的根目录中是否存在NOTICE文件。如果存在,则需要将NOTICE文件的全文复制在通知文件的相应条目下(见上述示例中Apache-2.0部分)。
特别注意:LGPL-3.0要求同时提供LGPL-3.0和GPL-3.0的许可证副本。
当使用到一些不常见的许可证时,需要注意许可证可能规定的特殊通知义务。在使用到一些不常见的许可证时,可在ISSUE或开发者邮件列表中另行讨论。