开放公开,火力全开
我很高兴的宣布,我们将公开我们 X-Pack 特性的所有代码 - Security、Monitoring、Alerting、Graph、Reporting、专门的 APM UI、Canvas、Elasticsearch SQL、Search Profiler、Grok Debugger、Elastic Maps Service zoom levels 以及 Machine Learning - 为了促进我们与客户及社区的更大的协作,正如我们今天为我们的开源代码所做的一样。
我为我们公司围绕我们的开源产品而自豪,一直以来我们都没有破坏创新或放弃对开放的承诺。当我们展望未来的时候,我们看到了一个机会,让我们更加坚信开放,甚至更加彻底,同时引入一个新的、更加高效的模式来构建一个成功的、可持续的围绕开源的商业模式。
这篇博客概述了我们做出这些改变的想法和细节,不过,让我澄清一件事 - 我们是一家开源软件公司。我们将继续保持为一家开源软件公司。我们比以往任何时候都要更加开放,我个人,我的团队,整体而言,都致力于此。
为什么开源?
当我第一次开始写 Elasticsearch 的时候,我知道它必须是开源的。开源作为一种开发模式和分发方式,提供了接触更多人的机会。所有这些人都能做出贡献。当然,通过代码可以做出贡献,但也可以通过使用免费的软件,持续不断的推进可能的边界。
与社区的合作可以确保,当你的项目成功时,会有一群热情的、专门的开发者指导你的特性开发,并将产品推向新的有趣的方向。例如,将聚合功能引入 Elasticsearch 让其可被当做一个可扩展的用于数据分析的产品。而像 Kibana 和 Logstash 这样的项目,以及后来的 Beats 的加入,无不令人鼓舞。随着我们用户的需求变得更加深入和专业,我们总能找到新的方法来支持他们,有些是通过新的功能、有些是产品,比如机器学习、APM 和站内搜索。
我们对开源的承诺深入了。这是我们花费大部分工程力量投入的地方,我们的社区贡献者和用户对我们创新进程也同样至关重要。但是,像我们这样快速推进产品的发展,需要大量的投资,这也是我们围绕这些技术成立一家公司的原因。
为什么商业软件?
那么,如果我们对开源软件已有如此深的见解,那为什么还是编写了商业软件呢?
我们是一家企业。作为企业的一部分,我们相信那些能够付款给我们的企业,应该付款给我们。而那些不能的,他们也不必付款给我们。作为回报,我们有义务确保我们继续添加功能和价值给我们所有的用户,并确保与我们的商业关系对客户有益。这是一家健康的公司所需要的平衡。
销售支持订阅服务是一个常见的开源软件的商业模式。可悲的是,只有支持的商业模式会朝向关于什么对用户最好以及什么对公司最好这样的冲突之中。在这种情况下,公司将没有动力让他们的产品更加简单好用,更加稳固和可扩展,因为那意味着这将吞噬其技术支持的利益。我们从来没有,也永远不会忍受为了确保公司继续经营而不让我们的软件变的更好。我们想要继续改进,我们支持服务的目标是让你的项目成功,然后你能成为你自有 Elastic Stack 部署的专家。
另外一种办法 -- 如果你们听过我的演讲,你们可能听我讨论过这个问题 -- 即构建一个‘企业版’的软件。这种,从本质上来讲,导致了社区的分裂,并在客户和用户之间产生了分歧。它的结果就是创建一种版本 -- 要么企业版,要么社区版 -- 被认为是权威的,往往滞后 master 很多。一个缺少特性的版本。一个在不同周期测试和发布的版本。一个有效的关闭了源代码的版本,因为您无法知道为了支持商业特性而更改了哪些内容。在 Elastic,所有我们的客户同时也是我们开源软件用户,使用相同版本的软件产品。我们不会创建一个社区版与企业版的版本。
那还有什么?识别高价值特性并将其作为核心软件的商业扩展。这种商业模式,我们有时候叫它“open core”,这是我们创造 X-Pack 的最终产物。为了构建和集成由我们维护知识产权(IP)的特性和功能,并提供订阅服务或免费的基础授权。保持我们对知识产权的控制,使我们能够有能力投资我们大部分的工程资源和时间,可以继续改进我们的核心,我们的开源产品。
这种方法使我们能够在世界各地建立一个分布式的公司,让我们感到惊讶的是,Elastic Stack 是如何被用来解决各种实际的、具体的问题的。添加适用于我们用户的特性和功能,并开发一些使我们能够持续到未来的功能。
但是这种方法也存在挑战…
更加开放
你是否知道 X-Pack 提供了一层免费的功能?这些能力诸如 Monitoring、Search Profiler、Grok Debugger 以及额外的 Elastic Maps 缩放级别。你是否知道我们还将在这一层继续添加更多功能,如 Canvas 和 Elasticsearch SQL?
当我们往X-Pack 里添加免费功能的时候,我们这么做是因为我们知道这些功能可以帮助用户更好的使用 Elastic Stack。不幸的是,太多功能你都不知道 -- 也许知道 -- 或得益于这些功能。所以这意味着有很大一部分用户在使用我们软件的时候往往不是最佳实践。
我们也知道,获得这个免费软件的过程是一个糟糕的用户体验,涉及到一个完整的集群重启。并且如果你想查看代码,抱歉,不可以。尤其是这些免费功能和很大一部分用户相关,你会问我们一些很好但是很难的问题,比如:“我如何就这些免费功能与你们交互?”,“我如何开启一个 issue 或是贡献代码?”
而我们没有很好的答案。
通过公开 X-Pack 的代码,我们解决了这些我们部分产品开源以及部分产品不是的问题。很快,所有的免费的和商业的特性你都可以开启一个 issue、查看特性讨论、检查源代码、与我们协助和提交一个 pull request。
具体细节
这意味着什么,技术上来说?
自 6.3 版本起,所有 $PRODUCT(项目)仓库(Elasticsearch, Logstash, Kibana, Beats) :
- 所有现存的 Apache 2.0 协议的代码都将保持相同的协议,什么都不用动。
- 我们会创建一个新的 X-Pack 目录,将 x-pack-$PRODUCT 的代码放入到该目录,基于 Elastic EULA 协议,允许相应的衍生和贡献。
- 我们将修改最顶层的协议为一个简单的 Elastic License,包含这个仓库里面那些文件是Apache 2.0,那些是 Elastic EULA 的详细细节。
同时,X-Pack 功能将打包到默认的发行版里面。所有免费的功能都包含在里面且默认开启且永远不会出现‘过期’,而商业特性则可以通过试用证书可选的启用。因为免费的证书永远不会过期,所以你再也不用通过注册来就直接获取它了。除此以外,一个只包含 Apache 2.0 协议代码的包也会同样会创建并提供下载。
更多信息以及常见问题,可以在 Opening X-Pack 页找到。
总结
我们相信开源。作为一种分布模式。作为一种建立企业的方法。作为我们公司的未来。 我们承诺并保持我们将保持开放,并对我们将在 6.3 比以往任何时候都更加开放而感到兴奋。
感谢你们对我们的信任。