首先,我们需要问问自己,为什么要费心选择许可证?
您是否
- 向公众展示您的软件?
- 以某种方式展示您的软件,让其他人相信他们可以复制它或在其基础上构建?
那么,是的,您应该选择一个许可证。对您的访问者公平,并通过明确授予许可来支持许可的外观。
版权法默认作者控制复制、修改和分发,因此其他人需要作者的许可才能复制、修改或分发。如果您希望其他人可以自由复制您的软件并可能在其基础上构建,那么您应该选择一个许可证。开源许可证提供了消除默认版权障碍所需的许可。
多种许可证可供选择
好的。假设您确实想为您的软件发布许可证。请不要编写自己的许可证。有很多许可证可供选择。事实上,许可证太多了,您可能会感到不知所措,不知道该选择哪一个,但永远不要害怕。将一个许可证与下一个许可证进行比较,细节可能很容易让人望而生畏,但这些许可证比它们看起来更相似。所有开源许可证都提供复制和修改的许可,并且它们都提供将这些权利传递给他人的许可。它们都为软件接收者提供了在其基础上构建和协作开发所需的许可。
选择最适合您软件的许可证有一个主要维度:著作权保护,或非著作权保护。
我的荒岛清单
如果我身处 荒岛,我可能不需要许可证,但假设我需要。我会把 MIT 许可证塞进口袋,把 GPLv3 许可证放进背包,并找个地方塞进 Apache 许可证。
在一个可能是巨大的多维空间中,有一个维度是我的起点:著作权保护 ↔ 非著作权保护。所有自由软件和开源许可证都提供复制和修改的许可,并且它们都提供将这些权利传递给他人的许可。但是,最后一部分有两种重要的不同变体:非著作权保护许可证允许接收者传递他们收到的权利(通常称为“宽松”许可证);著作权保护许可证要求传递某些权限。
GPLv3+ 指的是当前版本的使用最广泛的著作权保护许可证(要求将权限传递给他人)。(“+”指的是标准 GPL 许可证声明中的以下短语:“许可证的第 3 版,或(由您选择)任何更高版本”。)
MIT 许可证是一个简单的许可证(少于 200 个单词),代表该维度的非著作权保护端(允许将权限传递给他人)。
您的许可证和专利
多年来,专利越来越受到关注。因此,GPLv3 比 GPLv2 更有力地解决了专利问题。虽然 Apache 许可证的 1.0 和 1.1 版本是 BSD 许可证的变体,BSD 许可证没有明确提及专利,但 Apache 2.0 将权利授予分为单独的版权和专利部分,其中专利部分包括防御性终止功能。
Apache 许可证中的专利语言使其享有作为专利保护许可证的声誉。但是,GPLv3 具有更强大的专利语言。而且,虽然我们尚未看到这种情况在法庭上上演,但我认为 MIT 许可证中的权利授予包括可能类似于 Apache 中的专利权(尽管没有防御性终止功能)。Apache 不错;但是,它的声誉可能有点被夸大了。我包含它是因为其他人可能认为简单性不如我重要。
超越荒岛
我的荒岛清单侧重于为不受相关软件许可证约束的新项目选择许可证。但是,可能存在许可证选择因素,这些因素源于您的软件与其他软件的关系。
- 在许多情况下,选择与相关生态系统中其他软件已经应用的许可证相同的许可证是有意义的,而不是使用不同的许可证来增加许可的复杂性。
- 有时,应考虑与其他许可证下的软件的预期关系(例如,计划允许直接合并到专有或著作权保护许可证下的软件中)。这可能会偏向 MIT 或建议使用范围比 GPL 更窄的著作权保护许可证(LGPLv2.1、LGPLv3、MPL、EPL)。
其他人对选择许可证的看法
其他人分享了他们的想法和观点,这些想法和观点反过来可能会帮助您做出选择。
- 我应该使用哪个开源软件许可证?,Stephen R. Walli 的一篇文章
- GitHub 赞助的 choosealicense.com 项目表明,即使使用简化的特征,比较表 看起来也可能让人不知所措。该项目建议您首先考虑三个许可证:那是我的清单!不,那是他们的清单。有趣的选择。
- 在 choosealicense.com 和 GitHub 的许可证选择器 中,Richard Fontana 讨论了该项目的原始版本。
- 十年前,Jeff Atwood 写道选择一个许可证,任何许可证。他最后说,“这是一个雷区,各位。我只是想说:下次您将代码发布到野外时,请帮您的同行开发者一个忙,选择一个许可证——任何许可证。”
- 自由软件基金会拥有大量关于许可证的信息,包括 如何为自己的作品选择许可证。
- 最后,开源促进会 关于许可证的信息 包括方便地访问其批准为符合其 开源定义 的许可证文本,以及“常用许可证”的简短列表。
您在选择许可证时遇到哪些困难?如果您身处荒岛,您会带上哪些许可证?
6 条评论