开源许可证的变更带给我们什么启示?

喜欢就关注我们吧!

近日,Elastic 公司将旗下的知名开源项目 Elasticsearch 和 Kibana 的开源许可证变更的事件持续发酵,再次把我们的目光聚焦到开源公司与云服务厂商之间的矛盾旋涡中。

事实上,Elastic 公司与云服务厂商的“积怨”由来已久。回顾这家全球知名的开源上市公司的发展史,我们可以一窥现代开源软件公司在商业化进程中的机遇与挣扎。

成功

时间回到 2004 年,ElasticSearch 的创始人 Shay Banon 彼时还是一个失业的程序员。Shay 的妻子想要去伦敦学习当厨师,于是 Shay 跟着她来到了伦敦。在待业期间,Shay 打算帮妻子做一个食谱搜索引擎,好让她的厨艺进步更快。 

Shay 最初使用的是开源检索引擎 Apache Lucene 的一个早期版本,但他发现自己直接使用 Lucene 十分困难,为了方便在 Java 程序中直接添加搜索功能,Shay 为其做了一个抽象层,并集成了自己的第一个开源项目 Compass,这就是 Elasticsearch 的雏形。 

后来的工作中,Shay 需要为一个高性能、分布式环境下的内存数据网格开发分布式搜索引擎,他决定重写 Compass,把它变为一个独立的服务并取名为 Elasticsearch。 

Elasticsearch 的第一个公开版本于 2010 年 2 月发布,并一跃成为 Github 上最活跃的开源搜索引擎项目之一,在短时间内迅速吸纳了超过 300 名 contributors 。于是在 2012 年,Shay 专门创立了 Elasticsearch 公司,开始围绕 Elasticsearch 项目提供商业服务,并为项目的新特性开发提供资金支持。凭借将复杂的底层逻辑封装和提供简单易用的 API,Elasticsearch 很快风靡全球,成为很多企业搭建搜索引擎的首选开源软件。 

Elasticsearch 早期的商业化与很多知名开源项目一样,采用内核开源、扩展付费的模式,即项目的基本功能保持开源和免费,而对一些专为企业定制的扩展功能进行订阅收费的模式。2014 年,成立仅 18 个月 Elasticsearch 公司就获得了 7000 万美元的融资,顺利进入发展快车道。 

很快,Elasticsearch 公司在 Elasticsearch 的基础上扩展出了日志解析工具 Logstash 和可视化工具 Kibana,构建了完整的 ELK 日志分析系统产品生态。随后又开发了用于监控的 Marvel、用于安全的 Shield 等商业化插件,并围绕搜索和分析业务陆续收购了一些创业团队。由于公司的主要产品已经从单一的 Elasticsearch 变为完整的搜索、分析业务整合方案,Elasticsearch 公司在 2015 年正式更名为今天的 Elastic。 

凭借成功的开源商业模式,Elastic 公司于 2018 年顺利 IPO,成为一家市值超过 50 亿美元的上市公司。包括 Shay Banon 在内的一众创始团队成员也实现了财富自由。

威胁

前面说到,Elasticsearch 之所以能够从一个单纯的个人项目发展成为一家市值数十亿美元的上市公司,与其成功的开源商业模式密不可分。通过内核开源,扩展付费的方式,Elastic 公司早期从企业客户中赚取了可观的利润。 

然而正是在 Elastic 公司高速发展的时期,以 AWS、谷歌云、微软 Azure 为代表的云服务厂商开始陆续推出基于开源数据库的云服务,对包括 Elastic 公司在内的开源软件公司的商业模式带来了巨大的威胁。 

2015 年,AWS 推出 Amazon Elasticsearch 服务,将开源的 Elasticsearch 集成到自家的云服务中以供客户使用。大量的企业客户购买了这些配套的云服务,使得 Elastic 公司失去了很大一部分市场。据统计,AWS 单单 Elasticsearch 一项服务的收入就已经高于 Elastic 公司的所有收入。 

