随着各个国家以及国内的知识产权法律逐渐的完善,同时各个公司的程序员普遍会引用各种开源项目或组件.....这使得越来越多的涉及开源许可,商业知识产权纠纷,恶意知识产权侵权索赔案件涌现出来了。如果你不想一不小心被起诉,请君阅读并收藏本文。
a1)设置开源协议能够对作者进行一些保护,防止知识成果被恶意利用。
a2)重视开源协议对使用者(引用开源代码或组件的人)起到保护作用,避免知识产权相关的法律纠纷。
b1)开源项目中的License是什么?
LICENCE 是软件的授权许可,详细声明了获得代码后拥有的权利,哪些行为是允许的,哪些行为是禁止的。软件的版权许可证可有很多方式,本文仅讨论开源软件协议 Open Source License。
如下图所示:
一般我们不需自己写许可协议,更靠谱的是选择一种比较流行的开源协议,省时省力,更便于自己作品的传播,于人于己都有利。
除了直接使用开源代码,即便是仅仅受一个项目的启发(未引用一行代码),国外一些项目作者依然会声明受某某项目启发: Inspired by XXX link: https://www.xxxx.com
b2)开源协议中涉及的术语。
当我们了解各种开源协议许可及之间的差异时,我们才可以在众多技术上可选的项目中筛选协议类型,为我们自己的项目研发过程保驾护航,避免未来被起诉和陷入知识产权纠纷。
c1)从引用者视角看协议间的区别。
附1:常用开源协议的宽松程度:
MIT>BSD>Apache>LGPL>MPL>GPL>AGPL.
附2:一个来源于专业的开源许可风险识别平台WhiteSource上的分析报告(绿色代表风险低,红色代表风险高)
c2)从项目发布作者角度看协议间的区别。
d1)BSD(Berkeley Software Distribution license)
BSD可证也来源于大学,与MIT差不多,也非常简单、慷慨。
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。前提是当你发布使用了BSD协议的代码,或者以BSD协议代码为基础开发自己的产品时,需要满足三个条件:
BSD 开源协议鼓励代码共享,但需要尊重代码作者的著作权。BSD 开源协议允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布、销售,是对商业集成很友好的协议。因此,很多公司在选用开源产品的时候都首选BSD协议。
须知:
BSD 对商业比较友好,很多公司在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,甚至在必要的时候可以修改或者二次开发。
d2)MIT(Massachusetts Institute of Technology)
来源于大学,MIT 开源协议是史上最为简洁、慷慨的开源协议之一。作者只想保留版权,而无任何其他了限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
特点:
代表作品:
须知:
目前限制最少的开源许可协议之一(比 BSD 和 Apache 的限制都少),只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。
d3)Apache Licence 2.0
来自 Apache,类似 MIT 开源协议,但它重视专利权。
Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许修改代码、再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:
Apache Licence 也是对商业应用友好的许可,使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
代表作品:
须知:
Apache 协议还有以下需要说明的地方: 永久权利: 一旦被授权,永久拥有。
全球范围的权利: 在一个国家获得授权,适用于所有国家。
授权免费,且无版税: 前期,后期均无任何费用。
授权无排他性: 任何人都可以获得授权
授权不可撤消: 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
d4)GPL(General Public License)
GPL(GNU GENERAL PUBLIC LICENSE)来源于自由软件联盟GNU,GPL/LGPL侧重于代码及衍生代码的开源与免费使用。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。 这就是所谓的”传染性” 。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是 代码的开源/免费使用/引用/修改 和 衍生代码的开源/免费使用 ,但 不允许 修改后和衍生的代码做为 闭源 的商业软件发布和销售。
其它细节和BSD/Apache等协议类似。
代表作品:
须知:
只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,因此这个协议并不适合商用软件
d5)LGPL(Lesser General Public License)
LGPL(GNU LESSER GENERAL PUBLIC LICENSE)来自于自由软件联盟GNU,可以翻译为更宽松的GPL协议,也属于传染性开源协议。
LGPL是GPL的一个主要为类库使用设计的开源协议。和 GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议 不同,LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议,因此,LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。
须知:
LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用
d6)Eclipse Public License(EPL)
由于版权约束比LGPL弱,因此EPL许可证更加商业友好,因为它允许转授使用许可和构建由EPL和非EPL(甚至专有)许可代码组成的软件,前提是非EPL代码是“软件的单独模块”。
此外,在包括项目工作在内的商业产品引起的诉讼/损害的情况下,EPL为EPL代码贡献者提供了额外保护。它主要具有以下特点:
使用EPL协议的常见项目
编程语言Clojure:
https://clojure.org/community/license
应用服务器Jetty(EPL v1.0):
https://www.eclipse.org/jetty/licenses.html
Java测试框架(EPL v1.0):
https://junit.org/junit4/licens
d7)Mozilla(Mozilla Public License)
Mozilla开源协议由Mozilla基金会开发并维护。
该协议融合了BSD许可与GNU通用公共许可协议的特性,追求平衡专有软件和开源软件开发者之间的顾虑(平衡开发者对源代码的需求和他们利用源代码获得的利益)。
Mozilla允许使用者在自己已有的源代码库上加一个接口,除了对接Mozilla Public License开源库的接口程序源代码以MPL许可的形式对外许可外,源代码中的其他源码可以不用MPL许可证的方式强制对外许可。
使用BSD前提条件:
经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来;
如果修改了代码,需要有一个专门文件描述对源代码程序的修改时间和修改方式;