Facebook React.js BSD + PATENTS的常见问题与Apache Software Foundation的许可问题

(今天,我们正在就Shane Curcuru采访Facebook的React.js软件的BSD + PATENTS文件许可证所报告的最新问题,以及Apache Software Foundation(ASF)对此所做的一切。Shane担任ASF的领导职务,但他想让您知道他只是在这里讲话;这并不代表ASF的正式立场。)

更新: Facebook已获得MIT许可,已获得React.js以及其他一些软件的许可,而没有FB + PATENTS文件。 总的来说,这是个好消息!

您好,欢迎接受我们的采访,内容涉及Facebook的React.js软件最近的许可问题以及定制许可,包括 Facebook用于该软件 定制PATENTS文件

您可能最近看到了讨论,或者是在 使用React时否定启动 失败 ,或者注意到这是一个老问题,只是纸老虎。 让我们尝试使问题更清晰,让您获得一些易于理解的信息来做出自己的决定。 首先,Shane,您能否简要描述一下当前的新闻炒作是什么? 这是新问题还是旧问题?

嗯,就像许可方面的许多事情一样,细节很复杂,但是总体情况很简单。 总体而言,当前的新闻炒作仅与ASF的政策有关,并不直接影响其他任何人。 最近的更改是对已经在Apache上的项目进行的,即使更改也需要一段时间才能实现。

我很困惑-这不是React.js项目许可的新变化吗?

不,实际上-Facebook的React.js项目已经使用了该许可证(通常称为BSD + PATENTS,但实际上是Facebook专用文件),因此,此特定PATENTS文件的潜在问题已经很久了。 由于ASF对其许可政策进行了更改,因此现在才引起注意。 上个月的当前更改是声明,对于Apache项目,Facebook在React.JS软件上使用的自定义PATENTS子句现已正式出现在Apache项目中可能未附带的许可证的“ Category-X”列表中。

因此,新闻是关于以下事实:Apache项目将不再在其源代码或发行版中包含React.js。 这是一项政策更改,仅影响Apache项目,但是显然,它已经获得了一些新闻报道,并且吸引了许多开发人员真正回过头来并关注React的许可问题。

除非它是X-Files参考,否则许多读者可能不理解“ Category X”的含义。 您能否进一步说明ASF如何确定Apache项目中可接受的软件许可类型?

很好的问题是, 类别X是ASF的软件许可术语,根据ASF 策略 ,它可能不会出现在Apache软件源存储库或软件发行版中。 这是ASF的一项运营决策,并不意味着各种许可证都与Apache 2.0许可证不兼容-只是ASF不想使用这些许可证来发布代码。

理由是:ASF希望吸引最大数量的入站捐款。 因此,对于所有ASF软件,我们都使用许可的,并且有人说是“业务友好”的Apache许可。 这为使用Apache软件的人提供了最大的自由,他们可以根据自己的意愿进行操作,包括制作专有软件。 这种期望是Apache品牌的一部分:当您从ASF获得软件产品时,您就知道从许可中可以获得什么。 除了不起诉我们并且不使用Apache商标外,唯一的真正限制是, 如果您基于Apache 2.0许可的软件进行重新分发,则包括许可证。

ASF列为X类的许可证增加了对软件最终用户的使用限制,这超出了Apache 2.0的要求。 最明显的例子是GPL * Copyleft许可证,该许可证要求再发行者提供根据GPL公开进行的所有更改。

好的-X类不是法律上的不兼容性决定,这只是ASF做出的政策选择? 那正确吗?

非常正确。 其他人可以自由地以各种方式混合使用许可证-但是ASF 选择不重新分发软件,而不是使用比Apache 2.0更严格的许可证。 因此,当您下载Apache产品时,它不会像React那样包含X类软件-但您可以随意将Apache产品与React混合使用。

今天没有随React一起提供的一些Apache项目,例如CouchDB?

是的-CouchDB和其他一些项目一样,目前在其树状结构和以前的版本中包括React。 这些项目将(通过NOTICE文件或博客文章)警告用户其发行版包含限制性更强的许可软件,并正在计划重新设计内容以删除React并将其替换为限制性较弱的其他许可库。

