AWS 从 Elastic“抢”来的开源替代品 OpenSearch,成功了吗?

2021 年初,开源搜索和数据分析引擎 Elasticsearch 背后的母公司——Elastic 宣布变更 Elasticsearch 和 Kibana 的开源许可证,将原本的 Apache License 2.0 变更为双授权许可,即 Server Side Public License (SSPL) + Elastic License,两者都不是符合 OSI 定义的开源 License。

SSPL 是 MongoDB 设计的许可证,它基于 GPLv3,被认为是 Copyleft License,其核心条款是 “如果将程序的功能或修改后的版本作为服务提供给第三方,那么必须免费公开提供服务源代码”。

Elastic License 是非商业许可证,核心条款是如果将产品作为 SaaS 使用则需要获得商业授权。

当时 Elastic 公司称此举主要是限制云服务提供商(如 AWS)在没有回馈的情况下将 Elasticsearch 和 Kibana 作为一项服务提供给他人使用,以保护 Elastic 在开发免费和开放产品方面的持续投资。但变更许可证也意味着 Elasticsearch 和 Kibana 不再是真正的“开源软件”(OSI 定义的开源)。

145324_tHsk_2720166.png

随后,AWS 宣布创建了一个自称真正开源的 Elasticsearch 分支——OpenSearch,并获得了包括红帽、SAP、Capital One 和 Logz.io 等在内的多个组织和厂商的支持。

135104_sTkQ_2720166.png

OpenSearch 是一个由社区驱动的开源搜索和分析套件,包括企业安全、异常检测、告警、机器学习、SQL、索引状态管理等功能,fork 自 Apache License 2.0 许可的 Elasticsearch 7.10.2 和 Kibana 7.10.2。它由一个搜索引擎守护程序 (OpenSearch)、一个可视化和用户界面 (OpenSearch Dashboards) 以及 Open Distro for Elasticsearch 的高级功能组成。

AWS 介绍称,他们推出的 OpenSearch 删除了 Elasticsearch 中受 Elastic 商业许可证限制的功能、代码和商标,以兼容 Apache License 2.0,自称这是每个人都可以构建和创新的基础,任何人无需签署 CLA (Contributor License Agreement) 即可为项目贡献代码。

当时有人认为 AWS 的行为是在赤裸裸地 “抢劫” 开源项目,但也有人认为 Elastic 从最初的变更开源协议,到后面限制用户正常使用客户端,不仅违背了开源精神,更是有拿用户当做筹码的意味。

现在距 OpenSearch 诞生已经两年了,这个基于 Elasticsearch 的开源分支取得了怎样的成绩?

根据 OpenSearch 年初发布的年度报告,截至 2022 年底,OpenSearch、OpenSearch Dashboards 和客户端库的总计下载量已突破 1 亿,共有 496 名贡献者提交了 8760 次 PR。

BigData 博客近日也对 OpenSearch 和 Elasticsearch 进行了详细的对比对比项包括 repo 的提交数量、功能、许可证和限制等

他们计算了自 2021 年 4 月 22 日以来两者在 master/main 分支上所做的提交(统计数据于 2023 年 4 月收集)。统计结果显示,Elasticsearch 仓库有将近 2 万次提交,其中 6 千次提交到 Elasticsearch 核心("server"文件夹),还有一些提交到附属模块。

# total commits in repo since fork
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' | wc -l
19527
# total commits to the main codebase (server folder) since fork
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- server/ | wc -l
6130
# total commits to main modules (various surrounding functionality not under x-pack) since fork
# https://github.com/elastic/elasticsearch/tree/main/modules
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- modules/ | wc -l
1437
# just as means of comparison, the amount of work made on x-pack features is not negligible
➜  elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- x-pack/ | wc -l
7294

对比 OpenSearch,它提交到核心的代码量大约是 Elasticsearch 的 1/3,重要模块则大约是 1/14,这些模块包括脚本语言、重新索引功能、提取管道处理器等。

➜  OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' | wc -l           
3727
➜  OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' -- server/ | wc -l
1966
# total commits to main modules (surrounding functionality not under x-pack) since fork
# https://github.com/opensearch-project/OpenSearch/tree/main/modules
➜  OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' -- modules/ | wc -l
470

因此,与 Elasticsearch 发布的版本(主要和次要)相比,OpenSearch 发布的版本更少。

功能方面,OpenSearch 和 Elasticsearch 在基本功能和性能上没有太大的差异。虽然 Elasticsearch 提供了更丰富的功能,但需要客户额外付费,某些类似功能 Elasticsearch 收费 OpenSearch 则免费提供。

企业采用方面,Adobe 决定在 Adobe Commerce 套件中用 OpenSearch 取代 Elasticsearch。此外,OpenSearch 已进入 DB-Engines 数据库流行度排名前五十。

因此有观点认为,基于 Elasticsearch 的开源分支 OpenSearch 在某种意义上取得了成功。


上文提到了对 Elasticsearch 和 OpenSearch 各自 repo 的提交数量进行对比,该数值从某种程度上反映了项目的活跃情况,但整体来看比较片面。

下面是通过 OSS Compass 对 Elasticsearch 和 OpenSearch 进行对比的结果,数据范围选择了最近 2 年。

开源指南针 OSS Compass 是一个开源生态健康评估平台,它提供了公开的 SaaS 服务,只需输入 GitHub 或 Gitee 托管平台上的仓库名称或社区名称,即可全面展示该仓库或项目的健康状态,使用简单,高效便捷。

OSS Compass 目前构建了一个包括生产力、稳健性、创新力三个维度,涵盖 14 个指标模型在内的开源生态评估体系。

可以看到,OpenSearch 和 Elasticsearch 的协作开发指数非常接近,这说明双方的贡献者数量和代码提交频率不相上下。但对于社区服务与支撑、项目活跃度以及组织活跃度这些评估指标,OpenSearch 明显落后于 Elasticsearch。

点此查看 OSS Compass 的完整对比结果

最后问题来了,你选择 OpenSearch 还是 Elasticsearch?

猜你喜欢

转载自www.oschina.net/news/241162/opensearch-vs-elasticsearch
AWS