亚马逊AWS官方博客

保持开源的开放性 – Open Distro for Elasticsearch

照片由 Adrian Cockcroft 在 2019 年 3 月 10 日摄于佩特拉。

AWS 重视为客户解决问题。多年来,客户对开源技术的使用量和依赖稳步上升;这正是我们长期致力于开源事业的原因,我们对开源项目(包括我们自己的项目和其他人的项目)的贡献步伐也在持续加快。

AWS 推出基于开源项目的服务,正是履行我们对于支持客户的长期承诺。我们为社区贡献了漏洞修复、安全性、可扩展性、性能和功能等方面的增强。例如,在支持 Amazon Elasticsearch Service 的 Apache Lucene 项目背后,我们一直是重要的贡献者。多年来,Amazon EMR 团队持续为 Hadoop 生态系统做贡献,Amazon Elastic Container Service for Kubernetes (EKS) 团队也在为 Kubernetes 做贡献。此外,我们还投资开源社区,培训开发人员和操作人员,赞助 ApacheCon 和 KubeCon 等开源活动和会议,最近还加大了我们对 Apache 软件基金会的支持力度。通过提供营销支持,可以通过促进最终用户和贡献者数量的增长来帮助社区,加快开源项目的采用。

我们积极参与开源项目背后的原因有很多:首先,通过支持健康的社区,让项目可以持续发展和保持正轨十分重要。其次,维持项目的内部复刻版本会过度浪费精力,并且可能在合并时延误服务更新的发布。第三,以开源的方式发布新想法可以围绕这些想法聚集其他人,帮助将这些想法变为主流。第四,跨企业和学术机构开展开源协作,带来了人工智能等领域的一些最重要突破。

要享受这些好处,客户必须能够信任开源项目将保持开放。开源项目的维护者有责任保持源代码和目标代码对所有人开放,不在中途改变规则。如果 AWS 和我们客户依赖的重要开源项目开始限制访问,改变许可条款,或者将开源软件与专有软件混合,我们将会进行投资以维持开源项目和社区。例如,最近我们的客户越来越担心 Oracle 会停止支持客户所依赖的 Java 版本,或者改变许可条款,并且客户的担忧并非杞人忧天。为此我们推出了 Corretto 项目,这是 Amazon 提供的一个零成本、多平台的生产就绪级 OpenJDK 发行版。我们一直大力投入以确保长期一致性和信心,为此我们承诺 Amazon 至少将在 2023 年 6 月以前免费发布 Corretto 8 的安全更新,在 2024 年 8 月以前免费发布 Corretto 11 的安全更新。Corretto 是社区现在就可以依赖的有支持的免费发行版,同时我们将继续支持并直接为 OpenJDK 项目做贡献。

很遗憾的是,我们也看到在开源社区与通过开源赚钱的专有代码之间,有的开源维护者开始浑水摸鱼。在 AWS,我们坚信开源项目的维护者有责任确保主要开源发行版保持开放,不含专有代码,从而让社区可以免费在项目的基础上构建,并且发行版不应对不同的企业厚此薄彼。这也是维护者在取得开发人员的信任以采用该软件时作出的承诺。在核心开源软件保持对所有人完全开放使用和贡献的前提下,维护者(以及任何其他人)可以并且也应当能够构建专有软件以创造收入。但它应当与开源发行版保持独立,以免造成下游用户的混淆,保持让每个人都可以在开源项目的基础上进行创新的能力,不在软件的许可条款中制造模棱两可,也不要将访问权限限制为特定类别的用户。

如果我们细看许多成功的开源项目,会发现它们全都受益于对无限制开源软件的访问。事实上,可以说如果无法在已有开源软件的基础上快速汇编和创新,今天将不会有这些项目的存在。例如,Elasticsearch 背后的一个重要支撑就是 Apache Lucene 项目,这是 Apache 软件基金会的一个项目,其时间要比 Elasticsearch 早 11 年。Elasticsearch 还利用了很多许可条件十分宽松的其他开源项目,例如 JSON 解析使用了 Jackson 项目,Web 容器使用了 Netty 项目等等。总之,开源软件加快了个人和企业创新的步伐,下游用户也十分依赖这一能力。如果维护者在开源项目的长期可行性上制造混乱,将会影响所有下游用户。

Elasticsearch 在机器生成数据分析的民主化方面发挥了十分关键的作用。它日益成为全世界开发人员、安全分析师和运营工程师日常生产力的核心。它采用十分宽容的 Apache 2.0 许可证,使其快速得到普及,允许对软件的无限制使用。很遗憾的是,从 2018 年 6 月以来,我们看到代码库中混合了大量专有代码。虽然目前仍然提供采用 Apache 2.0 许可证的下载,但对于关心开源的客户来说,他们将获得什么以及他们可以依赖什么等问题严重缺乏明确性。例如,发行说明和文档都没有明确哪些属于开源,哪些属于专有。企业开发人员可能会无意中应用了专有源代码的修复或增强。这很难进行跟踪和管理,可能导致违反许可条款,并且可能导致权利被立即终止(包括专有免费和付费部分)。个人提交的代码也越来越多地将开源代码和专有代码混合,导致希望仅使用开源的开发人员难以作出贡献和参与。此外,创新重点也从促进开源发行版转向推广专有发行版。这意味着大多数新的 Elasticsearch 用户现在实际上运行的是专有软件。我们与 Elasticsearch 的维护者 Elastic 讨论了我们的顾虑,包括提议专门安排大量的资源来帮助支持一个以社区为中心的非混合版 Elasticsearch。但他们非常明确地表示要坚持现在的道路。

