Facebook的这份开源协议使React四面楚歌

如果你觉得一些科技公司看起来很美好,每天都在“改变世界”……你应该看看他们的用户条款和法律文书,藏污纳垢之严重令人震惊。

最近,百度和阿里巴巴内部的软件工程团队不约而同做了一件事——弃用 React。

解释下:

React 是一个前端工具,用于开发软件或互联网服务的用户界面,最早用在 Instagram 里,由 Facebook 开发并在 2013 年开源,随后获得了社区的广泛支持。在前端开发上,React 是目前业界应用最广泛的工具,百度和阿里巴巴的一些业务部门都在使用它,更是有很多创业公司的产品非常重 React,甚至完全基于 React 而生。

Facebook的这份开源协议使React四面楚歌Facebook的这份开源协议使React四面楚歌

但为什么最近百度和阿里巴巴都决定对 React 说再见?

对于开发者而言,许可证就是他们使用开源软件的“用户协议”。而 Facebook 的开源方式跟其他家都不太一样,别家一般用的都是开源社区公认通用的许可证,而 Facebook 的两个许可证,第一个是通用的 BSD 许可证,第二个是自己写的专利许可证 (patent grant)。

而开源社区在发现,Facebook 在 React 的专利许可证里“偷跑”了一堆让开发者恐慌和心寒的条款:

Facebook的这份开源协议使React四面楚歌Facebook的这份开源协议使React四面楚歌

法律文书通常比较拗口,这段的大意:如果你向 Facebook 及其子公司和其他相关实体发起专利诉讼,或者对其他使用 React 的公司发起专利诉讼,或者如果 Facebook 主动起诉你,你以反诉应对,你使用 React 的许可证将自动终结。

翻译成人话就是,如果你觉得 Facebook 侵犯了你的知识产权,你不能起诉 Facebook!Facebook 起诉你,你也不能反诉!因为在起诉的同时你的产品就挂了——你不可以继续用 React 了。

再直白一点:如果你在你的产品里用到了 React,哪怕只有一点点,你对于产品所拥有的知识产权也等于直接送给 Facebook 免费用。

本来这个许可证模式就很让开发者费解,但碍于 React 受 Facebook 的支持,围绕它的开源生态也很健全,结果就是 React 很好用,所以大家也就凑合用了。现在发现了这个专利许可里的奇葩条款,大家终于坐不住了……

这件事从去年就在前端技术圈吵开,后来愈演愈烈,形势每况日下:开源社区在更多 Facebook 开源的热门项目中发现了相同的许可证模式和条款。开发者认为 Facebook 的这种许可证模式正在毒害社区,污染开源精神。

根据一直关注事态进展的胡桓铭的知乎专栏,此事让 React 社区因此十分分裂,也加剧了 React 支持者和 Vue、Angular 等其他替代品支持者之间的撕裂,“一部分人开始咒骂万恶的开源流氓,一部分人开始威胁说我们不用了,我们用 Vue 和 Angular(注:React 的替代品)去了,一部分人呼吁保持冷静,静观其变,我们要相信组织。”

为什么大家对 Facebook 此举如此担心?

我们举个例子:

你创立了一家科技公司,React 用得很爽,产品开发很快,公司越做越大;突然有一天 Facebook 做了个跟你一模一样的产品,你不能起诉它,因为在你起诉的同时你的产品就等于挂了,因为 Facebook 撤回了允许你使用 React 的授权。

这可不是说着玩,别忘了 Facebook 抄袭创业公司产品已经不止一次两次。比如 Facebook 几次三番针对 Snapchat 个别功能进行复制,前几次都未成功,最后直接把短视频故事功能抄了出来,放到了旗下 Facebook、Instagram、WhatsApp 和 FB Messenger 这四款亿级,甚至十亿级用户的产品里。从这个角度来看,Snapchat 能活着上市真是太不容易了。

Facebook的这份开源协议使React四面楚歌Facebook的这份开源协议使React四面楚歌

有 React 和 Facebook 的拥趸说,别开玩笑了,Facebook 那么大,也没进中国,谁在乎你啊?那么我们换个举例方式:你用 React 做了个社交产品,在中国年轻人中颇受欢迎;突然有一天 Facebook 入华了,觉得你这产品不错想收购;你抬价,Facebook 起诉你侵权来压价,你和股东们的权益受到侵害,只因为你当初技术选型图了方便。不是所有公司都有 Snapchat 的好运气,更别提 Facebook 内部还有一个工具,用来侦测可能对其业务带来威胁的创业公司,从而方便法务、企业并购和产品、工程部门快速行动。