为了夺回一部分市场,Elastic 公司也尝试将 Elasticsearch 中的一些高级功能改为商用收费模式,以限制云厂商的索取。而 AWS 这边的应对方式则是索性自己分支了一个 Elasticsearch 版本 ,并把 Elastic 收费的模块全部开源。 

除了 Elasticsearch 以外,这些云服务厂商早前也针对 MySQL、PostgreSQL、MongoDB、Redis 等开源数据库项目推出对应的云存储服务,对这些开源项目所属商业公司的付费业务造成了直接的冲击。

变更

正是在这样的背景下,以 AWS 为代表的云服务厂商与一众开源商业公司结下了梁子,迫使后者采取了一些激进的反制行动,包括变更项目原有的开源协议,甚至直接改为商业授权等:

  • 看不惯云计算公司流氓行为,MongoDB 更改开源协议

  • “分叉并商品化”,GitLab 和 Elastic 炮轰 AWS 的开源方法

  • 不想云厂商坐收渔翁之利,Kafka 团队修改 KSQL 开源许可

  • Confluent 修改开源许可证,限制云供应商滥用

  • 不想让云提供商白白获利,Neo4j 宣布企业版彻底闭源

  • MariaDB CEO 痛斥云厂商对开源的无尽掠夺,从不回馈社区

  • 开源软件受云服务商影响,共用条款终止开源滥用现象

  • CockroachDB 修改开源协议,限制商业构建 DBaaS

Elastic 采取的举措则是删除旗下项目 Elasticsearch 与 Kibana 项目原本的 Apache 2.0 许可证,仅保留 SSPL 许可证与 Elastic 商业许可。其中 SSPL 是由 MongoDB 于 2018 年推出的新型许可证。 

2018 年,MongoDB 牵头发布了新的许可证 Server Side Public License,即 SSPL,用于取代原本使用的 AGPL 协议。SSPL 的精神与 AGPL 大体上类似,最大的区别就是针对云服务商提出了更严格的限制:“如果您将本程序或修改版的功能作为服务提供给第三方,则必须根据本许可的条款,通过网络下载免费向所有人提供服务源代码。” 即明确要求托管 MongoDB 实例的云计算公司要么从 MongoDB 获取商业许可证,要么向社区开源其整个服务的代码。 

MongoDB 首席技术官 Eliot Horowitz 表示,由于云计算的出现,开源社区应该重新考虑并更新原有的开源许可证,以“应对新环境中的新挑战”。Horowitz 认为,经过 OSI 认证的传统开源许可证无法限制云服务厂商利用开源项目以 SaaS 的形式来盈利,而 SSPL 就是为此而诞生。

然而,SSPL 并没有获得 OSI 的认可。现代开放源代码定义的合著者、OSI 创始人之一 Bruce Perens 表示,SSPL 协议与 OSI 开放源代码定义的第九条相违背,该定义要求“开源许可证不得限制该开源项目(包括下游分支)以外的其他软件”。但 SSPL 要求云厂商将与 MongoDB 集成在一起的所有 SaaS 软件开源,因此未能通过 OSI 的认证。Bruce 认为,SSPL 实际上背离了开源软件允许人们自由使用、更改源代码,包括从中合理获利的基本定义。

如今 Elastic 公司也采取了与 MongoDB 相同的变更许可证举措,在保持开源与商业化之间面临新一轮的舆论考验。

争议

Elastic 等开源软件公司将旗下开源项目许可证变更的举动在社区中引发了巨大的争议,舆论导向也分成了正反两派。 

支持开源公司变更许可证的一方与这些开源软件公司的观点基本一致:云服务厂商长久以来对开源社区“只索取不回馈”,从开源社区的劳动成果中获得了巨大的利益,同时对开源社区本身的利益造成了损害,确实应该对其加以限制。 

而反面的观点似乎更加丰富。

一些受 Elasticsearch 协议变更影响的下游开源项目首当其冲。比如使用 Elasticsearch 作为存储后端的 Apache Skywalking,其对于 Elastic 变更许可证的回应是“不能再仅使用 Elasticsearch,会考虑其他存储方案,例如同为 Apache License 2.0 许可的 InfluxDB、TiDB 和 H2 Server”。显然,Elastic 擅自变更许可证对于其下游的开源项目来说也算是一种“变节”。 