在您问之前,是的,这对Apache的志愿者项目来说是额外的工作,而且ASF并非轻率地做。 但是,确保Apache项目具有干净的IP,该IP不包含超出众所周知的Apache 2.0许可证要求的许可限制,这对于各地广泛接受Apache软件至关重要。

因此,如果最近ASF政策的更改仅影响Apache项目,为什么这些天在科技界引起如此大的关注?

因为ASF政策公告已经使一些人回过头来,真正查看了React中使用的Facebook自定义BSD + PATENTS文件许可证。 这是一件好事–您应该始终了解所使用软件的许可证,以便您遵循这些许可证–这样以后您就不会再感到惊讶了,就像现在一样。 使用React的人已经受此许可的约束,只是直到现在许多人才研究详细信息。

关于开源参与者如何决定是否要在这里接受Facebook的许可,这里有两个概念性问题。 首先是添加Facebook的自定义编写的PATENTS文件。 简而言之,它指出,如果您针对(几乎所有)专利问题起诉Facebook,您将失去对Facebook专利的许可。 第一个问题是,此专利终止条款(有相当数量的许可)是严格的排除条款。 授予的权利的平衡(或如果您提起,则被剥夺了)在很大程度上作为实体的Facebook。 Apache 2.0许可中的专利终止权并不是更为平均的平衡。

专利权的不对称是个问题:当围绕React的专利诉讼发生时,它直接将Facebook的利益置于所有人的利益之上。 当然,还有很多细节需要解决,但是对于这些问题,您需要询问自己的律师-我只能说,对于开源项目而言,这是极少发生的问题,如果有的话。

因此,Facebook BSD + PATENTS文件许可证偏爱Facebook,即使它们是一个需要您贡献的开源项目。 我们有所了解; 专利总是很棘手,但与其他许可相比,那里的权利不对称确实有些奇怪。 您说有两个概念性问题?

第二个概念性问题更容易解释。 Facebook BSD + PATENTS文件许可证不在开源许可证的OSI列表中。

(暂停)嗯,是吗? 关于OSI批准的真正问题是什么?

是的,这是问题的核心。 进入OSI名单是巨大的。 公认的“开源”定义是OSI列出了您的软件许可证。

OSI上市之所以如此关键,是因为许多公司中有足够的律师对OSI上市许可进行了审查,生态系统知道该如何期待。 OSI享有很高的声誉,因此从一开始,人们就基本知道对OSI列出的许可证的总体许可会有什么期望。 更重要的是,这些许可已被众多公司的律师反复审查。

风险管理是许多法律工作:确保在开展业务或使用许可证时保留您的权利。 OSI列出的许可证是众所周知的,因此律师可以快速而自信地表达使用它们的风险等级。 非OSI许可证意味着律师必须详细阅读它们,并对风险进行全新的全面审查。 这不仅是工作,还包括不确定性以及一些新事物,通常会转化成这样的说法:“新许可证的风险比那些使用良好的许可证更大。”

现在,我明白了– OSI许可证很受欢迎并且经常被审查,因此人们对此感到满意。 一个新的许可证(例如Facebook PATENTS文件)可能不错,但可能还不错,人们对此还不太了解。

非常正确。 对于想与开放源代码组合作的公司使用非OSI列出的许可证,我想不出任何充分的理由。 人们一直在这样想,但是许可证的增加并不值得。 成功的开源项目需要来自各个地方的新贡献者。 像普通许可证一样,降低进入门槛是将用户转变为潜在贡献者的最简单方法之一。

如果Facebook PATENTS许可证异常罕见,以至于无法关闭其他项目(例如Apache)的使用,那么Facebook为什么不考虑将许可证更改为OSI批准的许可证?

这是您需要问Facebook的问题。 ASF已经要求Facebook考虑更改许可证,他们拒绝了。 Facebook还为他们的许可撰写了一个解释器,该许可已被广泛共享。

