我对各个OSS许可证有相当好的理解,但是当我想在不同的许可证下使用代码时,我总是遇到麻烦。 BSD与Ms-PL,Apache 2与GPLv3等等。
是否有某种“交配图表”列出哪些许可证与哪些许可证兼容?
答案 0 :(得分:47)
自由软件基金会维护list of licenses,分类为GPL兼容,GPL不兼容且非免费。这有助于回答最常见的问题,即许可证是否与GPL兼容。由于没有很多其他免费软件许可证要求整个衍生作品在GPL所使用的同一许可证下分发,因此只要代码保留在不同的库或源文件中,其他许可证之间的兼容性问题通常就会降低。 / p>
就Ms-PL而言,你可以使用FSF列表来确定它的兼容性。 Ms-PL是(非常)弱Copyleft许可证(Ms-RL略强,但仍被归类为弱Copyleft)。这意味着在其下分发的代码必须保留在其下,从而使GPL不兼容,但是您通常可以将其链接到许可或其他弱Copyleft许可下的代码,只要您遵循每个许可的条款和单独许可的代码驻留在不同的库中。唯一可能与之不兼容的许可证是强大的Copyleft许可证,如GPL和AGPL。 (标准免责声明:我不是律师,这不是法律建议。如果您需要法律建议,您应该咨询合格的律师。)
对于更有限的许可证集,您可以查看David Wheeler的这个Free-Libre / Open Source Software (FLOSS) License Slide(转载如下)。箭头表示可以组合两个许可证,并且组合的工作可以有效地被视为在箭头末端具有许可证,可能在箭头开始时从许可证中获得一些额外的限制。
以下段落是关于此主题的一般性咆哮,与您的问题相关但不直接相关
确定许可证兼容性的难度,以及仅仅了解各种许可条款的后果,是许可证扩散是如此糟糕的原因。如果可能的话,请尝试使用一个通用的,易于理解的许可证,例如GPL,LGPL,BSD 2条款或3条款,MIT / X联盟许可证或公共域名奉献。无论你做什么,都不要发明自己的许可证。如果必须,请使用您正在参与的项目通用的许可证,以保持与该项目中其余代码的兼容性。如果您遵循这些规则,您将有助于减少混淆,并提高许可证兼容性。
答案 1 :(得分:2)
回答您关于对与Ms-PL兼容的许可证感兴趣的评论:
大多数许可证都与之兼容。您最好的选择是去维基百科并输入许可证名称。如果它被列为没有copyleft, 与Ms-PL兼容,因为Ms-PL要求所有已发布的源代码派生词都在Ms-PL下。
这就是我研究的方式。 ;)