github中有很多的开源项目,如果是学习使用,并没有什么影响,但是如果是想商用,则一定需要了解不同开源协议的区别,以免踩坑,本文介绍五种开源协议GPL,LGPL,BSD,MIT,Apache,以及如何选择这几种协议。
BSD开源协议赋予使用者极大的自由。基本上,使用者可以随心所欲地使用、修改源代码,并将修改后的代码作为开源或专有软件再发布。
然而,要享受这种自由,当您发布使用了BSD协议的代码或者以BSD协议代码为基础进行二次开发时,需要满足以下三个条件:
BSD协议鼓励代码共享,但同时尊重代码作者的著作权。由于BSD允许使用者修改和重新发布代码,也允许在BSD代码的基础上开发商业软件并进行发布和销售,因此对于商业集成而言非常友好。因此,许多公司在选择开源产品时首选BSD协议,因为他们可以在必要时完全控制这些第三方的代码,进行修改或二次开发。
Apache License是著名的非盈利开源组织Apache采用的协议。该协议与BSD相似,同样鼓励代码共享和尊重原作者的著作权,也允许修改代码并将其作为开源或商业软件再发布。需要满足的条件也类似于BSD:
Apache License也对商业应用非常友好。使用者可以在需要时修改代码,以满足其需求,并将其作为开源或商业产品发布或销售。
我们都熟悉Linux采用了GPL协议。GPL协议与BSD、Apache License等鼓励代码重用的许可有很大不同。GPL的核心思想是代码的开源和免费使用,以及对引用、修改和派生代码的开源和免费使用,但不允许将修改后和派生的代码作为闭源的商业软件发布和销售。这就是为什么我们可以使用各种免费的Linux系统,包括商业公司的Linux以及Linux上众多由个人、组织和商业软件公司开发的免费软件。
GPL协议的主要内容是,只要在一个软件中使用GPL协议的产品("使用"包括类库引用、修改后的代码或派生代码),则该软件产品必须同样采用GPL协议,即必须开源和免费。这就是所谓的"传染性"。使用GPL协议的产品作为独立产品使用没有问题,而且可以享受免费的优势。
由于GPL严格要求使用了GPL类库的软件产品必须采用GPL协议,因此对于使用GPL协议的开源代码、商业软件或者对代码有保密要求的部门来说,不适合将其作为类库或基础进行二次开发。
LGPL是为主要用于类库的开源协议。与GPL要求使用/修改/派生的GPL类库的软件必须采用GPL协议不同,LGPL允许商业软件通过类库引用(link)方式使用LGPL类库,而不需要将商业软件的代码开源。
然而,如果修改LGPL协议的代码或进行派生,那么所有修改的代码、涉及修改部分的额外代码和派生的代码都必须采用LGPL协议。因此,LGPL协议的开源代码非常适合作为第三方类库被商业软件引用并进行发布和销售。
但对于希望以LGPL协议的代码为基础,通过修改和派生的方式进行二次开发的商业软件,LGPL协议则不适用。
GPL和LGPL都保护原作者的知识产权,避免他人使用开源代码复制并开发类似的产品。
MIT许可协议与BSD类似,非常宽松。作者只希望保留版权,而没有其他限制。也就是说,无论是以二进制形式还是以源代码形式发布,您都必须在发行版中包含原许可协议的声明。
MPL是The Mozilla Public License的简称,是1998年初Netscape的Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。与著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相似(因为都符合OSIA认定的开源软件许可证)。但与它们相比,MPL还有以下几个显著的不同之处: