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