还有舆论认为,云服务厂商近年来也参与了开源社区的贡献,例如 AWS 分支 Elasticsearch 后做的一系列优化也都回馈给了上游社区,对项目的发展起到了一定的积极作用。此外,以 AWS 分支并完全开源 Elasticsearch 的付费模块这件事来说,这样的做法实际上从项目本身的推广以及社区用户来说都是有益的,而唯一利益受损的似乎只有依靠 Elasticsearch 盈利的 Elastic 公司。 

知名开源产业记者 Scott Gilbertson 表示,Elastic 的做法与其他从开源转为专有的软件在本质上是一样的。“开源的初衷是通过允许最大范围的用户使用你的软件,建立一个最大的社区,让更多地人关注到软件中的错误,同时也让更多的人来修复它们。在这个过程中,社区会变成软件发展的动力。而社区规模的增长会成为市场份额,有时市场份额会变成利润,但这些利润不应该是开源本身追求的东西。”Scott 认为,既然利用开源收获了庞大的社区和市场,就不应该因为外部的竞争压力而改变开源的本质。“如果你基于开源构建了它,在它发展壮大后又将其拿走,这可能比你从未构建过它更糟糕。” 

总而言之,开源公司在法律上拥有擅自更改旗下开源项目许可证的权利,而云服务商基于开源项目提供云服务以及分支开源项目也没有违反现有开源许可证的要求。双方在均未违反“游戏规则”的前提下,各自的出发点都是基于自身的利益。而正是由于双方利益的冲突,造成了一系列许可证变更的事件。

启示

既然涉及到利益,那么事件的双方也就不是简单的非黑即白了。 

开源软件公司面对来自云厂商的市场竞争压力,采取变更开源许可证的方式来自救无可厚非,但确实也伤害了包括下游开源社区在内的开源软件用户;云厂商通过分支开源项目,并将优化的代码回馈到上游社区,对社区和用户来说是有益的,但将开源项目以 SaaS 的方式获利也确实威胁到了原生开源公司的生存。 

以现有的案例来看,有没有一些相对较好的解决方案能够带给我们一些启示呢? 

从开源软件公司一方来看,CockroachDB 采用的解决方式就挺有意思。CockroachDB 是开源的云原生 SQL 数据库,为了扼制云服务厂商的索取,同时又保持项目本身的开源理念,其官方采用了一种介于闭源和开源之间的许可证 —— BSL 。BSL 是 MariaDB 公司提出的一个新型许可证,它本质上是闭源和 Open Core 开源模式的“中间模式”,但也得到了 OSI 创始人 Bruce Perens 的认可。在 BSL 之下,源码始终是自由的,并且保证在某个时间点会变成“真的”开源(OSI 定义的开源),表现在 CockroachDB 中是版本发布三年后会自动切换为 Apache 2.0 许可证。 

在该协议之下,CockroachDB 用户可以将 CockroachDB 扩展到任意数量的节点,可以使用 CockroachDB 或将其嵌入到他们的应用中,无论是将这些应用分发给客户还是将其作为服务运行,甚至还可以在内部将其作为服务运行。但是唯一不能做的是在没有取得授权的情况下以商业形式用 CockroachDB 提供数据库即服务(DBaaS)。 

这种附带“延时属性”的开源许可证在阻止云厂商利用开源项目获利的同时,也确保了下游开源项目不受影响,且项目源代码会在一定时间后完全开源,是业内目前比较看好的一种解决方案。

当然,也有像 Red Hat 这样已经做大做强的开源软件公司,索性自己也推出云服务,“打不过就加入”也是一种解决方案。 

而从云厂商一方来看,为避免类似的争端,将资源投入到更加中立的第三方开源软件基金会是现阶段的趋势。

