从Facebook的React框架事件学习一下开源协议
前言
前一阵子由于Facebook BSD+PATENTS License的原因,Apache项目禁止使用带该license的代码,引人注目的就是Facebook的React前端框架。
后来在知乎上看到百度内部也要求在半年内完成内部产品的转型,如下图所示。
最近又看到Facebook 的React框架又重新将Facebook BSD+PATENTS License更新为了MIT协议。
以上这些变化,引起了我的好奇,在接下来的内容中将对以下内容进行阐述。
目录
- Facebook的BSD+PATENTS License到底说了些什么,以React为例子。
- 开源协议选择
- 结尾
BSD+PATENTS License
根据维基百科的定义,License即软件许可证,含义如下
软件许可证是一种具有法律性质的合同或指导,目的在规范受著作权保护的软件的使用或散布行为。通常的授权方式会允许用户来使用单一或多份该软件的复制,因为若无授权而径予使用该软件,将违反著作权法给予该软件开发者的专属保护。效用上来说,软件授权是软件开发者与其用户之间的一份合约,用来保证在匹配授权范围的情况下,用户将不会受到控告。
根据更新前的Facebook React仓库中的 Readme文件所示。
React使用的是BSD协议,另外附加了专利许可证。而引起讨论的重点则出在PATENTS 专利许可上。
节选PATENTS专利许可证上的一段话
The license granted hereunder will terminate, automatically and without notice, if you (or any of your subsidiaries, corporate affiliates or agents) initiate directly or indirectly, or take a direct financial interest in, any Patent Assertion: (i) against Facebook or any of its subsidiaries or corporate affiliates, (ii) against any party if such Patent Assertion arises in whole or in part from any software, technology, product or service of Facebook or any of its subsidiaries or corporate affiliates, or (iii) against any party relating to the Software
这一段整体说明了,如果违反了以下三个限制,就会被撤销使用React的许可,在我个人的理解来说,就是Facebook可以反告你一把了。
由 (i)和(ii)看出,如果你采取专利申诉或者是挑战到了Facebook,Facebook的子公司以及合作方,你的React许可就会被撤销。
由(iii) 可以看出:你不能够其他使用了React的公司产生纠纷,不然也会被撤销React许可。
这一段是引起了很大的反向,换句话来说,只要你使用着Facebook的React框架,那么Facebook如果侵权你的专利,你还不能告他,你告他的话,你的React许可就会被撤销,然后被反告一把实锤,想想还真的是挺心塞的哈哈。
所以百度以及其他的一些公司有一些对应的举措也不足为怪。
各种开源协议以及如何选择
因为社区的反响实在强烈,以及Apache基金会的强硬举措,Facebook在近期是妥协了,将Facebook BSD+PATENTS License更新为了MIT协议。
开源协议的数量非常多,但一般来说,我们只需要在常用的当中进行选择即可。阮一峰老师在乌克兰程序员Paul Bagwell的基础上绘制了一份中文的协议选择图,非常浅显易懂。
对于Facebook这次的升级来说,MIT相对于BSD的不同之处在于,使用MIT协议的是可以用原有作者的名字打广告的,其实就是更为宽松了一些。
在这些常见的协议当中,BSD和MIT的协议相对比较宽松,Apache次之,会保留作者的专利版权,GPL限定性更强。知乎网友http://www.gcssloop.com/tips/...也画了一张对应的示例图,从图中可以很清晰的看到各个协议之间的区别。
https://choosealicense.com/ 这个网站提供了选择开源协议上的一些建议。
知乎网友gcssloop在这个的基础上对其做了汉化处理,具体网址见http://choosealicense.online/
结尾
这是个人对这次Facebook React开源协议事件的一些资料收集以及个人看法,希望对大家有所帮助。
同时也对之前网络上盛传的“ 不用学React”这种言论说一句。
且不说你的公司使用React会不会和Facebook引起冲突,哪怕公司层面上有冲突,私下去学习这样一个优秀的框架也是极好的提升机会,切莫浮躁啊。