[关闭]
@pockry 2017-09-29T10:08:32.000000Z 字数 3549 阅读 2441

Facebook认怂 React专利门始末

前端

作者:程墨


随着Facebook连续发布使用MIT许可协议的React v15.6.2版和v16版,最近一段时间搞得沸沸扬扬的React许可协议事件终于尘埃落定了,不过很多吃瓜群众可能还搞清楚怎么回事,这里我就来讲一讲来龙去脉。

React到底惹了什么麻烦?

一切都要从开源软件的许可协议(license)说起。

搞开源软件,并不是说把源代码公布出去就完事,还有很多问题要考虑呢,比如,源代码有bug害得用户损失了一个亿算谁的责任,有人想继续修改源代码重新发布怎么办,涉及到软件专利怎么办……为了解决这些问题,开源软件往往要随源代码包含一个许可协议,当然,要是每个开源软件开发者都起草自己的许可协议,那他们估计也没多少时间写代码了,所以,往往是采用现成的开源软件许可协议。

现成的开源软件许可协议很多,和这起事件相关的三个,也是开源软件中很常用的三个,就是BSD、MIT和Apache v2。

Facebook曾经默认对自己开源出来软件采用BSD许可协议,但是,在2015年的时候,Facebook给自己开源软件增加了一个专利附属条款,React也就随之改为包含这个专利附属条款的BSD许可协议,这也就是这起事件的源头。

Facebook为什么要增加这个条款呢?因为BSD和MIT这两种许可协议都是没有专利相关内容的,换句话说,虽然源代码是授权出去了,但是代码中如果涉及到一些专利问题,就扯不清了,软件专利这事情纠缠起来是非常狗血的,于是Facebook用这个专利附属条款来做自我防御。

这里可以看见专利附属条款的内容,满文都是搞法律人才写得出的词汇,冗长而且晦涩,但可以简单一点解释,以React为例,就是这样:Facebook拥有React 中的一些专利,但是Facebook不会利用这些专利来找用户你的麻烦,不过,如果用户你有一天利用
“任何专利问题”来找Facebook的麻烦,那么Facebook有权立刻停止授权你使用React。

这里我们首先认识到,用什么许可协议,完全是开源软件贡献者的决定,其他人如果想强制要求 Facebook用什么许可协议不用什么许可协议,就和要求微软开源Windows和 Office源代码一样可笑。

Facebook在2015年做了这个许可协议更改之后,招来一些非议,但是也没有引起大风波,直到几年后,在今年7月份,开源组织Apache软件基金会将Facebook的这种带专利附属条款的BSD列为Category X,这个Category X就是Apache基金会的黑名单,如果哪个开源软件是基于这个黑名单上的许可协议,那就不能在Apache基金会的开源项目中使用,这是为了防止软件依赖树被“污染”。要知道,BSD协议本身不在Category X黑名单上,所以Apache这个决定就是针对Facebook的专利附属条款,害怕这个附属条款会给Apache带来麻烦。

这个决定导致基于React的很多Apache项目不得不重写。

Apache这么一搞,一下子把Facebook推到风口浪尖,大批大批开发者请愿希望Facebook更改React的许可协议,毕竟,谁也不希望有朝一日自己的软件被停止使用。

面对这些请愿,Facebook一开始是拒绝的,依然认为包含专利条款的BSD许可协议是最好的选择。

然后,在9月份,WordPress的创始人Matt也表示WordPress也会离开React,值得一提的是,Matt在声明中盛赞React是一个了不起的软件,并且说这样做是为了规避风险。

WordPress的决定应该是推动Facebook做出改变的最主要原因,要知道,这世界上每四个网站就有一个是用WordPress构建的,WordPress不用React影响太大,所以,Facebook终于发表声明,表示会在新版v16中放弃原有的带专利附属条款的BSD许可协议,转而采用MIT许可协议。

事实上,既然做了这个决定,就不用等v16了,React在v16发布之前发布了v15.6.2,作为v15的收官之作,已经改为MIT许可协议。

事情到此为止了,然而,真的到此为止了吗?

我们重新回顾一下这个事件,期间有不少人浑水摸鱼谩骂Facebook,各种曲解那个专利附属条款,各种夸大Facebook会利用这个条款整治其他公司的可能性,所以,这里需要重新审视一下这个条款。