由专业的开源基金会管理的项目通常在开放治理方面做得更好。一方面是开源基金会由多家厂商共同参与,各方能够在互利互惠的前提下制衡发展,实现合作共赢;另一方面,由开源基金会管理的项目在版权上也更加中立,变更许可证往往需要经过社区内部各方的严格评审投票通过才可进行(通常不会轻易变更许可证),这样的开源项目在开放治理的模式下拥有更加广阔的市场前景。 

如今主流的开源基金会如 Apache 软件基金会、Linux 基金会、CNCF 等,旗下的很多项目都不乏来自各大云厂商的重要贡献,正是得益于包括云厂商在内来自各方的大力支持,这些基金会的开源项目社区才能够发展得非常好,比如 Linux Kernel、Kubernetes 等。 

开源软件发展到今天,已经客观形成了一个巨大的开源产业生态,参与者有云服务大厂,有基于各开源项目的创业公司,也有千千万万对开源充满热情的个人开发者和用户,每一个参与者都是不可忽视的。云厂商有自己的盈利模式,开源软件公司也有自己的生存法则,在不伤害个人开发者和用户的前提下,平衡各方的利益和谐发展,是未来整个开源世界需要长期思考和探索的重要课题。

参考链接:

https://www.oschina.net/news/126717/es-n-kibana-licensing-change

https://arstechnica.com/information-technology/2019/10/is-the-software-world-taking-too-much-from-the-open-source-community/

http://www.ruanyifeng.com/blog/2019/06/open-database-relicensing.html

https://www.oschina.net/news/107241/cockroachdb-relicensed

https://opensource.org/docs/osd

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

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

相关文章

as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。

Ⅰ、在GitHub Desktop上登陆账号GitHub Desktop上只能用GitHub账户登陆第一次打开GitHub Desktop使会直接有登陆界面出现的,直接用GitHub的账户登陆就好了可以在最上方的菜单,File → Options打开页面登陆 (详细操作见图)这是已经…

有人问我:程序员要供祖师爷的话该供谁?

有人问我:程序员是不是都抽烟? 我想了半天我抽烟完全是因为医生,在我刚上大学的时候还不会吸烟,有一天嗓子特别疼,我就去医院检查,大夫检查之后对我说,没什么太大毛病,你少抽点烟就行…

java父类转子类_java中什么是继承,和继承的接口的关系?

继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相…

VSCode+BeetleX.VueHost开发Vue应用

BeetleX.VueHost是一个用于打包Vue和提供HTTP服务的程序,它能提供在没安装vue-cli和webpack的情况下开发vuejs应用。使用 BeetleX.VueHost无须安装下载运行即可,可以通过以下地址下载:链接:https://pan.baidu.com/s/1z4Jfz…

8 无法识别raid盘_王者荣耀防沉迷规则再升级;未来将采用人脸识别验证

昨天,《王者荣耀》官网发布了《未成年人防沉迷新规接入公告》,这份公告对于未成年人的可游玩时长、充值金额等都做出了规定。规则规定:在游玩时长方面,未成年用户每日22时至次日8时禁玩,法定节假日每日限玩3小时&#…

干货|MIT线性代数课程精细笔记[第二课]

0前言 MIT线性代数课程精细笔记[第一课]笔记见MIT线性代数课程精细笔记[第一课]。 该笔记是连载笔记,希望对大家有帮助。 1知识概要 这一节中我们介绍一下消元法,即是上一节中我们提到的“系统化”求解方程所用的方法,通过矩阵消元运算可以很…

在以下说法错误的是_外行人对翡翠有哪些错误认知?行家给你最精准的答案

玉石行业虽然在我们国家有着很悠久的历史!但是就行业认知而言,仍然属于小众行业。正所谓隔行如隔山,在很多外行人眼里,翡翠行业很神秘,而且水也很“深”!甚至很多人认为这个行业“三年不开张,开…

参加美赛,需掌握这些算法和模型

昨天晚上的直播甚是精彩 方同学不但分享了 获奖论文、解题技巧 还分享了 赛前准备、比赛经验和日程规划 po几张截图让大家感受下 此时此刻可能会有不少童鞋 正在为错过直播而懊悔 不用担心 超模君又准备了一份豪华大礼 本周 超模君特意邀请到 今年美赛A题特等奖获奖者 徐乾同学…

