如何选择开源许可证?

转载自:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

作者: 阮一峰

日期: 2011年5月 2日

如何为代码选择开源许可证,这是一个问题。

世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。

乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。

下面是我制作的中文版,请点击看大图。

如何选择开源许可证?_第1张图片

--------------------------------------------------------------------------------------------

开源软件许可证知识产权问题

转载自:http://www.williamlong.info/info/archives/305.html

    自由软件的英文是“Free Software”,此处的“Free”是自由(Freedom)的含义,而不是“免费”的意思,它本意强调的是软件代码自由的流动,即允许任何人基于一定的许可规则来使用、拷贝、修改、分发的软件。开源软件(Open Source Software)也具有自由软件的大部份属性,但开源软件从其价值取向上不完全等同于自由软件。开源软件的定义着重于通过源码的公开,为社会提供创造功能完善和高质量软件的潜力,并回避了自由、社会和原则等概念。使用开源软件这一说法也有助于避免“Free”歧义性,即避免将“自由”与“免费”相混淆。通常情况下,一般将自由软件与开源软件作为同一个概念进行讨论,在欧洲将其统称为 FLOSS(Free / Libre Open Source Software),它们是与专有软件(或商业软件)相对应的一个概念。

  随着开源运动的普及,开源的理念已经被广泛接受,众多的开发者和用户也通过不同的方式使用着开源软件。但在这一过程中,在享受开源软件带来的自由与方便时,我们不得不正视开源软件的许可授权问题。

  同传统商业社会的软件一样,开源软件也从一开始就在寻求保护知识产权的方法。一般意义上知识产权保护包括四个方面的内容:版权、专利、商标、商业秘密。开源软件在对其自身的知识保护方面是通过开源软件许可证进行的,每款开源软件在发布时,其目录中都包含一个关于该软件许可授权的许可证及其说明,用以向后续者明确能否对该软件进行使用、修改和再发布等。

  在使用开源软件时,特别是需要基于开源软件进行商业开发时,圈定了一类能满足基本应用的开源软件后,就需要对开源软件许可证进行研究,需要了解其许可规则对自已的后续开发和使用是否有限制,如有限制,则需要选择带有合适许可证的软件。为了减少不必要的麻烦和不对开源软件的许可授权造成伤害,对开源软件的许可授权进行分析是非常必要的、必需的。

  公认的开源软件许可证需要通过OSI(Open Source Initiative,简称 OSI)的认证,当前通过OSI认证的许可证有63种。OSI一般从9个方面来确认许可证是否是开源软件许可证:(1)发布的自由、(2)关于对源代码的要求、(3)关于演绎作品、(4)关于源代码的完整性、(5)不得歧视任何个人或团体、(6)不得歧视任何应用领域、(7)关于许可证的发布、(8)关于程序的部分、(9)许可证不能影响其它软件。具体的许可证的名称及其内容可以访问OSI的网站(http://www.opensource.org/licenses/alphabetical)。

  而这些开源软件许可证又可以分为五大类:(1)严格开源规则;(2)可以存在非开源部分;(3)可以兼容非开源软件;(4)允许软件专利;(5)彻底开放。

  通过OSI认证的开源软件许可证具有以下5个共同特征:(1)承认版权;(2)发布的义务——将获得的源代码再发布;(3)对发布的源代码的要求——须保证源代码的完整和可以被获得;(4)允许修改——可以根据获得的源代码产生演绎作品;(5)没有担保。

  在选用开源软件许可证时,需要考虑它们的不同点,下图从是否允许同其它开源代码混合、是否允许同基于其它许可协议的开源软件混合、是否必须公开源代码、是否明确了专利许可授权、是否明确了专利侵权导致授权终止、是否明确允许与函数库连接、是否只能按按本许可证发布代码(传染性)、是否允许多重许可、是否对应用接口做规定、是否对商标做出规定、是否可以自由选择许可证版本和是否明确规定诉讼管辖地及准据法等12个方面对开源软件许可证进行了比较,比较内容如图中所示:

  选用开源软件的四个基本原则:

  (1)从开源软件开发的角度来看,如果想对开源程序包做的只是利用其作为工具来生产与其分离的作品,那么绝大多数开源许可证都是可以的;

  (2)如果想将软件用于商业性发行且不愿意发行自己所修改的源码,那么可以选择BSD许可证,它能使修改保持专有;

  (3)如果希望源码总是自由的,GPL许可证及LGPL许可证是最佳选择;

  (4)如果想在与其它人共享代码时提供相应的保护,可以选择MPL许可证,该许可通过将软件(和任何对它的改进)分为受保护的(“封闭的”)部分和贡献(“开放的”)部分,在完全开放的GPL许可证和封闭的BSD许可证之间架起一座巧妙的桥梁。

  需要注意的几个问题:

  在选用开源软件和研究分析开源软件放可证时,需要关注当前开源软件发展中的非开源趋势,诸如Google,Apple等公司大量基于开源软件来构建自己的服务或将开源软件并入自己的硬件产品中,虽然与开源软件许可协议(如GPL、LGPL)等不构成实质上的矛盾,但最终的结果是相关的企业基于开源软件做了修改和定制,却没有公布源代码。新近推出的GPL v3没有对这类现象进行限制,而Affero GNU Public License却希望能对这些形成进行限制。从这个问题的反面我们也可以看到,只要不将基于开源软件所开发或修改定制的软件做为产品来销售,企业可以在此基础上创造出自己的商业模式而又不违反开源软件许可证的约束。

  美国联邦上诉法院在Jacobsen v. Katzer的判决中,历史上第一次承认“开源协议”是一种著作权协议,违反协议就是侵权行为。这一点是企业和用户在选用开源软件时不得不考虑的:开源软件的许可协议同样受到司法的保护。

  商标:开放源码不等于免费使用商标。众多的开源软件都有其商标,如Linux、Apache等,可以在其放许可协议的规定的范围内去使用其代码,但不能未经其附加授权而使用其商标,对这些商标的滥用恫同样也是不允许的。

  由于开源软件集市化的开发模式,开源软件商业化应用的过程中,如何解决代码的知识产权瑕疵和恶意陷阱?以及如何保证开源软件的质量问题都是需要重点考虑的。一个通俗的观点,对开源软件的使用比使用传统商业软件的过程要复杂得的多,这个复杂不是由代码所产生,而是由开源软件特点的授权模式所决定。


你可能感兴趣的:(如何选择开源许可证?)