Facebook 这种许可证模式真的是专利流氓吗?它真的会滥用许可证条款来打压竞争、抑制创新、维护自己的垄断地位吗?

该公司的解释是“纯防守目的”,条款存在只是为了保护自己的核心专利,抑制不必要的诉讼(在美国专利诉讼的确很猖狂,有很多专业专利流氓)。截至目前 Facebook 还没有援引许可证中的条款来主动发起诉讼,没有判例,是否抑制了其他公司的诉讼也尚未可知。“就像加州的科技公司雇佣合同里都有竞业禁止条款,但没见过几家公司真的执行。”iOS 机器学习模型市场 CoreML.Store 的开发者林鸿表示。

中小科技企业,特别是中国公司似乎对此并没有太多的担忧。互联网商业数据库 IT 桔子的 CTO 彭禹斯认为,小公司完全可以继续使用 React,就算陷入最坏的情况,被 Facebook 盯上,更换架构倒也比大公司轻松得多,被收购也可以考虑,“小厂还是抓紧做好业务,做好用户比较靠谱,能否活下来都是个未知呢。”

但也不是所有的小公司都可以放松警惕,比如云端文档工具石墨文档,其 web、iOS 和 Android 移动端都大量应用了 React/React Native 技术。“目前来看这件事不会对石墨文档使用 React 造成影响。”该公司技术总监李子骅告诉 PingWest 品玩,“但我比较担心的是会对 React 社区造成影响,进而影响到(招聘)候选人的数量,以及来自社区的 React 开源项目。”

李子骅表示自己一直在关注 React 许可证事件,内部也进行过是否从 React 迁移到其他技术的讨论,结论是保持现状、观察事态进:“我们是一家比较依赖 React 的公司,所以去 React 化肯定会更艰难一些。”

Facebook的这份开源协议使React四面楚歌Facebook的这份开源协议使React四面楚歌

但到了阿里巴巴、百度这边,它们的个别业务部门都对 React 有着重度依赖,去 React 化的动作就要加快了。因为大公司的法律保护意识强,法务人员众多,考虑到合规风险,它们的工程师不得不和熟悉的技术说再见,加班加点迁移甚至重新开发。一名百度公关人员告诉 PingWest 品玩,百度内部弃用 React 确有其事;知情人士透露,阿里巴巴现在还没有最终通知,但技术决策层多数支持弃用 React。

通过类似用户协议、开源许可证这类法律文书,足以窥见被远大目标和高新科技所遮挡住的,大公司普遍存在的反开放、反创新、坑用户等道德问题。最近一段时间,例子实在太多。

比如,这几天微博就因为用户条款闹得很僵。网友在条款里发现了这样的条文:“未经平台事先书面许可,用户不得自行授权任何第三方使用微博内容”。

事情闹大的导火索是今日头条从挖微博的墙角,找大V去提供内容,并“未经许可”抓取用户的微博内容同步到今日头条上。微博澄清用户条款存在只是为了防御第三方未经许可抓取微博内容,但这仍让用户感觉自己的著作权被侵犯了——毕竟最终解释权在微博那边。

而两周前美国发生的信用评级机构 Equifax 1.4 亿用户资料失窃案,则更为奇葩:因为自己的系统漏洞导致全美一半人口信息遭窃、运行一百年的信用系统面临崩溃的紧要关头,Equifax 依旧全然不在意用户的利益,只想要自保。

该公司推出了一个网站,允许用户查看自己的信息是否失窃,无论失窃与否都会推荐你付费购买一个增值服务,而隐藏在这个服务的用户协议里的是“成为本公司用户必须放弃起诉本公司的权利”这样一条奇葩条款。

Facebook的这份开源协议使React四面楚歌Facebook的这份开源协议使React四面楚歌

对于微博,它完全可以开发第三方可以使用的内容接口和交换协议(类似于 IFTTT),满足那些想要合法合规使用自己创造、自己拥有内容的用户,以及那些希望在多个社交网络上同步内容的用户。它也可以开发一个更好用的微博第三方嵌入组件并推广给其他平台,和其他平台订立盟约确立一个更规范地引用微博内容的格式。遇到竞争先开始造壁垒、建城池的做法,并不体面、高效和开放。更何况内容和使用内容的权利本来就属于用户,从来不应该属于平台。

而 Equifax 用用户协议躲避官司的行为,就属于赤裸裸的道德沦丧。它暴露出这家承担了国计民生重任的美国“私营”公司,并没有像它的广告里所说的那样安全和重视用户的隐私。企业贪婪 (crporate greed) 比用户利益更重要。

