React专利许可证研究

几天前,知乎上出来一个热门话题《如何看待百度要求内部全面停止使用 React / React Native?》,一时间被邀请回答的大咖们就展开了这场没有硝烟的战争。主要有正反两方,跟个大辩论赛似的,很是激烈。我顺道总结下:

洗白方

洗白方的论据主要有5点:

协议一直如此,而且本身是防御性的

(1)FacebookReact专利授权是关于分享其代码同时保留它能够抵御的专利诉讼
(2)React本身是开源的,受保护的是React里用到的专利
(3)Facebook不能主动使用React里的专利起诉你,因为这个授权是irrevocable的,除非你主动发起专利诉讼

开源条例太苛刻

ASF (Apache软件基金会)要求开源软件是没有限制的,所以依赖有Facebook's BSD+ Patents license的软件不被允许加入ASF。但也人会说ASF这个开源条件太苛刻,而如果不是ASF的软件没必要遵循这个限制。

程序员过分解读 license

(1)本质上你的软件不是要发布到 ASF 上就不会有问题
(2)只要不与 FB 有专利冲突就不受影响
(3)美国专利不在我国申请的话,不受我国法律保护(Facebook在我国并没有注册React相关专利)
(4)前端库互相抄袭的现象太多,法律和道德界限模糊

分析百度为什么这么做

(1)百度是一家在美国上市的公司
(2)百度有很多核心专利如人工智能 可能在未来和FB有利益冲突

使用替代品依然有风险

(1)vuepreact某些特性对React专利有侵权嫌疑,如weex还在使用Yoga引擎
(2)重构有成本,很多计划要重新部署,周期加长

否定方

否定方的理由很简单,共2个方面:

事实依据

(1)ApacheWordPress、百度纷纷叫停React,其严重性可见一斑
(2)阿里也计划逐步干掉React及其生态圈,准备了RaxVueWeex等替代品

专利风险

(1)如果不想弃用React,那么你不能主动起诉Facebook,期间Facebook可以免费使用你的所有专利(对,是所有)。
(2)如果因此诉讼 Facebook,就失去了使用React的授权(相当于把柄被别人抓住)
(3)React生态圈的东西用的越多,被Facebook扣的把柄也越多
(4)等真到了打官司的时候 完全剥离React难度和成本都很大,那还不如趁早。

陈述

正方双方说的都有一定道理,我先做下客观评论:
(1)Facebook这个专利许可证确实不地道,虽然个人没有和它有利益冲突,但作为公司管理层,站在公司的立场上还是觉得芒刺在背(尽管公司短期内不可能和Facebook会有利益竞争,但梦还是要有的,未来——虽然远,但多一事不如少一事)。

如果公司的核心技术已申请了专利,并且非常有前景的话,而且打算几年内在美上市的,绝壁不能用React及一切生态圈的东西。不管公司React搞得有多6,还是要忍痛割爱,长痛不如短痛(内部系统应该还能用,人家应该也管不着)。

(2)而对于国内一些创业型企业,说实话,真和你没有半毛钱关系。React技术虽然有专利许可证,但Facebook免费让你用,并且React这门框架设计得确实好,没有理由不用啊。

这里也不藏私,我从2015年开始搞React,到现在也算是深度患者,React是我所用过最好的框架,尽管它的全家桶有些不怎么好用,但框架本身的设计真的非常优秀(同意吧)。而且现在主流的几款替代品Preactvue也"借鉴"了不少React的东西,但是前端界"互相借鉴"这种事大家都是笑而不语的(哈哈,这种讨打的话各位自己去脑补吧)。

(3)然后说说对未来的预测,这次风波后,国内React的占有率会有一定的下降,并且会持续下降(蚂蚁金服也作出回应antd会逐步放弃ReactPreact或类似的React替代品方向发展)。

并且阿里的的 RaxVueWeex等技术也在不断推进,干掉ReactReactNative是时间的问题吧(如果Facebook不公开作出承诺不会以React为要挟随意使用其他公司的专利),当然一些小公司和没有对外专利技术的公司还是会继续用React及其生态圈,但屁股决定大脑,随着人才不断从大公司涌出渗透到小公司,React前端一哥的地位岌岌可危啊!

牢骚

想起 程墨Morgan 在 知乎专栏里的几句话:两种公司会从此弃用React,第一是牛逼到足以和Facebook竞争的大公司,第二是装逼到自以为会和Facebook竞争的小公司(感觉我们公司属于第二种,哈哈)

最惨的应该是我,md我的ReactNative三端融合方案刚进行到一半,响应公司高层号召,现在要换成vue + Weex了。不过整理一下发型,想来做为一名卓越的前端工程师,也不能太依赖一门框架,没有React太阳照常升起,说到底还是JavaScript嘛,换个API,换个套路,继续搞起吧 ~_~。

唉,想起那年夕阳下的蹦跑,那是我逝去的青春 ——

参考资料

个人之见,大咖勿喷 ---

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如果组件之中有复用的代码,需要重新创建一个父类,父类中存储公共代码,返回子类,同时把公用属性...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例如我们的 setState 函数式同步执行的,我们的事件处理直接绑定在了 dom 元素上,这些都跟 re...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom 转为真实 dom 进行挂载。其实函数是组件和类组件也是在这个基础上包裹了一层,一个是调...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使用,可能是不了解。我公司的项目就没有使用,但是在很多三方库中都有使用。本小节我们来学习下如果使用该...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接触 react 就一直使用 mobx 库,上手简单不复杂。
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc 端可以使用分页进行渲染数限制,在移动端可以使用下拉加载更多。但是对于大量的列表渲染,特别像有实时数据...
本小节开始前,我们先答复下一个同学的问题。上一小节发布后,有小伙伴后台来信问到:‘小编你只讲了类组件中怎么使用 ref,那在函数式组件中怎么使用呢?’。确实我们...
上一小节我们了解了固定高度的滚动列表实现,因为是固定高度所以容器总高度和每个元素的 size、offset 很容易得到,这种场景也适合我们常见的大部分场景,例如...
上一小节我们处理了 setState 的批量更新机制,但是我们有两个遗漏点,一个是源码中的 setState 可以传入函数,同时 setState 可以传入第二...
我们知道 react 进行页面渲染或者刷新的时候,会从根节点到子节点全部执行一遍,即使子组件中没有状态的改变,也会执行。这就造成了性能不必要的浪费。之前我们了解...
在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。
楼主最近入职新单位了,恰好新单位使用的技术栈是 react,因为之前一直进行的是 vue2/vue3 和小程序开发,对于这些技术栈实现机制也有一些了解,最少面试...
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机...
前面几节我们学习了解了 react 的渲染机制和生命周期,本节我们正式进入基本面试必考的核心地带 -- diff 算法,了解如何优化和复用 dom 操作的,还有...
我们在之前已经学习过 react 生命周期,但是在 16 版本中 will 类的生命周期进行了废除,虽然依然可以用,但是需要加上 UNSAFE 开头,表示是不安...
上一小节我们学习了 react 中类组件的优化方式,对于 hooks 为主流的函数式编程,react 也提供了优化方式 memo 方法,本小节我们来了解下它的用...
开源不易,感谢你的支持,❤ star me if you like concent ^_^
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition api这个关键词,准确的说setup是由...
ReactsetState的执行是异步还是同步官方文档是这么说的setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecom