Elastic近日对其官方Python客户端(Elasticsearch-py)做出了修改,使其无法与各个分支版本相兼容。Elastic开发者向Elasticsearch-py提交了一个PR,增加了一个验证逻辑,限制用户使用Elasticsearch客户端连接到由AWS创建维护的Elasticsearch分支OpenSearch,以及跟AWS相关的Elasticsearch产品和服务,后来又关闭了GitHub上相关的话题讨论。

%title插图%num

AWS如何解决这次“危机”

面对Elastic的“主动出击”。AWS在官方博客中表示:“因为Elastic维护的开源库提供了方便的API接口,所以许多使用Elasticsearch和OpenSearch的开发人员都依赖于Elastic维护的开源客户端。修改后的客户端将无法连接到由AWS维护的Elasticsearch分支OpenSearch,以及一些版本较低的Elasticsearch开源发行版,或是托管到AWS Elasticsearch Service 的Elasticsearch。Elastic公司现在只允许应用程序连接到Elastic的商业产品上。”

不仅仅Elasticsearch的Python客户端出现问题,Elasticsearch的.NET连接器也发生了同样的事情,导致出现诸如“客户端注意到服务器不是Elasticsearch 受支持的发行版”之类的弹窗提示。另一个变化是Elasticsearch的Java客户端也已切换到Elastic License。

随着Elastic不断限制不同编程语言Elasticsearch客户端与OpenSearch产生联系。“OpenSearch 要如何处理当前可用的各种编程语言所对应的多种 connector 和 binding?“这个话题在OpenSearch社区引起了用户的焦虑。

AWS计划将在OpenSearch项目中添加一组新的开源客户端,使应用程序可以轻松连接到任何OpenSearch或Elasticsearch集群。这些客户端将允许开发人员继续运行当前版本的OpenSearch或Elasticsearch。并且用户先前的应用程序代码只需进行较少的更改,新客户端将提供他们与之前版本相同的API接口和功能。AWS计划修改的客户端包括:elasticsearch-py;elasticsearch-java;elasticsearch-net等客户端。

AWS补充到,不建议把Elastic维护的客户端更新到*新版本,因为这可能会导致应用程序中断。任何已更新其客户端并遇到问题的人都可以使用 OpenSearch文档说明,解决这些问题。他们预计在OpenSearch GitHub 组织中为每个新客户端库开放存储库。然后,迅速将客户端发布到所有相应的包管理器和存储库。确保开发人员可以轻松访问开源的Elasticsearch、Open Distro for Elasticsearch和OpenSearch客户端库。

%title插图%num

双方纠纷的由来

Elasticsearch是Elastic于2010年首次发布的分布式免费开源搜索和分析引擎,具有快速实时搜索和可靠稳定的特点。因此Elasticsearch凭借自身的优势获得众多企业的青睐,比如Adobe、Cisco、Netflix和Uber等大型企业,亚马逊的AWS云计算服务也使用Elasticsearch用来存储、搜索和分析大数据。

早在2019年1月21日,AWS曾发布Open Distro for Elasticsearch。Open Distro for Elasticsearch项目是Elasticsearch的增强版本,基于Apache 2.0 100%开源,Open Distro for Elasticsearch包含了Elasticsearch里面的商务付费功能以及Kibana的开源代码。

2021年1月15日,Elastic的创始人Shay Banon官网发文,宣布将更改开源协议,从Elastic 7.11版本开始,Elasticsearch与Kibana代码由原先遵循的 Apache 2.0许可协议调整为SSPL与Elastic License双许可协议。面对Elastic公司更改开源协议的行为,AWS回应称,Elastic这种做法只是为了自己的利益垄断,而且更改开源协议后的SSPL协议丧失了“开源精神”。AWS这样的说法,也让Elastic的创始人Shay Banon在2021年1月20日官网发文怒怼AWS,他们更改开源协议完全是因为AWS的逼迫不得以而为之,同时指责AWS本身的种种恶行。AWS也回应Elastic公司的声明,否认自己威逼Elastic公司,表示自己一系列做法完全是为了创造一个更好的开源社区,也强调自己的做法得到了很多公司的支持。

%title插图%num

业界如何看待这次纠纷

对于这次AWS与Elastic的纠纷,有开发者吐槽亚马逊本身就有“不回报开源”这个标签,而且Redis Labs、Confluent 和 MongoDB 这些公司曾经先后修改了开源协议,并明确表示修改的原因,主要为了避免像 AWS 这样的大型云服务提供商将他们的开源软件进行改版与销售。虽然AWS这次努力为OpenSearch打造成一个”完美的”开源社区,也不易改变人们对AWS的传统印象。

依旧有人认为AWS的行为是在“抢劫”开源项目,也有开发者表示,Elasticsearch属于社区的开源贡献者,Elastic没有权利保留版权,也不应该修改许可协议,他们这样做违背了开源社区的精神。