一、目的
公司在对内或对外发布的产品及服务中使用开源软件,需要遵守开源许可证的合规要求。为了帮助同学们识别合规义务,本文档列出了常用开源许可证、类型及基本合规要求。
二、适用
本文档适用于公司不拥有著作权的开源或第三方代码、二进制文件或数据(“代码”)等。
三、许可证合规基本要求
```
- 对外分发的软件中包含的开源软件应使用本部分2-4列出的许可证并履行合规义务。如果有问题,请联系opensource-legal@bytedance.com。 - 如使用本部分2-4节中未列明的许可证或者需要寻求许可证例外,参见第四部分《许可证合规评估流程》。
表1列明了公司对外发布的软件或服务中不允许使用的许可证类型。这些许可证主要存在以下问题:不允许商用、许可证的条款模糊、许可证规定了公司难以遵守的义务等。
表1:
| **简称(SPDX-Identifier )** | **全称或者子类别** | 内部使用 | 外部使用:提供服务 | 外部使用:提供软件 | 说明 |
| ------------------------ | -------------------------------------------- | ---- | --------- | --------- | -------------------------------------------------------------------- |
| AGPL-3.0 | GNU Affero General Public License v3.0 | √ | × | × | 1. AGPL属于强互惠型许可证。- 如果可以通过远程网络接口访问产品或服务,触发开源义务。
- 在分发软件时,触发开源义务。 |
| SSPL-1.0 | Server Side Public License, v 1 | √ | × | × | 1. 原因同AGPL。 |
| CPAL-1.0 | Common Public Attribution License 1.0 | √ | × | × | 1. 原因同AGPL。 |
| EUPL-1.1 | European Union Public License 1.1 | √ | × | × | 1. 原因同AGPL。 |
| Commons Clause | Commons Clause | × | × | × | 1. 本许可证不允许商用。
1. 很难争辩公司使用开源软件的行为不属商用。 |
| Non-Commercial | 具体包括:CC BY-NC, CC BY-NC-SA, CC BY-NC-ND | × | × | × | 1. 此类许可证均不允许商用,
1. 很难争辩公司的任何行为不是出于商业目的。 |
| SISSL | Sun Industry Standards Source License v1.1 | × | × | × | 1. 本许可证合规要求过于严格,很难满足。
1. Sun也已经停止使用该许可证。 |
| Watcom-1.0 | Sybase Open Watcom Public License 1.0 | × | × | × | 1. 专利限制太强:对Sybase或贡献者提起专利诉讼均会导致许可终止。 |
| WTFPL | Do What The F*ck You Want To Public License | × | × | × | 1. 本许可证没有不担保条款。
1. 授权不清晰。 |
## 2. 限制型许可证,也称互惠型许可证
表2列明了在对外分发的客户端及嵌入式软件中不允许使用的许可证。如果独立程序中包含采用此类许可证的代码,依据许可证的要求,公司可能需要提供整个程序的源代码。
表2:
| **简称** | **全称或者子类别** | 内部使用 | 外部使用仅提供服务 | 外部使用客户端 | 外部使用私有部署 | 关于○的说明 |
| -------------------------------- | ----------------------------------------------------- | ---- | --------- | ------- | -------- | ---------------------------------------------------------------------------------------------- |
| CC-BY-SA | Creative Commons Attribution ShareAlike | √ | √ | × | ○ | 采用此类许可证的组件如用于私有部署,需要经过批准:1. 该组件是否可以按照许可证的规定披露相关源代码给用户
1. 部署方式是否会导致其他组件承担开源义务。其他外部使用方式需要另行确认。 |
| CC-BY-ND | Creative Commons Attribution No Derivatives | √ | √ | × | ○ | |
| GPL | GNU General Public LicenseGPL-1.0,GPL-2.0,GPL-3.0 | √ | √ | × | ○ | |
| GPL-2.0-with-classpath-exception | GNU General Public License v2.0 w/Classpath exception | √ | √ | × | ○ | |
| LGPL(静态链接) | GNU Lesser General Public LicenseLGPL-2.1,LGPL-3.0 | √ | √ | × | ○ | |
| NPL | Netscape Public LicenseNPL-1.0, NPL-1.1 | √ | √ | × | ○ | |
| OSL | Open Software License | √ | √ | × | ○ | |
| QPL-1.0 | Q Public License 1.0 | √ | √ | × | ○ | |
| Sleepycat | Sleepycat License | √ | √ | × | ○ | |
## 3. 弱限制型许可证,也称弱互惠型许可证
表3列明了一些弱限制性的许可证。如果公司交付的软件中包含适用此类许可证的源代码,可能需要向软件接受方提供该源代码、相应的修改及添加。
表3:
| **简称** | **全称或者子类别** | 内部使用 | 外部使用 | 说明 |
| ---------- | -------------------------------------------------------- | ---- | ---- | ------------------------------------------------------------- |
| CDDL-1.0 | Common Development and Distribution License 1.0 | √ | √ | 可能需要承担开源义务:一般而言,是库本身的内容,以及对该库的任何添加或修改。需要确认开源义务是否可以满足,再决定是否使用。 |
| CeCILL-2.0 | CeCILL Free Software License Agreement v2.0 | √ | √ | |
| CPL-1.0 | Common Public License 1.0 | √ | √ | |
| EPL | Eclipse Public LicenseEPL-1.0 and EPL-2.0 | √ | √ | |
| IPL-1.0 | IBM Public License v1.0 | √ | √ | |
| MPL | Mozilla Public LicenseMPL-1.0, MPL-1.1, and MPL-2.0 | √ | √ | |
| APSL-2.0 | Apple Public Source License 2.0 | √ | √ | |
| LGPL | GNU Lesser General Public LicenseLGPL 2.1, LGPL-3 (动态链接) | √ | √ | |
| Ruby | Ruby License | √ | √ | |
## 4. 声明型许可证
表4中的许可证对公司分发的软件中的源代码没有限制,但是需要包含许可证中列明的“原始版权声明”或“广告条款”。
表4
| **简称** | **全称或者子类别** | 内部使用 | 外部使用 |
| ------------------- | ------------------------------------------------------------------------------------- | ---- | ---- |
| AFL | Academic Free LicenseAFL 2.1, AFL 3.0 | √ | √ |
| Apache | Apache LicenseApache-1.1 and Apache-2.0 | √ | √ |
| Artistic | Artistic LicenseArtistic-1.0 and Artistic-2.0 | √ | √ |
| BSL-1.0 | Boost Software License 1.0 | √ | √ |
| BSD-2-Clause | BSD 2-Clause "Simplified" License | √ | √ |
| BSD-3-clause | BSD 3-Clause "New" or "Revised" License | √ | √ |
| BSD-2-Clause-Patent | BSD-2-Clause Plus Patent License | √ | √ |
| CC BY | Creative Commons Attribution GenericCC-BY-1.0,CC-BY-2.0,CC-BY-2.5,CC-BY-3.0,CC-BY-4.0 | √ | √ |
| JSON | JSON License | √ | √ |
| EDL-1.0 | Eclipse Distribution License - v 1.0 | √ | √ |
| FTL | Freetype Project License | √ | √ |
| ICU | ICU License | √ | √ |
| ISC License | ISC | √ | √ |
| LibTIFF | libtiff License | √ | √ |
| LPL 1.02 | Lucent Public License v1.02 | √ | √ |
| MS-PL | Microsoft Public License | √ | √ |
| Mulan PSL 2.0 | Mulan Permissive Software License, Version 2 | √ | √ |
| MIT/X11/Expat | MIT License | √ | √ |
| NCSA | University of Illinois/NCSA Open Source License | √ | √ |
| OpenSSL | OpenSSL License | √ | √ |
| PHP-3.0 | PHP License v3.0 | √ | √ |
| PIL | Python Imaging Library License | √ | √ |
| PostgreSQL | PostgreSQL License | √ | √ |
| PSF-2.0 | Python Software Foundation License 2.0 | √ | √ |
| TCP Wrappers | TCP Wrappers License | √ | √ |
| Unicode-DFS | Unicode License Agreement - Data Files and Software | √ | √ |
| UPL-1.0 | Universal Permissive License v1.0 | √ | √ |
| W3C | W3C® SOFTWARE NOTICE AND LICENSE | √ | √ |
| XNet | X.Net License | √ | √ |
| zlib/libpng | zlib License | √ | √ |
| ZPL-2.0 | Zope Public License 2.0 | √ | √ |
# 四、许可证合规评估流程
如果需要评估第三部分未列出的许可证,请联系opensource-legal@bytedance.com。POC@孙振华 会建立Lark群进行进一步讨论。邮件模板见下:
邮件标题为: [Confidential & Privileged]开源评估:关于[填入需要评估的软件]的评估
邮件正文需要列明:
-
产品/项目及介绍文档:
-
评估需求:
-
开源软件使用场景:客户端/服务端/前端/算法模型/私有部署
-
开源软件的信息:
-
名称:
-
版本号:
-
发布日期:
-
开源协议名称及版本:
-
官方地址:
-
Github地址:
-
如该组件有依赖需要一并列出所有依赖的上述信息: