艾体宝干货|主流开源许可证解析
什么是开源许可证?
开源许可证是软件作者与其用户之间的一份法律协议。它定义了该软件如何被使用、修改和再分发。正是这份许可证,将普通软件转变为开源软件,授予开发者在他人工作成果之上进行构建的权利——前提是他们必须遵守特定的条件。
开源许可证在社区驱动和商业软件开发中都扮演着至关重要的角色。它们规定了公司如何将开源组件集成到专有产品中,而不会面临法律或合规性风险。
如今,市面上有超过200 种开源许可证,但在实践中,大多数开源项目仅采用少数几种流行的许可证。接下来,我们将深入剖析这些许可证的区别,以及它们对您的代码库意味着什么。
软件许可证的类型:Copyleft 与宽松型
开源许可证通常分为两大类:
Copyleft 许可证
Copyleft(著佐权) 许可证要求,任何基于原始开源代码构建的衍生作品都必须保持开源。如果您使用或修改了遵循此类许可证的代码并分发您的软件,您就必须以相同的条款提供您的源代码。
例如,GNU 通用公共许可证 (GPL)严格执行这一规则,确保开源代码及其所有衍生作品保持开放。
然而,Copyleft 许可证的强度各不相同:
- 强 Copyleft(例如 GPL):任何组合或衍生作品都必须保持开源。
- 弱 Copyleft(例如 LGPL, EPL):仅要求被修改过的文件保持开源,而您应用程序的其余部分可以使用其他许可证。
宽松型许可证
宽松型 (Permissive)许可证则灵活得多。它们允许您使用、修改和再分发开源代码——甚至在专有软件中使用——而没有义务将您自己的代码开源。
MIT 许可证、BSD 许可证和 Apache 许可证是最流行的例子。它们的设计旨在易于采用、法律风险最小化并具备商业兼容性。
开源许可证比较:主要差异
下方图示比较了常见的开源许可证在自由度、互惠性和限制性方面的差异。
(图片内容:主流开源许可证解析 - 开源许可证类型图示)
主流开源许可证解析
不存在所谓“最佳”的开源许可证——只有最适合您项目目标和合规需求的许可证。开源促进会 (OSI)目前批准了约 80 种许可证,但只有少数几种在现代软件开发中占据主导地位。
以下是您将会遇到的主要许可证的解析:
GNU 通用公共许可证 (GPL)
GPL是使用最广泛的强 Copyleft许可证。它由理查德·斯托曼创建,确保了使用 GPL 组件的软件也必须在 GPL 许可下发布。
这种要求甚至延伸到链接的库——这意味着您通常不能将 GPL 代码与其他限制性许可证下的代码混合使用。然而,这里有一个关键的细微差别:Copyleft 义务仅在分发时触发。
这就是为什么SaaS 提供商可以使用 GPL 软件而无需公开其源代码——这个漏洞由Affero GPL (AGPL)解决,AGPL 将通过网络提供访问视为一种分发形式。
其较弱的变体包括:
- 次通用公共许可证 (LGPL):允许与专有代码链接。
- 带类路径例外的 GPL (GPL with Classpath Exception):明确了在不强制执行 Copyleft 的情况下使用未修改库的规则。
Apache 许可证 (2.0 版)
Apache 许可证是最宽松的开源许可证之一。它允许修改、再分发甚至商业用途,前提是您:
- 包含许可证的副本和署名信息;
- 注明所做的任何修改;
- 避免暗示获得了 Apache 软件基金会的认可。
Apache 2.0 的突出之处在于它包含了明确的专利授权,同等地保护了开发者和用户。这种在开放性与法律清晰度之间的平衡,使其成为企业用途的首选。
微软公共许可证 (Ms-PL)
Ms-PL是微软发布的一个简单、宽松的许可证。它允许自由使用、修改和分发,但有几点注意事项:
- 您不能使用贡献者的姓名、徽标或商标。
- 该软件不提供任何保证。
- 如果以源代码形式分发,则必须继续遵循 Ms-PL 许可证。
伯克利软件分发 (BSD) 许可证
BSD 家族包含几个宽松的变体:
- 四句版 BSD:要求在广告中进行署名(如今已很少见)。
- 三句版 BSD:移除了广告条款。
- 两句版 BSD (FreeBSD):同时移除了广告和非背书条款。
BSD 许可证极为精简且对商业非常友好,允许几乎无限制的重用。
通用开发与分发许可证 (CDDL)
CDDL由太阳微系统公司(Sun Microsystems)创建,是一种模仿 MPL 的弱 Copyleft许可证。它要求包含 CDDL 许可代码的源代码文件必须保持开源,但同一项目中的其他文件可以采用不同的许可证。
您必须:
- 保留版权和署名声明;
- 将自己标识为修改者;
- 在所有再分发版本中包含该许可证。
这种结构在不强迫项目完全开放的前提下,促进了协作式重用。
Eclipse 公共许可证 (EPL)
EPL是另一种按文件生效的弱 Copyleft 许可证。
如果您修改了 EPL 代码并进行分发,那么被修改的文件必须继续遵循 EPL 许可。然而,只要您的专有代码保持独立,就可以保持闭源。
其 2.0 版本明确了这种按文件生效的规则,并增加了明确的专利授权。EPL 在企业软件生态系统(如 Eclipse IDE)中非常流行。
MIT 许可证
MIT 许可证是现存最流行、最宽松的许可证之一。它给予了几乎完全的自由:
- 自由地使用、修改和分发;
- 在副本或重要部分中包含许可证文本;
- 作者不提供任何保证或承担任何责任。
MIT 许可证全文不足 200 个单词,简洁、法律上无懈可击,非常适合与专有软件集成。它占据了全球开源许可证使用量的近三分之一。
要么了解您的开源许可证,要么就准备对簿公堂
几乎所有现代应用程序都依赖于开源组件。忽视许可证合规性不仅有风险,而且是鲁莽的。错误的许可证选择(或错误的使用方式)可能使您的组织面临法律、财务和声誉上的损害。
这就是为什么开源许可证管理工具至关重要。它们能够:
- 识别并跟踪您代码库中的许可证;
- 确保所有依赖项的合规性;
- 降低您组织的法律风险;
- 在您的软件供应链中增强信任与安全。
