为何开放源码?

开放源码是我们社区和业务的一大优势,同时也是我们从事所有工作的核心所在。下面就是原因。

从区区几百次到数以亿计

开源潜力巨大,Elasticsearch 项目的发展就是一个鲜活的例子,2010 年下载量只有区区数百次,然而到 2018 年下载量已经超过 2.5 亿次。由于 Elasticsearch 开放源码且人们可以自由使用,其降低了用户的准入门槛,采用率也实现了飞跃式增长。

然而开源不仅是发行软件的一种有效方式,其还是开发最佳产品的一种有效方式。每次下载都是项目改进和演化的一次机会。由于用户会仔细研读代码,所以安全性得以大幅提升。因为产品需要在各种各样的架构和环境中经过严苛测试,所以可靠性和韧性也越来越深入。随着用户在新用例上进行实验,及用户开发各种集成、附加组件、插件和框架来扩展项目的应用范围,产品的扩展性得以提升。

如果一切都在幕后进行,直到代码至臻完美才推出的话,那么诸如 Elasticsearch 这样的开源项目定不能取得当今的成就。我们之所以能够成功,是因为我们将产品放到开放源码的孵化器中,并让产品随着每一次下载自然演化。

有利于社区和协作

开发软件固然很好,然而如果能围绕软件创建一个社区,就更好了。通过提供开源软件,人们在第一下载的时候就已经形成社区了。随着第一次下载,开发人员和用户通过论坛或 IRC 也有了首次交流,接下来就会产生疑问或者观察结果,然后就是第一个公开问题,随后就是第一个提取请求,最终就产生了第一个改进或增强版本。通过所有人的努力,他们可能修复了一个故障,或者更改了文档中的一个错别字。无论贡献大小,由于大家的通力合作,软件正在变得越来越好。现在,请您想一下在数以百万次的下载之后,这一流程会产生怎样的丰硕成果。

由于所有人使用的都是相同的代码,所以我们的产品通过类似自然选择的方式实现成长,即某些人所说的 BDFL(终身仁慈独裁者)方法。当然,在社区内可能会出现某个功能的多个版本,但是只有某个精心遴选的群组会对采纳哪些内容作出最终决定。这意味着我们的功能并不能随便添加的,只有这个功能可让我们的产品更稳健,更卓越,我们才会纳入这项功能。

现在,维持一个如此大规模的社区所需的工作量一点也不比维护代码所需的工作量小。多年以来,我们收获颇丰。我们学习到了创建一个友好和谐社区的重要性,务必要真诚地欢迎每名新加入的成员。我们还学到了我们必须真正倾听(即使某些请求截然不同,我们也必须同等对待)。我们的学习之旅还在继续之中。

取得全新成就

在最初阶段,人们普遍认为 Elasticsearch 虽然是一个很好的搜索引擎,但却只适用于企业搜索。但是由于我们开放提供源码,用户可以轻松地将产品应用于新方向。

举个例子,Jordan Sissel 和 Rashid Khan 都是系统管理员,虽然二人之间隔着美国好几个州,但是他们都在想同一个问题:如果将日志文件发送到 Elasticsearch 并尝试对其进行可视化,结果会怎样呢。结果就是,出现了可作为数据采集管道的 Logstash,以及可作为可视化引擎的 Kibana,而且还开始出现了新用例(日志),它之后发展成了软件栈,而非单独的产品。

Monica Sarbu 和 Tudor Golubenco 虽然远隔重洋,但是都在思考如何将网络包数据从边缘机器发送到 Elasticsearch。然后二人开发了恰恰可以实现此功能的 Packetbeat。这也启发我们之后开发了一系列适用于多种数据类型的轻量化数据采集器,即 Beats。

而且这一模式还在继续,出现了由社区开发和灵感汲取自社区的功能、扩展、插件、附加组件和用例。从 machine learning 到自然语言处理、应用性能指标和色彩分类、安全事件和博客 KPI,无所不包。

还没有来得及想象如果一千个人基于同一个代码库进行创新的话,结果会怎样,我们就已经看到结果了。

我们的开放模式

构建开源业务固然充满挑战,然而我们也从其他公司的发展中吸取了经验教训。

有些开源公司完全依赖提供客户服务这一业务模式。我们认为这种方法将公司利益和用户利益置于完全对立的位置,一方成功的代价是另一方的苦苦挣扎。这种方法缺乏相应的激励机制来鼓励公司开发易于使用的产品或帮助客户取得成功,因为公司要创收,就需要客户不断遇到问题并寻求支持。

其他一些开源公司则在原始开源项目的基础上提供商用(或“企业”)产品。我们认为这一业务模式会让项目代码和社区走向分化。其也会降低社区信任感,限制产品测试,逐渐影响产品质量,并最终影响到早期通过开源软件实现的业务效率。

所以,我们公司的运营模式截然不同。我们的目标是通过单一的开源软件栈在开源和商用代码之间取得健康平衡,此外还会提供支持和服务。我们有义务通过我们的所有产品为用户创造巨大价值,从而他们有充分理由投资于我们的产品和服务。最后,我们能够开发出易于使用且性能可靠的产品,让客户获得熟练技能和广博知识,同时我们能成长为一家成功的公司。

我们的成长战略是 “开发优先” ,而不是 “单纯开发”

通过这种方式,我们的代码能够实现有机进化,我们产品在企业内的采用率也会取得有机增长。通常是首先会有一个 “开发人员先驱” ,其尝试过我们产品后,感觉很不错。然后会有越来越多的同事使用我们的产品,很快就将小型的概念验证项目转化为大型部署项目,为任务关键性系统提供支持。

最后,决策者或高管注意到了这一点,询问大家是否需要正式投资于 Elastic。他们购买工具时需要考虑诸多因素,首先该工具必须能够创造价值,帮助公司更高效地运营,此外如果公司 / 组织内的所有技术开发人员都希望使用此工具的话,那就再好不过了。

价值才是决定性因素。尽管开源是最初采用的原因,但是只有提供价值才会促使客户投资。Elastic 正是由于做到了这一点,才能从单一的应用程序搜索项目扩展至解决日志用例,或者威胁查找项目,或者应用程序性能监测项目,等等。

OSSFL:终生开源软件

我们坚信开源的力量,我们在这一领域的投入将保持不变。很多公司都会在业务规模变大之后,变得比较封闭。但是,我们不会如此。我们已经做出明确的选择,要在开源业务上投入更大精力,并让我们的业务激励机制与开源社区之间更加一致。

正因为如此,我们才开放了专有 Elastic Stack 功能的源码(之前以 X-Pack 的名称组合在一起)。将开源项目做到如此程度,可消除多余的管理成本以加速开发,并增强整个社区范围内的互动。

开源道路并不会一帆风顺。但我们坚信这是开发软件的最佳方法,而且其可确保我们的产品、公司和社区能够一直取得成功。

深入了解 Elastic

探索 Elastic 的方方面面,了解我们开发的产品,我们恪守的价值观,以及我们如何致力于社区的整体发展。

我们的客户

了解这些公司在日常工作中如何使用 Elastic。

了解详情

我们的企业文化

获悉我们的最新动态。

了解详情

我们的产品

查看我们开发的产品。

了解详情