在彻底解构哈佛商学院的《金牌通行证》一书中,作者达夫·麦克唐纳(Duff McDonald) 指出,“当学生进入哈佛商学院的时候,他们相信企业的目标是提供产品和服务,增进社会福祉。等到毕业的时候,他们相信实现股东价值最大化才是企业的目标所在。”这并没有错,只是也别太把用户当猴耍。

将“社群”、“连接”天天挂在嘴边的 Facebook,此时就显得有点虚伪了。

Facebook CTO 迈克·施罗夫宣布 React Native,博客服务 WordPress 已经用 React 开发了好几年,上周末决定弃用。其运营公司 Automattic 创始人马特·穆伦维格 (Matt Mullenweg) 在自己的博客里宣布了原因:

Facebook 说了要研究这个问题,研究的结果是保持现状,因为去掉专利条款的话会在法务上浪费资金和时间。这是 Facebook 的家务事,我没什么好说的。

几年前我们用 React 重写了整个 WordPress.com。今年,我们决定用 React 来开发新一代的编辑器 Gutenberg。我甚至准备好了声明和博客,准备好了几千字来夸 React 有多好用,那篇博客不会发出来了。

我们决定换个技术重写 Gutenberg,可能会导致项目进度变慢,明年才能发布;我们也会用最终决定的技术来重写 WordPress.com,可能会花更久的时间。我们的目标是没有任何专利问题,不会让专利风险被转嫁给我们的用户。

大多数人都为穆伦维格的艰难但正确的决策而叫好。

今年 7 月,Apache 软件基金会指出 Facebook BSD+ 专利的许可证模式将风险传递给了下游用户,保护了授权者而非许可者(使用者)的权益,进而违反了 Apache 软件基金会的政策,宣布封杀该许可证模式。至于措施,该组织宣布所有使用 Apache 开源协议的软件都不得使用带有 Facebook BSD+ 专利许可证模式的组件。

作为世界上最大开源社区管理和调解机构之一,Apache 软件基金会的通知在一定层面上代表了开源社区的意见:“不爽”两个大字。Facebook 既想得到开源社区的尊敬和贡献,又想搞非标准许可证保护自己的利益,鱼与熊掌怎能兼得?

在彭禹斯看来,Facebook 的专利许可证和霸王条款差不多。而李子骅倾向于认为整件事背后可能是 Facebook 的法务在主导,并非开源项目在公司内部的主要贡献者和管理者希望看到的。防御专利纠纷的用意可以理解,但站在局外人的角度,他对这种许可方式仍然难以认同,“这种许可方式弊端很明显,大家讨论、担心的核心是 Facebook 侵犯自己的专利。”

华盛顿大学研究助理、深度学习框架 MXNet 的主要贡献者解浚源在知乎上表示:“Facebook 的这个 License 其实开了一个很不好的头。大公司可以通过在开源软件里塞私货来妨碍小公司崛起,进一步巩固自己的垄断地位。个人认为这种污染开源精神的行为很不好,希望 Facebook 能浪子回头,改用 Apache2.0 这种开放友好的 License。”

林鸿则认为:这种做法非常符合 Facebook 的价值观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/198419.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web框架与Django路由层

Web框架 一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…

MicroPython STM32F4 RTC功能使用介绍

MicroPython STM32F4 RTC功能使用介绍 🔖STM32和ESP32 RTC功能差不多,相关篇《MicroPython ESP32 RTC功能使用介绍》📌固件刷可参考前面一篇《STM32刷Micropython固件参考指南》🌿 相关篇《Micropython STM32F4入门点灯》&#x1…

java设计模式 开闭原则