我们有一个听众问:Facebook PATENTS许可证是否具有病毒性? 也就是说,如果您在软件中使用React.js,是否必须使用相同的Facebook PATENTS许可?

不,PATENTS子句不是“病毒”,或者不是copyleft。 因此,您可以在编写的任何使用或包含React.js的软件上自由使用所需的任何许可证。

请注意,Facebook仍在向使用React.js软件的任何人提供实际的专利授权,即使它在您的软件项目中也是如此。 PATENTS条款适用于运行React.js软件的任何人,并且在Facebook和所有最终用户之间。 因此,该专利许可问题不会直接影响您作为应用程序构建者,但可能会影响您的用户。

太好了,在这次采访中我们涵盖了很多方面。 读者应该了解的其他信息是什么,这样他们就可以对React周围的许可风险做出自己的决定-这些风险一直存在,但他们可能还不了解。

TL; DR:唯一的短期问题是您是否正在考虑将项目捐赠给Apache。 如果是这样,请立即开始计划从React迁移,因为您将无法随身携带它。

对于其他所有人,这在短期内不是问题。 从长远来看,这是您应该考虑所有变化的所有方面的决定:法律风险(可能较低,但它是专利的,所以谁知道),技术(那里有数项替代品,但还没有那么强大)反应)和社区(您拥有什么开发能力,您的贡献者社区是否在意?)

我写了一份简短的指南,介绍了在较早决定使用或不使用React的法律,技术和社区方面。

另外-如果您对此有强烈意见,请让人们-和Facebook-知道! 我不得不说,当Facebook拒绝ASF的重新许可请求时,一些开源类型感到非常惊讶。 Facebook有一些很棒的开源项目,包括一些开放治理项目。 我个人有些奇怪,他们没有使用OSI许可证来进行此类操作。

感谢您阅读和Shane采访Shane,了解React许可问题! 无论您选择哪种许可证,都可以为您的项目带来好运。

有关React许可的更多信息

ASF会发布其许可政策,包括X类列表,以及在Apache上制定有关许可政策的一些基本原理。

更新! WordPress背后的公司Automattic将远离React:

“我们将寻找具有React大部分优势的产品,但不会因为专利条款的繁琐而使许多人感到困惑和威胁

Simon Phipps的时间表和有关Apache如何将PATENTS许可证移至Category X列表的讨论:

阿帕奇禁止Facebook的许可证组合

关于Medium的一个受欢迎的帖子集中讨论了CTO,并持平衡的观点,包括讨论了Facebook和Yahoo!之间的一项专利诉讼:

https://medium.com/@ji/the-react-license-for-founders-and-ctos-b38d2538f3e5

工程师的角度详细(长期)讨论“这对我的项目意味着什么”:

头脑风暴:“ Facebook的BSD-3 +强大的专利报复”许可引起的笔记和问题
这是一份实时文档,我将继续根据需要对其进行更新。

Apache CouchDB开发人员对React和许可证的看法:

了解Facebook与Apache Software Foundation许可Kerfuffle
翻译:法语@gnieh_免责声明:我不是律师。 我不是在说Facebook,ASF或CouchDB。 这个… Writing.jan.io

如果您是初创公司,则不应使用React(社区/启动方面):

如果您是一家初创公司,则不应使用React(请参考BSD +专利许可)
也就是说,如果您曾经希望被更大的公司 medium.com 收购

不要过度反应Facebook专利许可(法律方面)

不要过度反应Facebook专利许可
最近,Apache根据Facebook的“ BSD + Patents”许可将代码重新分类为“ Category X”,从而实际上禁止了该代码…… blog.fossa.io

为什么Facebook专利许可是纸老虎(法律方面)

React,Facebook和可撤销专利许可。 为什么是纸🐯。
更新:有关底部的Preact / Vue / Inferno使用的更多信息

为什么Facebook专利许可被误解了-Simon Phipps的早期解释,为什么PATENTS许可对开源生态系统不利

Facebook的React许可被误解的5个原因
Facebook的BSD + Patent许可证组合之所以失败,并不是因为许可证本身,而是因为它忽略了……的深层性质。