字节跳动在日常开发、测试和部署软件时,广泛依赖第三方软件,其中大部分是开源软件。我们也会使用一些第三方专有软件,有些需要付费,有些则根据免费许可协议使用。
所有软件都受到知识产权法律保护,因此使用任何第三方软件前,都必须确认我们获得了相应的使用许可。无论是开源软件还是专有软件,其附带的许可协议都明确规定了我们被允许如何使用以及存在哪些限制。确保遵守这些许可条款,是研发团队的重要职责。
这份基础指南旨在解释软件的知识产权保护,概述开源软件与开源许可协议,并阐明研发团队在遵守这些协议方面的关键作用。如果您对这类合规话题感兴趣,欢迎到云栈社区的讨论区交流更多实践经验。
目标
阅读本指南后,你将能够了解:
- 软件知识产权保护的基础知识;
- 什么是开源软件;
- 开源许可协议的常见条款;
- 字节跳动研发使用的其他类型的第三方软件;
- 字节跳动遵守开源及其他第三方软件许可协议的政策和流程。
01 适用于软件保护的几种知识产权
有几种不同类型的知识产权保护可以适用于软件,包括版权、专利、商业秘密保护和商标权。本指南主要侧重于与我们使用第三方软件最相关的版权和专利权。
版权
版权,也称著作权。版权法保护“原创作品”,包括书籍、照片、音乐、电影以及软件等。它保护的是作者的“表达”,而非背后的“思想”。例如,你编写了一个电子表格程序,版权法阻止他人直接复制你的代码,但不阻止他人独立编写功能相似的软件。
软件一经创作完成,通常自动享有版权保护,无需登记。但版权登记可以为作者提供更强的法律保护。
版权人享有的专有权
根据版权法,软件版权人通常拥有以下专有权:
- 复制软件的权利;
- 创建“衍生作品”(即基于原软件创作新作品)的权利;
- 向他人分发作品的权利。
根据不同国家或地区的法律,版权保护期通常持续50年或70年以上。
专利
专利法保护新颖、有用且非显而易见的“发明”。与版权保护特定代码表达不同,专利权保护的是实现软件功能的“技术方案”。
专利权并非自动获得,创作者需向特定国家或地区提出申请。一旦获得专利,权利人可以阻止他人实施该专利所描述的技术方案。值得注意的是,开发者可能在不知情的情况下侵犯他人专利权。
专利权的保护范围比版权更广,但保护期也更短,大多数国家不超过20年。
其他类型的知识产权
- 商业秘密保护:保护具有商业价值且处于保密状态的信息,包括未公开的源代码。
- 商标权:保护用于识别商品或服务来源的标志(如名称、Logo、标语)。其主要目的是防止消费者混淆,而非直接保护生产者。
了解这些基础对于后续理解开源软件的许可规则至关重要。
02 软件许可基础
由于软件自动受版权保护,我们必须获得版权人的许可才能使用他人创作的软件。这种许可通常体现为一份“许可协议”,规定了被允许的使用方式和限制。根据协议使用软件的人称为“被许可人”。
字节跳动使用的第三方软件主要分为两类:开源软件和专有软件。
开源软件许可协议
“开源软件”是指在符合“开源定义”的许可条款下,以源代码形式提供的软件。这些条款包含在开源许可协议中,并至少允许任何拥有软件副本的人:
- 出于任何目的运行软件;
- 修改软件;
- 复制软件;
- 分发软件及其修改版本。
当然,开源许可协议也可能包含一些限制或义务。但根据开源定义,它永远不会要求支付许可费,也不能限制谁可以使用软件、软件用于什么目的、或与何种技术一起使用。
专有软件许可协议
“专有软件”是指任何未采用开源许可协议的第三方软件。
专有软件许可协议形式多样。有的要求支付许可费;有的(如“免费软件”或“共享软件”许可)允许免费使用,但可能限制用途或时间。专有软件可能仅提供可执行文件,也可能附带受限使用的源代码。
一些专有许可协议条款与开源协议相似,甚至允许修改和分发。但只要其条款不符合开源定义(例如限制用途),它就不是开源许可协议。
03 开源许可协议的常见许可条款
开源许可协议有上百种,虽然内容各异,但其中的义务大致可归类为:
- 免责与不保证条款:声明代码作者对使用软件可能造成的损害不承担法律责任。使用者可能需要在自己的软件中包含这些条款。
- 声明要求:要求在任何副本或衍生作品中,必须包含关于许可协议、版权及修改的书面声明。
- Copyleft 要求:要求衍生作品必须基于相同的开源许可协议进行许可,并且在分发时必须提供源代码。并非所有协议都有此要求,但像 GPL 这样的 Copyleft 协议非常流行。
除了上述常见条款,开源许可协议还可能包含其他限制,例如禁止使用作者姓名进行推广,或要求为锁定设备中的软件提供安装密钥。
04 开源许可协议的类型
开源许可协议通常根据其义务的严格程度进行分类。
宽松许可协议
“宽松”许可协议限制最少,且不包含 Copyleft 要求。基于此类协议的作品,其衍生作品可以用其他许可协议(包括专有协议)进行分发。
最流行的 MIT 许可协议就是典型代表,它允许无限制地修改和再分发,唯一要求是保留原许可声明和版权信息。其他宽松协议可能还有额外限制,如禁止使用作者商标推广修改版。
常见的宽松许可协议包括:MIT、BSD、Apache。也有像 Unlicense 这样几乎没有任何限制的极端宽松协议。
Copyleft 许可协议
“Copyleft”或“互惠”许可协议包含两个核心要求:
- 衍生作品必须基于同一开源许可协议进行许可;
- 分发软件或其衍生作品时,必须向接收者提供相应的源代码。
这里的“衍生作品”范围很广,修改代码、将代码并入其他产品、甚至通过链接方式结合使用,都可能构成衍生作品。
常见的强 Copyleft 许可协议包括:GNU General Public License 、Affero GPL 等。
Weak Copyleft 许可协议
Weak Copyleft 许可协议与强 Copyleft 类似,但其互惠性要求通常只适用于对原始软件源代码的直接修改。
这类协议常见于软件库。当基于此类协议的库作为另一个程序的一部分被分发时,分发者必须向接收者提供该库的源代码(含修改)。
常见 Weak Copyleft 许可协议包括:GNU Lesser General Public License(LGPL)、Mozilla Public License(MPL)和 Eclipse Public License(EPL)等。
05 使用第三方软件时,需要遵守开源和第三方许可条款
字节跳动制定了关于在产品中使用开源和第三方专有软件的政策,旨在确保:
- 遵守所有许可协议要求,避免知识产权侵权诉讼和维护社区声誉;
- 及时发现并修补所使用的开源软件中的安全漏洞;
- 避免在产品中使用与业务需求不兼容的许可协议下的软件。例如,除非我们愿意将自身软件开源,否则不能分发与强 Copyleft 开源软件结合的软件。
我们的政策明确了哪些开源许可协议可用于不同类型的产品,以及在哪些场景下需要获得法务批准。例如,可用于 SaaS 产品的协议可能不适用于分发给客户的硬件产品。
活动推荐
在10月21日举办的字节跳动开源 OpenDay 上,开源法务孙振华将在上午主论坛进行主题分享——《开源的法律是为了开源》。
议题简介
开源的法律机制是为了开源的发展,具体而言:
- 从条款角度看,开源许可的定义是社区长期形成的共识,其意义在于促进协作。
- 从专利角度看,开源社区形成了全球最大的专利联盟之一,以抵御像 Linux/K8S 等基础软件面临的专利风险。
- 从历史角度看,GPL 许可的创新互惠性保障了 Linux 内核在闭源时代的成长;Apache-2.0 许可证对下游用户在版权和专利上的全面授权,则助力了云原生基石 K8S 的迅速普及。
- 从未来角度看,什么是大模型的开源,是否会有新的许可协议涌现,是值得探讨的问题。
关注开源法律合规的同学欢迎报名活动现场交流。