开闭原则(Open-Closed Principle,OCP)是面向对象设计中的一个重要原则,它指导着我们如何设计和组织代码,以便使系统在扩展性和可维护性方面更加优秀。 开闭原则的定义是:软件实体(类、模块、函数…

纵行科技获评“汽车物流行业优秀技术装备供应商”

近日,由中国物流与采购联合会主办,中物联汽车物流分会承办的“2023年全国汽车物流行业年会”在湖北十堰盛大召开。本次年会集合了汽车整车、零部件、售后备件、进出口物流企业和物流装备技术企业、科研机构及院校等,分享汽车物流行业现状、相…

java文件上传以及使用阿里云OSS

JavaWeb 文件上传本地存储阿里云OSS配置文件 yml配置文件 文件上传 前端页面三要素: 表单项type“file” 表单提交方式post 表单的enctype属性multipart/form-data 本地存储 保证上传的文件不重复 //获取原始文件名String originalFilename image.getOriginalFi…

0-1背包的初始化问题

题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维dp数组可以视情况优化为一维dp数组…

Spring Boot 3 + Spring Security 6 最新版本修改 Json 登录后 RememberMe 功能问题失效的解决方案

当 Spring Boot 版本更新到 3 之后,最低要求的 JDK 版本变为 17,相应的 最新版本的 Spring Security 的配置也发生了变化,一下主要讲解一些新的 Spring Security 的配置方法 1. 配置由继承WebSeucrityConfigurerAdapter变成只需添加一个Secur…

人工智能-优化算法之梯度下降

梯度下降 尽管梯度下降(gradient descent)很少直接用于深度学习, 但了解它是理解下一节随机梯度下降算法的关键。 例如,由于学习率过大,优化问题可能会发散,这种现象早已在梯度下降中出现。 同样地&#x…

一款多功能露营专用氛围灯

一、主要功能 使用COB灯丝3D打印构建精妙的螺旋线条露营灯 选用IP5328P作为电源主控,支持双向PD快充,支持PPS档位输出 电池仓结构设计兼容26650(不可更换)或21700/18650(可更换)电池 使用WS2812灯组成顶…

内置函数【MySQL】

文章目录 MySQL 内置函数日期和时间函数字符串函数数学函数信息函数参考资料 MySQL 内置函数 MySQL 的内置函数主要分为以下几种: 字符串函数:用于对字符串进行操作,如连接、截取、替换、反转、格式化等。数值函数:用于对数值进…

【vue】v-model在表单元素上的应用

表单元素&#xff1a; https://blog.csdn.net/m0_67930426/article/details/134655644 使用模板 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head><body>&l…

小程序静默授权获取unionid

文章目录 导文文章重点 导文 小程序静默授权获取unionid 文章重点 用wx.login(Object object)放到app.js里面 wx.login({success (res) {console.log(123);if (res.code) {//发起网络请求// wx.request({// url: https://example.com/onLogin,// data: {// code: res.…

软著项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

linux获得帮助_如何查看命令的用法、作用

Linux获得帮助 多层次的帮助&#xff1a; whatis command --help man and info /usr/share/doc/ Red Hat documentation 、Ubuntu documentation 软件项目网站 其它网站 搜索 whatis 使用数据库来显示命令的简短描述。 [rootlocalhost ~]# whatis rm rm (1) …

基于FPGA的五子棋游戏设计

基于FPGA的五子棋游戏设计 本文基于FPGA设计五子棋游戏&#xff0c;使用按键输入&#xff0c;使用VGA接口输出。五子棋的棋具与围棋相同&#xff0c;棋子分为黑白两色&#xff0c;棋盘为1010&#xff0c;棋子放置于棋盘线交叉点上。两人对局&#xff0c;各执一色&#xff0c;轮…

仿美团外卖源码/在线外卖平台源码PHP/支持多商户+多样化配送费+本土外卖+支持第三方配送

源码简介&#xff1a; 进云仿美团外卖源码&#xff0c;作为外卖平台源码&#xff0c;它不仅支持多商户、多样化配送费、本土外卖&#xff0c;还支持第三方配送。 进云仿美团外卖源码是一个进云源生插件&#xff0c;支持多商户多样化配送费模式本土外卖平台支持第三方配送&…

Unity针对XBOX,SWITCH,PS5手柄的适配踩坑

前言&#xff1a; 记录一点最近在做手柄适配问题的踩坑。 这里推荐一款Unity做手柄适配的插件->Rewired Rewired官方文档链接Rewired Documentation | Supported Controllers Rewired插件里面有个是Player类&#xff0c;这个类获取到当前玩家的输入设备&#xff0c;输入…

蓝桥杯双向排序

这里写自定义目录标题 题目分析代码思路 题目分析 n,m都是 1 0 5 10^5 105 &#xff0c;需要将时间复杂度控制在 n log ⁡ n n \log n nlogn以内。 如果有两次连续的前缀操作&#xff0c;由于它们都是降序排列&#xff0c;等价于只做第二次排列&#xff0c;忽略掉第一次。 同…

Python缺失值处理实现

在数据处理相关工作中&#xff0c;读取的数据中常常会有缺失值的情况&#xff0c;为顺利进行后续的操作&#xff0c;需要首先对缺失值进行处理&#xff0c;处理的方式一般为删除或填充&#xff0c;Python中提供了专门的工具包&#xff0c;可以方便地进行实现。读取操作可以由pa…

2023-简单点-机器学习中矩阵向量求导

机器学习中矩阵向量求导的概念是什么&#xff1f; 在机器学习中&#xff0c;矩阵向量求导的概念主要涉及对函数中的矩阵或向量参数进行求导运算。这种求导运算可以帮助我们了解函数值随参数的变化情况&#xff0c;进而应用于优化算法中。具体来说&#xff0c;当损失函数是一个…
最新文章