白首相知犹按剑

 


 

前两天看到有朋友分享说,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. 移位操作符 << >> >>>

    按位操作符只可用于int类型,其它类型都会转化位int类型在操作,并且只有数值右端的低5位才右用(因为2^5=32) <<  左移位操作符,低位补零 >>  右移位操作符,有符 ...

  2. MySQL----数据库操作2

    数据库高级操作: SHOW DATABASES; 显示数据库 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci CR ...

  3. 线段树解LIS

    先是nlogn的LIS解法 /* LIS nlogn解法 */ #include<iostream> #include<cstring> #include<cstdio& ...

  4. hdu1754splaytree区间查询

    以前用线段树做的题..发现splay好神奇 splay的区间查询就是把那个区间移到两个节点之间进行操作即可,同时每次rotate不要忘记pushup #include<iostream> ...

  5. python 全栈开发,Day26(hashlib文件一致性,configparser,logging,collections模块,deque,OrderedDict)

    一.hashlib文件一致性校验 为何要进行文件一致性校验? 为了确保你得到的文件是正确的版本,而没有被注入病毒和木马程序.例如我们经常在网上下载软件,而这些软件已经被注入了一些广告和病毒等,如果不进 ...

  6. 【转】角落的开发工具集之Vs(Visual Studio)2017插件推荐

    因为最近录制视频的缘故,很多朋友都在QQ群留言,或者微信公众号私信我,问我一些工具和一些插件啊,怎么使用的啊?那么今天我忙里偷闲整理一下清单,然后在这里面公布出来. Visual Studio 201 ...

  7. 通过生成支付二维码来实现微信支付的解决方案 - EasyWechat版(转)

    上一篇我们讲了在微信浏览器内实现微信支付的功能,它特别适合于一些基于微信公众号的h5站点等,支付流程也相当流畅,但是... 还有一种情况,比如现在北哥兄弟连PC版,是生成了一个二维码,这个二维码是专属 ...

  8. ActiveMQ的应用实例

    一.部署和启动ActiveMQ 去官网下载:http://activemq.apache.org/ 我下载的是apache-activemq-5.12.0-bin.tar.gz, 解压到本地目录,进入 ...

  9. #11 UVA 10529 Dumb Bones

    题意: 放一堆排,每放一张,有pa的概率让左边的全倒,有pb的概率让右边全倒 问在最优策略下,最少要放几张才能摆放出n张 1<=n<=1000 题解: 这题应该还是很经典的 首先是期望部分 ...

  10. 【算法】后缀自动机(SAM) 例题

    算法介绍见:http://www.cnblogs.com/Sakits/p/8232402.html 广义SAM资料:https://www.cnblogs.com/phile/p/4511571.h ...