首先要知道,这个条款是一个防御性的法律措施,为的是防止有人利用专利问题起诉Facebook,条款中是Facebook先授权用户使用专利,然后再防止用户因为专利问题反诉Facebook。

事实上,自从实施这个条款以来,Facebook还从来没有利用这个条款取消某个组织或者个人对自己的开源软件的使用许可,React也得到广泛的应用,Microsoft、AirBnB等大型公司都在大量使用React,当然,Microsoft是Facebook的股东,AirBnB也没有和Facebook有商业竞争,可是,就连Twitter也在使用React,Twitter可是和 Facebook有最直接的竞争关系,他们都不怕,还有什么好怕的呢?

所以说,觉得Facebook会利用这个条款来打击竞争对手,那真是想多了。

当然,担心惹上麻烦而弃用React的Apache和WordPress,也完全应该理解他们的做法,因为他们的软件不只是自己用,而是要发布出去,被千百万其他用户使用,这样牵扯到的就不只是Facebook和Apache、WordPress之间的关系,还要应对这世界各色各样用户的法律需求。法律上的事情,小心无大错。

React已经改为MIT许可协议了,问题就彻底解决了吗?

很可惜,也许解决了一个问题,但是诞生了新的问题。

前面已经说过,BSD和MIT许可协议都不包含专利保护内容,但是Apache v2许可协议有相关内容, Apache v2对于专利问题的处理可以这么解释:如果你起诉这个开源软件中用到的专利,那么从你起诉那一刻起,对你的许可协议就取消了。

乍看一眼,似乎和Facebook的专利附属条款一样的嘛,其实,关键区别就是专利的范围,Apache v2保护专利的范围是开源软件中用到的专利,而Facebook专利附属条款针对的是“任何专利”。

理论上说,如果某个农业公司告Facebook侵犯了他们水稻基因培育的专利,根据专利附属条款条款Facebook可以要求这个农业公司不许用React,这个农业公司的官方网站如果用React写的话就麻烦了,这个虚构的故事听起来就有点扯,但也看出这个专利条款的杀伤力很大。

这样一看,Apache v2似乎是一个关于专利问题更好的选择,但是Facebook选择了MIT,一个同样没有专利保护内容的许可协议。

Facebook为什么选择MIT呢?这个问题外人无法回答,只能猜测,最大的可能就是,MIT是github上最受欢迎的许可协议,所以干脆从善如流,就选最热的许可协议好了,省去很多口水。

那Facebook为什么不选择Apache v2呢?很可能Apache v2并不满足Facebook的要求。

好了,现在React换成MIT许可协议了,虽然看不见那个烦人的“专利附属条款”,但是专利的问题依然存在,如果将来某个组织和Facebook产生了专利冲突,怎么办呢?那时候,就看谁的专利池里货更多,就看谁能请到更厉害的律师,就看谁更有钱打旷日持久的官司。

这么一看,似乎还真不如最初带一个专利附属条款的BSD。

这是开源世界对Facebook的胜利吗?
首先,这不是一场战争,这只不过是开源软件世界中的一次讨论,所以用不上“胜利”这个词汇。

在这场大戏中,除了Facebook、Apache和WordPress这几个主角,还有众多的开发者参与其中作为群众演员。

大家有诉求,发出自己的声音,这没有问题,很多开发者都有礼有节地向Facebook请愿,但是,也可以听到很多极其刺耳的声音,对Facebook各种侮辱批斗。

如果觉得观念不合就要批斗,这和专制有什么区别?

不管怎样,Facebook选择用什么样的许可协议,都是他自己的事情,你可以请求或者建议他做出改变,但是靠谩骂和中伤就是没素质,难道真的以为Facebook是被骂才做出改变的吗?好好说话不行吗?整个事件中最大的推动力量是WordPress而不是口出秽言的喷子。

React是一个非常优秀的软件,Facebook作为这个软件的创造者应该受到尊敬,当我们在享用别人的开源成果时,应该想的是自己能够做什么来帮助别人,而不是见风就是雨的嘲笑中伤挖井的人。

不管怎样,React将会继续演进,作为目前最受欢迎的UI库之一,让我们共同为React社区的繁荣努力奋斗吧。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注