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.mzph.cn/news/179764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电力智能化系统(智能电力综合监控系统)

电力智能化系统是一个综合性的系统,它利用物联网、云计算、大数据、人工智能等技术,依托电易云-智慧电力物联网,采用智能采集终端和物联网关,将电力设备、用电负荷、电力市场等各个环节有机地联系起来,实现了对电力配送…

【Java】使用 IDEA 快速生成 SpringBoot 模块

项目目录下新建 module 模块 在 pom.xml 更改为 spring initializr 配置之后的 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchem…

P9240 [蓝桥杯 2023 省 B] 冶炼金属(比值问题)

数学分析&#xff1a; 1. max(最大比值) A/B 余数p&#xff08;p<B&#xff09; > Amax*Bp 反证&#xff1a;若max不为最大,则设maxn为最大比值 (maxn)*Bmax*Bn*Bp1 > A (n*Bp1 > p ,矛盾) 故max为最大比值 2.min(最小比值…

多个nginx共享值、缓存问题

背景 目前我在集成登录认证功能&#xff08;cas&#xff09;&#xff0c;使用的架构是nginxlua&#xff0c;由于我们有多个系统&#xff08;全是前端项目&#xff09;&#xff0c;每套系统都采用nginxlua的方式进行部署&#xff08;即每个系统都是一个nginx&#xff09;&#…

Joint Bilateral Upsampling

Abstract 图像分析和增强任务&#xff08;例如色调映射、着色、立体深度和蒙太奇&#xff09;通常需要在像素网格上计算解决方案&#xff08;例如&#xff0c;曝光、色度、视差、标签&#xff09;。计算和内存成本通常要求在下采样图像上运行较小的解决方案。尽管通用上采样方…

机器学习常用距离度量方法

机器学习常用距离度量方法 前言一、前期准备二、距离度量方法1. 欧氏距离2.曼哈顿距离3.切比雪夫距离4. 闵可夫斯基距离 总结 前言 机器学习中往往通过度量来研究不同样本或数据集之间的差异性&#xff0c;合适的度量方式可以显著提高算法的准确率&#xff0c;因此在接下来的内…

Unity工具脚本-检测资源文件夹是否有预制件是指定层级

效果&#xff1a; 先在菜单栏里面找到Tools/CheckPrefabLayers打开窗口 代码&#xff1a; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine;public class CheckPrefabLayers : EditorWindow {public in…

【EI会议征稿】第三届航空航天工程与系统国际研讨会(ISAES 2024)

第三届航空航天工程与系统国际研讨会(ISAES 2024) 2024 3rd International Symposium on Aerospace Engineering and Systems 第三届航空航天工程与系统国际研讨会将于2024年3月22-24日在南京召开&#xff01;会议紧密聚焦“航空航天工程”领域的热点和难点问题&#xff0c;…

MT8390(Genio 700)安卓核心板_MTK联发科工业AI主板Linux开发板

MT8390 (Genio 700) 安卓核心板是一款高性能边缘人工智能物联网平台&#xff0c;尺寸仅为45452.2mm。该平台提供高度响应的边缘处理、先进的多媒体功能、各种传感器和连接选项&#xff0c;同时支持多任务操作系统。 Genio 700处理器拥有PS APU性能&#xff0c;高效的芯片内人工…

c++day1

提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string str;cout << "请输入一个含有大小写字母&#xff0c;空格&am…

java学习part19接口

113-面向对象(高级)-接口的使用_哔哩哔哩_bilibili 1.接口概念 个人认为是一种能力&#xff0c;某个类是否具有某种能力。一个类实现了一个接口就相当于学会了某些功能。 2.使用 接口里的属性都是全局常量public static final&#xff0c;即便不写也会自动加上。 3.多实现 4.接…

Day41 使用listwidget制作简易图片播放器

1.简介 使用QlistWidget实现简易图片播放器&#xff0c;可以打开一个图片序列&#xff0c;通过item的单击事件实现图片的切换&#xff0c;通过设置list的各种属性实现图片预览的显示&#xff0c;美化滚动条即可实现一个简易图片播放器。 2.效果 3.实现步骤&#xff1a; 1.初始…

【沐风老师】3DMAX拼图建模工具MaxPuzzle2D插件使用方法详解

MaxPuzzle2D拼图建模工具使用帮助 MaxPuzzle2D拼图建模工具&#xff0c;拼图建模“彩虹系列”插件&#xff0c;是一款用MAXScript脚本语言开发的3dMax拼图建模小工具&#xff0c;可以创建2D或3D的拼图图形阵列。这让需要拼图建模的设计师大大节省了时间。 MaxPuzzle2D工具界面&…

REST-Assured--JAVA REST服务自动化测试的Swiss Army Knife

什么是REST-Assured REST Assured是一套基于 Java 语言实现的开源 REST API 测试框架 Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into t…

解决ssh使用public key远程登录服务器拒绝问题

目录 使用场景windows安装ssh客户端使用powershell ssh登录服务器生成密钥文件ubuntu ssh服务器配置使用vscode远程登录使用Xshell远程登录使用MobaXtem远程登录Server refused our key问题解决方案 使用场景 使用vscode远程ssh登录使用public key不需要输入密码,比较方便. w…

JSP forEach标签varStatus使用讲解(了解即可 基本用不到)

上文 JSP迭代标签之 forEach循环标签 基本使用讲解 我们讲了一下forEach标签 大多数时候会用的语法 但是varStatus 没有讲到 因为我觉得这个东西 做个了解就好了 如果你不感兴趣都可以不看 因为感觉开发中基本是用不到的 但是 官方有提供 我还是说一下 当前遍历的基本信息 包括…

易点天下携AIGC创新成果KreadoAI亮相数贸会,解锁电商文化出海新可能

11月27日&#xff0c;第二届全球数字贸易博览会&#xff08;以下简称“数贸会”&#xff09;在浙江杭州完美落幕。作为出海营销领域最早一批布局AIGC战略的营销科技公司&#xff0c;易点天下受邀与来自全球800余家境内外数字贸易企业同台参展&#xff0c;并分享了旗下AIGC数字营…

物理世界中的等距3D对抗样本

论文题目&#xff1a;Isometric 3D Adversarial Examples in the Physical World 会议&#xff1a;NIPS 2022 点云&#xff1a; 点云——表达目标空间分布和目标表面特性的海量点集合&#xff0c;点包含xyz坐标信息 能够包含颜色等其他信息 使用顶点、边和面的数据表征的三维…

openwrt配置SSL证书实现https加密访问

前言&#xff1a;目前来看这个用处不是很大&#xff0c;因为只能访问一个端口&#xff0c;且因为80和443都已经被运营商封了&#xff0c;所以访问时还是得带端口。以下以阿里云证书为例&#xff1a; 一、申请证书 这个很简单&#xff0c;不想去截图了&#xff0c;直接去申请你…

带残差连接的ResNet18

目录 1 模型构建 1.1 残差单元 1.2 残差网络的整体结构 2 没有残差连接的ResNet18 2.1 模型训练 2.2 模型评价 3 带残差连接的ResNet18 3.1 模型训练 3.2 模型评价 4 与高层API实现版本的对比实验 总结 残差网络&#xff08;Residual Network&#xff0c;ResNet&#xff09;…