在过去的几个月中我一直工作在我的小论坛项目上,我很乐意使用我遇到过一些代码段。
他们通常是张贴到博客解释如何格式化一个URL或诸如此类的东西,但我不能合法使用其中任何一个。
根据“伯尔尼公约”,每bit文本或您创建的代码会自动获得版权。
你不需要为它标注©或签署日期,没有人未经您同意使用它们。
我曾经写过不同的作者,不同发行版的介绍,但是一个共同的话题是人们不知道他们应该适用哪种许可证。
当然,我不是专家,但我想把不同的许可证放在一起来快速地比较,及所带来的影响。我已经包含了链接,你们可以自己点击查看。请在它应用到你的项目之前,先了解这些许可证。我只是一个系统管理员,而不是一个法律顾问。
需要注意的一点是,如果你写的代码,在某种的许可证下发行的话,它从来不限制你的进一步的行为。
你被欢迎在GPL下发布你的代码,保持你的所有更新是闭源的和付费的,你无须在任何许可证下发布你的更新的代码。
只要你是写完所有代码的人,在所有开源协议下发行他们,你只要解释其他人可以对你的代码做哪些事。
例如,很长一段时间,Mozilla在MPL,GPL和LGPL协议下发布火狐的源代码,让人们去针对代码库选择哪种开源协议。
Oracle在GPL下发布MySQL,但是也会在某些条款下卖给你一个商业版本。
由于项目中所有的代码,都是你的,所以你可以想做你想干的任何事。
唯一注意的事实当代码开源以后,其他人会想帮助你写代码。你应该确保他们分配给你的版权(可以让你做你想做的,事,就像都是你写的一样)。
不同的许可证下有不同的一些元素。
署名--不同的许可证在不同的方式上认识了作者。一些人要求你采取信用,一些人要求在关于部分添加一行,一些人想在使用他们的代码时候放置他们的广告。
一些许可包括一项条款,清楚地表明,在使用自己的代码时,你不应该使用原公司名称。这被称为一个“反代言”条款。
Copyleft--许可证有时候被称作病毒式许可证。如果你在你的代码了用了使用copyleft协议的代码的话,然后你的整个程序必须在一个兼容的协议下发布。
他们的目标是阻止公司拿你的代码,构建你的代码,然后保留为自己保留所有的对代码的改变。
如果他们使用你的代码,他们必须发布他们改变过的代码。
*一个“强”的copyleft协议表明只有在同样许可证的程序才能使用这些代码。
*一个“弱”的copyleft协议表明对于特定的代码的所有改变必须发布,但是其他软件可以把这些代码作为一个库来构建,这些软件可以改变成为另一个协议。
专利保护--传统的,软件许可证,抱括开源软件许可证并不需要处理专利。这导致了某一家公司可能会释放他们作为开源的软件,但多年后解释说,他们有一个在基本思想上专利的困惑。即使在版权法律下你被允许使用他们的软件,但是他们仍然可以根据专利法来限制你。某些许可证,包括专利许可在内的一些许可协议,可以避免出现这种情况。
web应用--我们已经看到另一个转变是公司从分发软件到在他们自己的网站上运行托管版本。一些copyleft软件许可要求web应用释放这些代码,如果你确实分发了这个软件给其他人,那么其他人仅仅可以应用。
宽容--有时候人们会谈论一个许可证有多么宽松。一个许可证越宽容,你就越可以不用考虑许可证的作用去处理软件。
有从非常宽松的许可证,比如MIT/X,到非常严格的许可证比如EULA(有商业软件包)。
一件很重要的事情是OSS许可证在分发上几乎是非常普遍的许可证,而不是在使用上。
而不像EULA,为了使用它你不得不同意它的许可证。
如果你分发它,或者直接(GPL/LGPL/等等)或者作为一个webapp来暴露,那么这些许可证就生效了。
许可证 | 是否署名 | 反批注 | Copyleft | webapp的应用 | 专利保护 | 备注 |
Gnu GPL 2 | 包含在源代码中 | 没有 | 强 | 否 | 间接 | OSS的祖先。GPL2 涵盖了linux内核。被广泛地认为是copyleft的祖先。 |
Gnu GPL 3 | 包含在源代码中 | 在每个工程中有多种选择 | 强 | 否 | D直接 | 2007年,FSF更新了GPL版本号到第三版。增加了明确的专利保护,和阻止“tivoization”的规定。 |
AGPL1 | 包含在源代码中 | 没有 | 强 | 是 | 间接 | AGPL1是GPLv2的修改版本,表明了网站是用来运行webapp,需要分发这些改变,就好像他们已经分发过了。 |
AGPL3 | 包含在源代码中 | 在每个工程中有多种选择 | 强 | 是 | 直接 | AGPL1是GPLv2的修改版本,表明了网站是用来运行webapp,需要分发这些改变,就好像他们已经分发过了。 |
LGPL2 | 包含在源代码中 | 没有 | 弱 | 否 | 间接 | LGPL2是GPLv2设计在库,或者其他小的代码块。这就需要任何改变组件能够贡献回来,但是软件使用这个库的话并不需要开源。 |
LGPL3 | 包含在源代码中 | 在每个工程中有多种选择 | 弱 | 否 | 直接 | LGPL2是GPLv2设计在库,或者其他小的代码块。这就需要任何改变组件能够贡献回来,但是软件使用这个库的话并不需要开源。 |
MIT/Expat License | 包含在源代码中 | 没有 | 否 | 否 | 没有 | MIT许可证(或者外籍许可证)是一个普遍的和直截了当宽容的许可证。 |
MIT/X11 License | 包含在源代码中 | 反批注 | 否 | 否 | 没有 | MIT许可证的变种,抱括一个条文用来阻止人们说他们自己是最初写这些代码的。 |
2-Clause BSD | 包含在源代码中 | 否 | 没有 | 否 | 没有 | 是一个宽容的类似于MIT/Expat协议。有一些困惑,当人们提到“The BSD 许可证”,因为存在了三个BSD版本。因为这个原因,人们总是引用BSD的条款数字,或者使用更加直接的。 |
3-Clause BSD | 包含在源代码中 | 反批注 | 否 | 否 | 没有 | 是一个宽容的类似于1MIT/X许可证的。它在2-clause BSD增加了反批注的条款。就像MIT/X对于MIT/EXpat一样。 |
4-Clause BSD | 包含在源代码中 | 反批注 | 否 | 否 | 没有 | (或者原始的BSD许可证)是一个BSD变种,在3-clause BSD上增加了一个条款。任何时候,有一个广告软件,其中包括根据本许可证的任何代码,原代码需要被提及。大多数人都最好完全避免这种许可证。 |
Apache License 1.0 | 包含在源代码中 | 禁止使用Apache的名称 | 否 | 否 | 没有 | 是一个标准的宽容的许可证,含有广告条款。 |
Apache License 2 | 包含在源代码中 | 商标保护 | 否 | 否 | 直接 | 是一个标准的宽容的许可证,含有明确的专利授权。。 |
MPL2 | 包含在源代码中 | 商标保护 | 弱 | 否 | 直接 | 当Mozilla最初发布他们的代码,他们创造了“友善的商业执照。最近,他们已经修订成能明确兼容GPL的家庭。 |
CDDL | 包含在源代码中 | 商标保护 | 弱 | 否 | 直接 | 被sun修改的,基于MPL1.1,努力澄清的语言,在某些方式上是不兼容的。 |
什么乱七八糟的!
更有”趣“的是把他们结合起来了。
一些许可证是可以互相兼容,有些则没有。
还有一些是兼容的,但只有当你站在你的头上,用拉丁语高唱。
我在下面的组合中加入了自己的个人理解。通常,咨询律师,看我是否有遗漏的地方。
我写了这个表格,假设我已经有了代码A,然后我是否允许导入代码B呢?
当前代码 新代码: | GPLv2 | GPLv3 | AGPLv1 | AGPLv3 | LGPLv2 | LGPLv3 | MIT/Expat | MIT/X11 | 2-Clause BSD | 3-Clause BSD | 4-Clause BSD | Apache | MPL2 | CDDL |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GPLv2 | Yes | [1] | [1] | [1] | Result is GPLv2 | [1] | Result is GPLv2 | Result is GPLv2 | Result is GPLv2 | Result is GPLv2 | No | No | [2] | No |
GPLv3 | [1] | Yes | [1] | Yes | [1] | Result is GPLv3 | Result is GPLv3 | Result is GPLv3 | Result is GPLv3 | Result is GPLv3 | No | Result is GPLv3 | [2] | No |
AGPLv1 | [1] | [1] | Yes | [1] | Result is AGPLv1 | [1] | Result is AGPLv1 | Result is AGPLv1 | Result is AGPLv1 | Result is AGPLv1 | No | No | No | No |
AGPLv3 | [1] | Yes, result is AGPLv3 | [1] | Yes | [1] | Result is AGPLv3 | Result is AGPLv3 | Result is AGPLv3 | Result is AGPLv3 | Result is AGPLv3 | No | Result is AGPLv3 | [2] | No |
LGPLv2 | Yes, result is GPLv2 | [1] | [1] | [1] | Yes | [1] | Result is LGPLv2 | Result is LGPLv2 | Result is LGPLv2 | Result is LGPLv2 | No | No | [2] | No |
LGPLv3 | [1] | Yes | [1] | Yes | [1] | Yes | Result is LGPLv3 | Result is LGPLv3 | Result is LGPLv3 | Result is LGPLv3 | No | Result is LGPLv3 | [2] | No |
MIT/Expat | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
MIT/X11 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
2-Clause BSD | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Tes |
3-Clause BSD | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
4-Clause BSD | No | No | No | No | No | No | Result is 4-clause BSD | Result is 4-clause BSD | Result is 4-clause BSD | Result is 4-clause BSD | Yes | Result is Apache + Advertising Clause | Result is MPL with Advertising Clause | Result is CDDL with Advertising Clause |
Apache2 | No | Yes | No | Yes | No | Yes | Result is Apache2 | Result is Apache2 | Result is Apache2 | Result is Apache2 | Result is Apache2 + Advertising Clause | Yes | Yes | Yes |
MPL2 | [2] | [2] | No | [2] | [2] | [2] | Result is MPL | Result is MPL | Result is MPL | Result is MPL | Result is MPL with Advertising Clause | Yes | Yes | No |
CDDL | No | No | No | No | No | No | Result is CDDL | Result is CDDL | Result is CDDL |
也请注意,我已经稍稍地简化了结果,以反映其实际效果。例如,我说,MIT/X11+4-Cluase BSD结果= 4-clause BSD。
实际上,现在的代码是结合了两个许可证,你需要遵循,包括双方面的代码,但尽可能有效的限制,它现在的行为就像4-clause BSD。
[1]
在许多情况下,许可证包含一个条款,允许您升级到更高版本相同的许可证。
例如,默认的GPLv2的版本包括一个条款,允许用户“升级”为GPLv3。
如果这个条款被包含的话,你就可以自由组合代码,结果是代码被覆盖组合产生了新的许可证。
你应该检查这个条款是否被包含了。一些著名的软件,如Linux内核,并没有它。
其他软件可能需要双方更新到较新版本的许可证。
例如,AGPLv1和GPLv2的是不相容的,但如果这两方面包中包含“或更高版本”的条款,他们可以升级到AGPLv3和GPLv3,这是兼容的。
[2]
MPL2执行了一种整齐的帽子戏法。它通过一bit合法操纵间接地允许和GPL系列许可证保持兼容性。结果是你能够
组合它们,但是能够保持MPL代码是MPL许可的,GPl代码是GPL代码的。
翻译原文--http://e1ven.com/2012/03/21/comparison-of-open-source-licenses/
不当之处还请谅解。