与此同时,根据我们客户和合作伙伴的反馈,他们对这些变更也抱有顾虑。由于它越来越偏离创新宗旨,也给该开源项目的可持续性蒙上了阴影。客户还希望能够自由地在任何地方运行软件,并根据自己的需要随时进行自我支持。因此,我们决定与 Expedia Group 和 Netflix 等其他人合作,创建一个新的开源发行版 Elasticsearch,取名为“Open Distro for Elasticsearch”。 Open Distro for Elasticsearch 是一个 100% 开源的增值发行版,它专注于推动创新,提供了多项增值功能,以确保用户拥有丰富的完全开源的选项。

“开源软件以及它提供的自由性对 Expedia Group 十分重要,”Expedia Group 云架构副总裁 Subbu Allamaraju 说。“Open Distro for Elasticsearch 倡议以加速可供我们这样的 Elasticsearch 用户使用的功能为宗旨,这让我们无比兴奋。此倡议也有利于让我们放心投资该技术。”

“在 Netflix,我们致力于开源。我们是开源的重要用户,也是重要的贡献者,”Netflix 平台工程副总裁 Christian Kaiser 说。“Open Distro for Elasticsearch 将允许我们自由地为 Elasticsearch 发行版做贡献,同时我们也可以放心它会保持开源和社区驱动。”

与 Java 和 OpenJDK 一样,我们的初衷不是要复刻 Elasticsearch,而是回馈采用 Apache 2.0 许可证的 Elasticsearch 上游项目,因为我们在为基础开源软件开发额外的增强功能。在首次发行版中,我们将包含许多完全开源的新高级功能,包括传输中加密、用户身份验证、详细审计、基于角色的精细访问控制、事件监控和提醒、深度性能分析以及 SQL 支持等。

Open Distro for Elasticsearch 新增的高级功能将全部采用 Apache 2.0 许可证。借助首次发行版,我们希望能解决开源 Elasticsearch 缺失的许多关键功能,例如安全性、事件监控和提醒以及 SQL 支持等。我们希望这些功能可让开发人员感到惊喜和有价值,鼓励他们下载、协作并最终为社区做贡献。其中许多功能是我们一直要包含在 Amazon Elasticsearch Service 中的功能。借助 Open Distro for Elasticsearch,用户可以在任何地方(例如在本地计算机上、笔记本电脑上或云中)运行相同的功能丰富的发行版。

我们推出 Open Distro for Elasticsearch 的初衷,是让开发人员可以在 Apache 2.0 许可证版 Elasticsearch 上游项目的基础上,自由贡献开源的增值功能。我们计划为开源 Elasticsearch 库的上游贡献补丁,以让所有人都受益。Open Distro for Elasticsearch 欢迎整个行业的开发人员和贡献者投入这些重要的技术,可以放心这些技术将始终保持开源和宽容的许可条款。开源的总体理念是多个用户和公司都可以将它投入运行,然后每个人都可以为它的改进做出贡献。Open Distro for Elasticsearch 践行了我们进行必要的投资以确保开源项目真正开源,让每个人都可以受益于我们的贡献的承诺。

您可以立即下载和开始使用 Open Distro for Elasticsearch,并为它做贡献。此首次发行版提供的安全性功能包括传输中加密、原生 Active Directory、LDAP、OpenID 身份验证、基于角色的精细访问控制以及审计日志记录。其他重要功能包括集成了事件监控和提醒功能,它全面发挥 Elasticsearch 查询语言的灵活性优势以在您的数据发生变更时通知您,此外还提供 SQL 支持(包括 REST 和 JDBC 支持)以及一个高级性能分析程序。如要下载以及进一步了解 Open Distro for Elasticsearch,请访问 https://opendistro.github.io/for-elasticsearch/

 

 


照片来源:Adrian Cockcroft 在 2019 年 3 月 10 日摄于佩特拉

 

本篇作者

Adrian Cockcroft

Adrian Cockcroft

Amazon Web Services 云架构策略副总裁 Adrian Cockcroft 曾长期从事前沿技术方面的工作,他对未来的技术甚是痴迷。在 AWS 任职期间,Cockcroft 专注于云原生和“一体式”客户的需求,并领导着一支 AWS 开源社区开发团队。在就职于 AWS 之前,Cockcroft 先在英国从事开发工作,随后加入了 Sun Microsystems,然后于 1993 年移居美国,最终成为了一名杰出的工程师。Cockcroft 于 2004 年从 Sun 离职,是 eBay 研究实验室的创始人之一,2007 年起任职于 Netflix。他最初带领一个团队从事个性化算法方面的工作,随后成为了一名云架构师,帮助各团队扩展并迁移到 AWS。由于 Netflix 公开分享其架构,Cockcroft 成为了会议和高峰论坛的固定发言人,他创建了 Netflix 开源计划并引领其开展。2014 年,他加入了风险投资公司 Battery Ventures,围绕开发运营、微服务、云和容器提出了一些新想法,然后于 2016 年 10 月加入了 AWS,并担任目前的职位。在 2017 年期间,他招募了一支对开源技术有丰富经验的团队,在 AWS 峰会上和世界各地的许多其他活动中发表了主题演讲。Cockcroft 拥有伦敦城市大学应用物理学学士学位。他曾出版过四本书,著名的有《Sun Performance and Tuning》(1998 年由 Prentice Hall 出版)。