yii 使用 有赞sdk_有赞ABTest系统:数据驱动增长实践

‍‍点击关注“有赞coder”获取更多技术干货哦~作者:子固部门:数据中台一、背景有赞是一个商家服务公司,致力于帮助每一位重视产品和服务的商家成功。随着移动互联网的流量增长红利渐渐褪去,商家获得新的流量越来越困难…

分布式数字签名令牌TokenProvider

在分布式系统中,令牌签发系统往往需要跟令牌应用系统分离,并且应用系统可以独立验证令牌,无需请求签发系统接口。数字签名令牌属于发明专利《基于令牌协议的令牌组网构建方法》(已授权专利号201510213377.X)的一部分&a…

热力地图高德_高德地图:最新动态

高德地图是国内最专业的手机地图,超过3.2亿用户在使用!高德地图是应用商店上数据准确率最高、最省流量、躲避拥堵功能最强大的手机地图,平均每天为用户省油61万升!高德地图今日宣布上线货车导航功能,帮助全国3000万货车…

有效处理 Java 异常三原则

Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮、易于调试。 异常之所以是一种强大的调试手段,在于其回答了以下三个问题: 什么出了错? 在哪出的错? 为什么出错? 在有效使用异常的情况下&#x…

人口危机 资本剥削导致生育率低迷

不久前,相关部门公布数据,2020年出生并已经到公安机关进行户籍登记的新生儿共1003.5万。对此,铁流先不做评论,我们先看数据。以下是1949年和1981年以来人口出生情况:1949年: 1275万......1981年:2064万1982…

连不上网_手机连不上网?四种方法教你如何解决,建议收藏以备不时之需

随着科技的进步,现在家家户户大街小巷都是Wifi信号,所以无线基地已经成为生活中不可缺少的一环,但也因为这样无线干扰的情况,常常听到有人抱怨怎么无线又突然断线啦?我的wifi又连不上了?为什么无线上网速度…

关于机器学习,你应该至少学习这8个落地案例|干货集锦

机器学习、深度学习、强化学习、迁移学习,这些你到底了解多少?各种深度学习框架如TensorFlow、Caffe、MXNet等又该如何选择?如何将机器学习整合到正在开发的应用中?机器学习在金融、电商、外卖、教育等领域有哪些落地案例&#xf…

c++经典编程题_全国青少年软件编程等级考试C语言经典程序题10道十

全国青少年软件编程等级考试C语言经典程序题10道十【程序91】题目:时间函数举例11.程序分析:2.程序源代码:#include "stdio.h"#include "time.h"void main(){ time_t lt; /*define a longint time varible*/lttime(NULL)…

使用SQL Server分区表功能提高数据库的读写性能

首先祝大家新年快乐,身体健康,万事如意。一般来说一个系统最先出现瓶颈的点很可能是数据库。比如我们的生产系统并发量很高在跑一段时间后,数据库中某些表的数据量会越来越大。海量的数据会严重影响数据库的读写性能。这个时候我们会开始优化…

回顾周杰伦17年间的歌词,才知道他都唱了些什么

每当提到周杰伦的歌时,你首先会想到的是什么呢?双截棍?中国风?还是是方文山?或者更会有人回答说:根本听不清的歌词…… 回想起来,周杰伦的歌可以说陪伴了我们一代甚至是几代人的成长。无论是《晴…

最近公共祖先_[LeetCode] 236. 二叉树的最近公共祖先

题目链接: https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree难度:中等通过率:57.2%题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:"对于有根树…

开启事物_《原神》全新角色甘雨登场 「浮生孰来」活动祈愿开启_新闻资讯_最新手游时评_原创手游资讯...

璃月地区的方方面面,都由「璃月七星」治理。由他们决议得出的策略牵动着市场的走向,因此每一条都要慎重再三。而会议之后,是谁摘录出要点,编入长长的条例中的,人们便不得而知了。璃月的千头万绪,就是这样被…