白首相知犹按剑

 


 

前两天看到有朋友分享说,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 上就有大量的开源项目

现在除了 GLP,还衍生出了其他的开源协议。

文章开头提到的 Facebook BSD + PATENTS 就是开源协议的一种~

但它到底有什么问题,以至于让百度宁可费这么大力气重做他们的东西都要弃用这个协议的产品呢?

因为根据协议内容,只要你在用 Facebook 家的 React 在做项目,那么 Facebook 可以反过来用你的项目专利,而且和 React 无关的专利 Facebook 也可以用。

同时你还不能告他侵权,否则你就会失去 React 的授权,Facebook 可以先告你!

其实 React 挺好用的

可能朋友们对于百度的印象不太好,但这回是 Facebook 做的不太地道,因为根据这个开源协议,百度的人工智能,自动驾驶等等专利都可能受到威胁,这一点 Facebook 的这个协议确实有点太流氓了。

而且不光百度,Apache 也因为开源协议的原因禁用了 React。

Apache 软件基金会支持了很多不错的非营利性开源项目

其实在科技圈,因为这个开源协议闹出来的幺蛾子事情还真不少。。。

还记得这个少年创业家么?

他的产品被原作者指抄袭

这个 00 后搞了个叫猫桌面的东西

这个东西抄袭了另一个作者的开源代码,叫 “ 墨镜猫 ”

连名字都还叫 “ 猫 ”,你这抄袭也忒不走心了吧。。。

差评君去开源库里看了看,发现原作者发现被抄袭了之后,更改了开源协议,改成了差评君之前说的 GPL

有趣的是,他还在改动日志里骂了几句娘。。。

这就是典型的不遵守开源协议的案例。

再比如说区块链热潮中的一个叫量子链的项目,图为知乎匿名网友扒出来的开源协议问题。(话题链接:https://www.zhihu.com/question/57090778)

一直以来开源项目的公开透明让不少别有用心的人钻了孔子,这实在是违背了开源社区的初衷。

但有些公司还在协议里打着保护知识产权的幌子耍流氓。。。

比如 Facebook 这样本身有着技术却去污染开源社区的行为受到了许多争议。

还有人把 Facebook 的点赞倒过来 diss 了一下

开源本身的目的是让软件项目和科研项目一样,互相分享知识,让前人给后人发明的工具,让后人更好地改变世界。

而做这样的事情,是需要很大的热情的,所以极客君觉得私有软件也没有错,程序员也是要吃饭的。

但是,拿开源去搞一些不正当的行为,大家的美好梦想去填充自私的欲望,这样的行为真的不合适。

“ 小公司不用担心,Facebook 应该不在乎~ ”

 


目前,百度内部在自研 React Native 的替代方案。

这是否意味着国内大公司在 Facebook 条款的约束下,也有逐步停用 React / React Native 技术栈的可能? 知乎是否会停止使用React? 阿里还会使用react吗? 腾讯还会使用react吗?

各位geek朋友们如何看待此事呢?^_^

Facebook在代码里下毒,百度身受重伤。。。的更多相关文章

  1. Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型

    Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足.其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%.(VR最新突破:全景 ...

  2. Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式

    原文:Arcgis for Javascript API下类似于百度搜索A.B.C.D marker的实现方式 多说无益,首先贴两张图让大家看看具体的效果: 图1.百度地图搜索结果 图2.Arcgis ...

  3. 一统江湖的大前端(5)editorconfig + eslint——你的代码里藏着你的优雅

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  4. C语言代码里不能用goto?

    当我学C语言时,老师整天告诉我:"不要使用goto, 这是一个坏习惯, 这种写法很烂,而且很危险!"等等. 但是为什么那么多内核程序员那么喜欢用goto呢? 在这段linux内核  ...

  5. ros下基于百度语音的,语音识别和语音合成

    代码地址如下:http://www.demodashi.com/demo/13153.html 概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能. ...

  6. linux环境下使用百度云网盘

    linux下经常需要备份一些文件到云端,现在能用的也就只有度娘的百度云网盘了,在github上发现一个挺好的项目,bypy,用来在linux下使用百度云. 项目地址:https://github.co ...

  7. iOS 疑难杂症 — — 在 Storyboard 里 Add Size Class Customization 后再从代码里无法修改的问题

    前言 公司的产品同时适配 iPhone 和 iPad ,并坚持用 Storyboard 来做适配,今天又踩一个坑(以前遇到过)还以为是 XCode 的鬼毛病. 声明  欢迎转载,但请保留文章原始出处: ...

  8. 实现textbox文本页面改变触发textchanged事件,代码里修改不触发

    今天弄控件遇到一个问题,就是TextChanged,如果在代码里或在页面修改修改text值,就会触发事情,但如果在textchanged里修改text,它会不会触发呢,不会,我调试跟踪,并没发现它会重 ...

  9. KindEditor设置为过滤模式,但在代码模式下提交表单时不过虑HTML标签的解决方法

    KindEditor设置filterMode为true,但在代码模式下提交表单的话,发现并没有过虑掉自己不想保留的HTML标签. 这时只需同步内容前加上红色部分内容即可: onClick=" ...

随机推荐

  1. composer卸载重装

    $ composer remove phpunit/phpunit --dev $ composer require phpunit/phpunit --dev

  2. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  3. 2018-2019 2 20165203 《网络对抗技术》 Exp2 后门原理与实践

    2018-2019 2 20165203 <网络对抗技术> Exp2 后门原理与实践 实验内容 1.使用netcat获取主机操作Shell,cron启动 (0.5分) 2.使用socat获 ...

  4. 用Delphi从内存流中判断图片格式

    https://blog.csdn.net/my98800/article/details/53536774 废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件 ...

  5. HDU3031 To Be Or Not To Be 左偏树 可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU3031 题意概括 喜羊羊和灰太狼要比赛. 有R次比赛. 对于每次比赛,首先输入n,m,n表示喜羊羊和灰 ...

  6. BZOJ4974 八月月赛 Problem D 字符串大师 KMP

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4974 - 八月月赛 Problem D 题意概括 一个串T是S的循环节,当且仅当存在正整数k,使得 ...

  7. MSF《构建之法》阅读笔记5

    第七章 MSF MSF是一种软件开发方法,MSF原则包括1推动信息共享和沟通,2为共同的远景而工作,3充分授权和信任,4各司其职,对项目共同负责,5交付增量的价值,6保持敏捷,预期和适应变化,7投资质 ...

  8. 用js来实现那些数据结构03(数组篇03-排序及多维数组)

    终于,这是有关于数组的最后一篇,下一篇会真真切切给大家带来数据结构在js中的实现方式.那么这篇文章还是得啰嗦一下数组的相关知识,因为数组真的太重要了!不要怀疑数组在JS中的重要性与实用性.这篇文章分为 ...

  9. Java基础--对象的克隆

    文章转载自https://www.cnblogs.com/Qian123/p/5710533.html 阅读目录 为什么要克隆? 如何实现克隆 浅克隆和深克隆 解决多层克隆问题 总结 假如说你想复制一 ...

  10. [BZOJ2877][NOI2012]魔幻棋盘(二维线段树)

    https://blog.sengxian.com/solutions/bzoj-2877 注意二维线段树的upd()也是一个O(log n)的函数(pushdown()应该也是但没写过). #inc ...