回到主页Meilisearch 的标志
返回文章
2019年4月25日

开源还是不开源?

我们想分享我们对开源以及如何许可我们的代码的看法。在 Meili,我们正在用 Rust 🦀 构建一个即时搜索引擎,并希望将其开源。

Thomas Payet
Thomas PayetMeilisearch 联合创始人兼首席运营官@totolapaille
Open source or not?

我们想分享我们对开源以及如何许可我们的代码的看法。这对我们来说是全新的,我们仍在摸索最佳解决方案和机会,所以如果您有任何阅读建议,请不要犹豫告诉我们。

快速提醒一下:在 Meili,我们正在用 Rust 🦀 构建一个即时搜索引擎,并希望将其开源。我们仍在考虑适合我们的商业计划,可能也会写一篇关于它的文章,但今天的主题是许可证!

我们为什么选择开源?

我们相信每个应用程序都应该拥有一个不错的搜索引擎。这意味着搜索引擎技术应该成为一种商品。我们找到了一个完美的平衡点:Algolia 虽然非常开发者友好但却是专有的,而 Elastic Search 难以设置为即时搜索。

我们认为,如果你想成为你领域的标准技术,你就应该开源,这样你就可以与使用它的人一起构建你的功能,并赢得对你代码的信任。此外,因为我们是很酷的开发者,我们正在使用大量的开源代码,我们希望通过贡献开源和分享我们的项目来回馈社区。

什么是开源?

开源是复杂的,如果你问两个人开源的定义,你可能会发现开源有很多定义。Steve Klabnik 写了一篇非常有趣的博客文章,内容关于开源核心的文化之争,我们从中了解了开源历史以及人们为何对其定义争论不休。

最初,有自由软件基金会(Free Software Foundation),成立于1985年。FSF 由理查德·斯托曼(Richard Stallman)创立,旨在支持 GNU 项目和自由软件的概念:即软件应该可以自由使用、自由复制和自由再分发。然而,“自由”这个术语非常严格。对于 FSF 来说,自由软件必须采用“著作权开放”(copyleft)许可。著作权开放意味着所有派生作品也必须是著作权开放。我们称之为“遗传性”或“感染性”许可,我们很快就明白这种许可可能会吓退企业。

随后是开源促进会(Open Source Initiative),一个成立于1998年的非营利组织。埃里克·S·雷蒙德(Eric S. Raymond)和布鲁斯·佩伦斯(Bruce Perens)撰写了《开源定义》(Open Source Definition),该定义规定了限制较少的许可(如 MIT、Apache、BSD 等)。这些许可都要求注明你所使用软件的作者,但你构建的内容可以使用任何其他许可。这个《开源定义》的目标之一是更加“商业友好”,因为“自由”这个词可能会吓退公司,通过拥有一个更友好的名称和限制较少的许可,可以鼓励公司投资并参与开源。


为了说明这些差异,我们可以举两个基于 Unix 的操作系统:一方面是 Linux 内核,它采用 GPLv2 许可(著作权开放),这就是为什么基于 Linux 的 Android 是开源的。另一方面是 Berkeley 软件发行版(BSD),它采用 BSD 许可,其最著名的分支是 iOS 和 Mac OS,它们是专有和私有的。

这些是当今开源的定义,而问题在于

  • 每个人对开源没有一个统一的定义,因为每个人都有自己的开源理念
  • 每个人都没有遵守相同的规则:有些公司将他们采用 GPL 许可的项目发布在一些不知名的 FTP 上,而另一些公司则在 GitHub 上公开其代码,但没有获得 OSI 批准的许可。对你来说,什么是开源?

当今的开源

正如您可能在过去几个月读到的,一些“开源”项目出于同样的原因更改了它们的许可。我们认为 MongoDB 解释得非常好

对于开源项目来说,这是一个充满无限机遇的时代,有可能催生新一波优秀的开源服务器端软件。然而,现实是,一旦一个开源项目变得有吸引力,大型云厂商就很容易攫取所有价值,却不回馈社区。

他们也不是唯一一个担心这种情况的项目。

例如,Redis 正在以其自己的许可,即 Redis Source Available License,许可其部分 Redis 模块。他们之前使用的是附加在 Apache 许可之上的 Commons Clause。Commons Clause 在现有许可(如 Apache 许可)之上增加了一些商业分发限制。但是,他们因混淆原因而更改了它;人们不确定它是否是开源的。

Confluent 也更改了其许可,他们从 Apache 许可改为创建 Confluent Community License,因为他们也担心一些大型云公司。

开源与 Meili

关键不在于大公司是否应该更多或以不同方式贡献开源,而在于开源正在发展,我们需要一个新的定义,一个新的术语来凝聚共识,明确我们所谈论的内容。

也许我们需要标签来定义和规范我们公司所支持的理念?或许我们需要一个专利式的系统,规定你作为公司发布的每个代码在你编写三年后都将采用 MIT 许可或其他任何许可。这样你就可以在一段时间内通过你的代码获利,同时允许公开披露你的代码?

在 Meili,我们尚未对这些问题有明确的看法,但我们正在认真思考。我们希望我们的代码能够供任何人使用,自由地用于您的项目并进行修改。如果您想将其用于个人项目,请尽管使用;如果您想将其用于您的公司,也应该如此。我们不希望任何云提供商克隆我们的项目,并在 SaaS 产品上成为竞争对手。因为我们相信,如果能在此基础上建立可持续的业务,我们的项目将会更蓬勃发展。

今天,我们的代码仍采用 MIT 许可,但明天我们可能会像 MongoDB 和 Confluent 那样将其更改为 Commons Clause 或编写我们自己的公共许可。不,它不会像 OSI 所说的那样是开源的,但我们认为提供公开可用的源代码仍然比闭源更好,可惜今天还没有一个明确的术语来形容它。

Meilisearch May updates

Meilisearch 五月更新

Meilisearch 每月总结。2025年五月版。

Laurent Cazanove
Laurent Cazanove2025年6月4日
Meilisearch April updates

Meilisearch 四月更新

Meilisearch 每月总结。2025年四月版。

Laurent Cazanove
Laurent Cazanove2025年5月12日
Meilisearch March updates

Meilisearch 三月更新

Meilisearch 每月总结。2025年三月版。

Laurent Cazanove
Laurent Cazanove2025年4月7日