Facebook在代码里下毒,百度身受重伤。。。
前两天看到有朋友分享说,WordPress停用了react。
今天,在逛知乎时看到了另一个问题
别细看这图,我赌你看不懂。。。
嗯。。。用人话来说就是百度内部要求他们的程序猿不要再使用一个叫 React
的开源产品的代码了。
而且,现有的已经使用过这些代码的产品要改写!(其实几乎有很多要重写了)
有朋友会问 React 是毛啊?
这是 Facebook 搞的一套贼好用的前端开发工具,它能提供一些很好的效果,别的开发者可以免费拿来在它的基础上去做自己的产品,为了更多人更好的使用它,Facebook 把这东西开源了。(免费和开源还不太一样,下面说)
基于 React 的前端效果
这次出问题主要是因为 React / React Native 工具的开源协议 Facebook BSD + PATENTS 。
整天听没事儿就扯什么开源,Github 啊什么的,不太懂编程的朋友们可能觉得我在装哔。
那么,今天就好好说说开源的事儿。
开源软件和免费软件不是一个意思,开源软件的源代码是公开的(感觉像是句废话?),但免费软件不一定。
举个栗子,有两个好人 A 和 B 都愿意免费给你提供食物,但是好人 B 告诉你他的制作菜谱,而 A 只让你吃。
这区别就大了。。。
首先,“ 免费的程度 ” 不一样。(这个比喻很奇怪但确实可以这么理解)
如果 A 哪天突然要找你收钱了,那你只好要么不吃,要么就换个途径获取食物,因为你只从 A 这里获得做好的食物,你自己还是没办法做。
但从 B 这里你获取的是菜谱,你可以自己做,所以对于 B 来说收钱一般是没什么意义的事情。(还是存在可能有的人觉得 B 做的好捐款的)
其次,可以修改。
如果你觉得 A 的食物不好吃,你要么不吃,要么给 A 提个意见,要么含着泪咽下去。。。
如果你觉得 B 的食物不好吃,你可以适当的根据食谱来修改一下,做出自己喜欢的食物,成本也不高,就是买买菜而已。
在计算机刚出现的时候,用计算机的人都是专业研发人员,大家写出来的程序都会分享源代码,方便给大家解决问题,本着类似于学术钻研的态度在搞软件。
后来,软件规模和复杂度越来越大,计算机越来越平民化和普及,有的商业软件公司为了保护技术和维持盈利,开始对软件闭源,这样用户就无法知道原理了。
微软当时的老大比尔 · 盖兹在私有软件的推广上起到了重要的作用,认为软件具有知识产权,让开发者仅仅靠热情去无偿开发和维护软件是不太合理的。
微软的 BASIC 编程软件
不过软件业并没有因此渐渐完全走向闭源,而是产生了分化,形成了开源和闭源观点对立的情况。
这就不得不提一个开源社区举足轻重的人物(他本人也真的很重,是个大胖子),他叫 Richard Stallman。(这个人差评君讲过,传送门)
Richard Stallman
当时许多开发者们看着 UNIX 操作系统从开源慢慢走向商业化和闭源感到痛心疾首,于是这位仁兄发表了 GNU (GNU is not Unix)宣言,号召大家一起做一个开源的操作系统,里面运行的所有的软件也都是开源的。
毕竟枪杆里面出政权,你收费我就起义!
接着,他用法律术语写了一份通用公共许可证 (General Public License ,简称 GPL ),放今天讲就是一份开源协议。
遵循 GPL 的项目有这么几条规则:
(1) 软件谁写的著作权就是谁的
(2)谁都可以用这个开源项目做任何事情,而且与原作者无关
(3)谁要是用了这个软件的源代码,那么他的作品也必须遵守 GPL,也得开源
(4)在之前那个吃饭的例子里讲,上面的话就是你改良了某人的菜谱,那么你也得公开你的菜谱。
(5)为什么要干这种有钱没得赚吃力不讨好的事情?
因为一旦遵循了这样的协议,开源项目可以集中大家的智慧去得到改良,热爱自由的开发者们可以形成一个社区一样的环境来交流技术。
比如说著名的版本控制服务网站 Github 上就有大量的开源项目
文章开头提到的 Facebook BSD + PATENTS 就是开源协议的一种~
但它到底有什么问题,以至于让百度宁可费这么大力气重做他们的东西都要弃用这个协议的产品呢?
因为根据协议内容,只要你在用 Facebook 家的 React 在做项目,那么 Facebook 可以反过来用你的项目专利,而且和 React 无关的专利 Facebook 也可以用。
同时你还不能告他侵权,否则你就会失去 React 的授权,Facebook 可以先告你!
其实 React 挺好用的
可能朋友们对于百度的印象不太好,但这回是 Facebook 做的不太地道,因为根据这个开源协议,百度的人工智能,自动驾驶等等专利都可能受到威胁,这一点 Facebook 的这个协议确实有点太流氓了。
而且不光百度,Apache 也因为开源协议的原因禁用了 React。
其实在科技圈,因为这个开源协议闹出来的幺蛾子事情还真不少。。。
他的产品被原作者指抄袭
连名字都还叫 “ 猫 ”,你这抄袭也忒不走心了吧。。。
差评君去开源库里看了看,发现原作者发现被抄袭了之后,更改了开源协议,改成了差评君之前说的 GPL
这就是典型的不遵守开源协议的案例。
再比如说区块链热潮中的一个叫量子链的项目,图为知乎匿名网友扒出来的开源协议问题。(话题链接:https://www.zhihu.com/question/57090778)
一直以来开源项目的公开透明让不少别有用心的人钻了孔子,这实在是违背了开源社区的初衷。
但有些公司还在协议里打着保护知识产权的幌子耍流氓。。。
比如 Facebook 这样本身有着技术却去污染开源社区的行为受到了许多争议。
还有人把 Facebook 的点赞倒过来 diss 了一下
开源本身的目的是让软件项目和科研项目一样,互相分享知识,让前人给后人发明的工具,让后人更好地改变世界。
而做这样的事情,是需要很大的热情的,所以极客君觉得私有软件也没有错,程序员也是要吃饭的。
但是,拿开源去搞一些不正当的行为,用大家的美好梦想去填充自私的欲望,这样的行为真的不合适。
“ 小公司不用担心,Facebook 应该不在乎~ ”
目前,百度内部在自研 React Native 的替代方案。
这是否意味着国内大公司在 Facebook 条款的约束下,也有逐步停用 React / React Native 技术栈的可能? 知乎是否会停止使用React? 阿里还会使用react吗? 腾讯还会使用react吗?