如何为我的项目找到适合的开源许可证?

15

我即将主持我的第一个开源项目。我将在CodePlex上托管它,我可以在以下许可证之间选择:

Apache许可证2.0、通用开发和分发许可证(CDDL)、Eclipse公共许可证(EPL)、GNU通用公共许可证(GPL)v2、GNU库通用公共许可证(LGPL)、Microsoft公共许可证(Ms-PL)、Microsoft互惠许可证(Ms-RL)、Mozilla公共许可证1.1(MPL)、新BSD许可证和MIT许可证。

现在我对所有这些许可证都是零了解。不仅我不知道应该选择哪个许可证,而且我也不知道应该授予和拒绝哪些权利。有关找到许可证的过程的任何帮助都会受到赞赏。需要考虑哪些事情?我应该问自己什么问题?

还有:当我将代码置于这些许可证之一下时,我是否会失去任何权利?我也需要遵守所选择的许可证吗?


这个问题似乎与许可证有关,因此不属于适当的主题。 - Bill the Lizard
3个回答

29

自由软件许可证主要分为三大类:宽松许可证、弱版权许可证和强版权许可证。

宽松许可证(你列举的MIT、BSD和Apache)允许在专有项目中使用你的代码,而无需分享他们修改后的代码或你的代码。

弱版权许可证(你列举的LGPL和MPL)允许在专有项目中使用你的代码,但如果他们修改了你的代码,则应该将修改后的代码以相同许可证分享回去。

强版权许可证(GPL)要求他们必须在相同许可证下发布其自己的代码(这里是GPL)。

我建议不要选择列表中的其他许可证,以避免许可证扩散。您可以在维基百科、FSFOSI上了解更多有关自由软件许可证的信息。


1
好的简明回答。您可能想更改“披露”一词,并添加所有这些许可证都坚持要求归属,因此如果您只想“获得信用”,则始终会获得。如果您不希望您的代码在封闭的专有项目中使用,请使用GPL,如果相反,您不想限制专有软件使用您的代码,请使用其中一个宽松(MIT / BSD / Apache)许可证。 - ShreevatsaR
当我将代码使用这些许可证之一发布时,我会失去任何权利吗?我需要遵守所选择的许可证吗? - bitbonk
我认为你所说的所有这些许可证都要求归属声明并不正确。据我所知,宽松许可证(至少列出的那些)只要你分发源代码,才需要归属声明,但是二进制文件并不需要。 - codeholic
2
@bitbonk 你不会失去任何权利,而是放弃它们;-) 你不需要遵守所选择的许可证,但你不能撤销已经按照其条款发布的软件版本的许可证。对我的英语表示抱歉 :-) 我表达清楚了吗? - codeholic
1
哇,这是我读过的关于这个话题最好的答案,而且这是12年前写的(那时候我还是个孩子)! - JΛYDΞV

2

1

你应该授予或拒绝哪些权利?

  • 你是否愿意让任何人使用你的程序?
  • 你是否愿意让任何人修改你的程序?
  • 你是否愿意让任何人销售你的程序?
  • 你是否愿意让任何人销售你的程序的修改版本?
  • 你是否愿意让某人将你的程序作为闭源软件进行销售?

这些都是你需要自己回答的问题。

顺便说一下,我认为 GPL v2 或更高版本是一个安全的默认选择。它被那些回答上面所有问题但最后一个问题的人所使用。


当我将代码放在这些许可证下时,我会失去任何权利吗?我也需要遵守所选择的许可证吗? - bitbonk
3
你是所有者。你可以在特定条件下向他人授权使用你的作品。 - Tadeusz A. Kadłubowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接