开源的力量:意义和如何开始开源项目。
译自 Building the Future Together With Community-Driven Open Source,作者 Tyler Akidau; JB Onofre。
可以肯定地说,开源软件 对世界产生了深远的影响。从 Linux 到 GNU 再到 Apache 生态系统,当今的技术格局在很大程度上是由在公共领域协作开发的工具驱动的。
我们正在与Apache 软件基金会 (ASF)一起为Apache Polaris (孵化) 建立一个开源社区,我们想分享一些关于开源力量的思考,为什么它很重要以及如何开始一个开源项目。但首先,我们需要定义开源的真正含义。
一方面,开源 仅仅意味着任何源代码本身“开放”或公开可用的软件。这是最狭隘的定义。但正如你所料,现实要微妙得多。为了避免过度简化,我们将假设有两个主要细微差别很重要:开源许可证 和开源治理。
开源许可证 规定了人们可以对代码做什么。这些许可证从频谱的更宽松端开始,例如 MIT 和 Apache(“随心所欲,但你不能起诉我们,并且请包含版权和其他一些信息”),到更严格的端,例如通用公共许可证或 GPL(“你必须始终包含源代码,以及你与该代码链接并交付给客户的任何封闭源代码,现在法律上要求开源,哈哈!”)。
介于两者之间的是商业源代码许可证或 BSL(“只要你不通过出售它来赚钱,你就可以自由使用它,因为只有我们被允许这样做”)。建议个人花时间熟悉现有的许可证选项,并选择最适合其需求的选项。
开源治理然后规定了随着时间的推移,给定的开源代码库或项目如何演变的规则,通过为开发项目的社区如何互动和协作建立一个框架。通常,开源治理最关键的方面之一是谁决定项目的发展方向。是否有一个仁慈的独裁者,比如早期的 Linux?是否有一家公司主导一切,比如 dbt Labs 或 Redpanda Data?是否有一组值得信赖的拥有者以某种方式共同做出决定,就像他们在 Apache 中所做的那样?如果有这样一组值得信赖的拥有者,谁有资格成为拥有者?
在考虑治理方法时,有很多问题需要回答,而且没有一种方法比另一种方法更好。这完全取决于你对项目随着时间的推移的目标。
一旦你对开源是什么有了了解,下一个要问自己的问题是,为什么要在第一位开源你的代码库?虽然有很多潜在的动机,但以下是一些关键的动机:
- 更多贡献者。 对于开源软件,参与项目的开发人员数量更多地取决于它产生的社区兴趣,而不是可用于雇用工程师的资金数量。
- 更多视角。 就像生活中的许多事情一样,接触更多样化的观点和想法通常会导致更好的结果。
- 更多采用。 当软件开发由社区和协作驱动时,它更有可能产生稳定的标准,这些标准会得到广泛采用,而不是多个竞争的封闭源代码工作。
- 更多益处。 通过使你的软件开放,你为更大的利益做出贡献,通过构建有价值的东西并免费提供它。
相反,也有一些原因让你可能不想参与开源:
- 控制力减弱。 虽然这在很大程度上取决于治理模式,但许多开源治理模式的目标是防止任何一方对项目的走向施加过多的控制。社区至上。
- 私利减少。 当你免费提供源代码时,将其货币化可能会更具挑战性,尽管有一些面向商业的许可证,例如 BSL,试图在开放和封闭之间取得平衡。
- 速度降低。 这绝不是开源软件的必然结果,但当向更大的社区开放开发时,尤其是当强调社区的需求而不是快速发展的需求时,它可能会导致开源开发的速度快于相应的闭源开发。然而,如果项目足够大,这也会被大量活跃贡献者抵消。
一旦你决定开源,下一步将很大程度上取决于你想要采取的方法。我们将重点关注我们最熟悉的方法:通过 ASF 开源。
ASF 致力于为公共利益提供软件。其核心精神是社区力量胜于代码的概念,被称为“Apache 之道”。这种理念强调健康的、协作的和积极的社区对开源项目的成功和可持续性的重要性,而不是仅仅关注代码本身。全球数千人每天都为 ASF 开源项目做出贡献,使 ASF 成为最大的开源基金会之一。
ASF 是一家非营利性公共慈善机构,501(c)(3) 成员制公司,为众多 Apache 项目提供法律、品牌、新闻、筹款、基础设施支持和经过验证的社区指导。自 Apache Hadoop 首次发布以来,ASF 托管了许多与大数据生态系统相关的开源项目。
Apache Iceberg 是这个生态系统中众多开源项目之一,它通过来自不同视角和背景的贡献的加速增长,体现了社区的力量。
在大数据生态系统中,Apache Iceberg 非常重要,因为它定义了一种规范,以抽象文件作为表,从而提供可靠性保证、性能优化,并可以与该领域中的许多其他工具集成。
Apache Iceberg 还包括一个用于管理和组织有关 Iceberg 表的元数据的标准化规范。但是,Iceberg 没有提供参考目录实现,因为它超出了项目的范围。为了完成 Iceberg 解决方案,在 Apache 中有一个开源目录实现“接近”Iceberg 是有意义的。这就是为什么Polaris 在 ASF 孵化器中成为一个 podling 的原因。
Apache 孵化器 是开源项目寻求成为 ASF 一部分的通道。它帮助这些传入的项目(称为“podlings”)采用 Apache 的治理和运营风格,同时指导它们了解 ASF 为这些项目提供的服务,以便它们能够成为顶级 ASF 项目。孵化器食谱 中有关于整个过程的清晰详细的说明,但我们将在这里概述主要要点。
最好的开始方法是找到一位冠军,虽然不是必需的,但可以帮助指导项目。这是来自孵化器 PMC (IPMC) 的人,他们有兴趣看到你的项目加入 ASF,并愿意帮助你完成整个过程并为你的事业代言。
在我们的案例中,JB Onofré 是 Polaris 的冠军。如果你在 Apache 世界做过任何工作(即使你没有做过),你很有可能已经认识 IPMC 中的人——截至目前,有 284 名 PMC 成员,他们通常是多年来深度参与 Apache 开源项目的人,因此他们的社区网络通常非常庞大。
如果您在该列表中找到了认识的人,值得联系他们,看看他们是否有任何建议,关于如何最好地进行。即使他们自己无法担任支持者,他们可能认识其他人可以担任。如果您发现您不认识任何人,最好的做法是直接发送电子邮件到 IPMC 邮件列表,介绍自己和您的项目,并告诉他们您正在寻找可能愿意担任支持者的人。
一旦您找到了支持者,下一步就是开始根据 podling 提案模板 起草孵化器提案。提案包括描述项目的章节,解释项目的目标如何与 ASF 的目标相一致,解决对提议的 podling 的常见问题,以及列出目前活跃的开发人员。该提案将用于提供项目的概述,并帮助证明您为什么相信它可以很好地融入 Apache 生态系统。
提案的另一个关键部分是导师列表。导师是 IPMC 成员,与支持者类似,他们自愿帮助指导和指导 podling 完成孵化过程。如果您自己没有联系,您的支持者可以帮助您找到一些合适的导师。
一旦您的提案起草完毕,下一步就是将提案提交给 IPMC 进行讨论。重点强调 podling 与社区的契合度,而不是代码哲学,来自多个赞助公司或组织的多样化贡献,以及工作各个方面的协作开放性。
作为讨论的一部分,委员会可能会要求对提案进行更改。在我们的案例中,我们最终对提议的提交者列表进行了一些小的更改,以更 closely align with common convention。如果对提案有重大疑虑,可能需要进行更 drastic 的更改,或者 项目本身可能需要 花更多时间准备,并在下次再回来。
假设 IPMC 讨论顺利进行,那么在某个时候,启动投票将是合适的。您的支持者可以帮助您了解何时是开始投票的好时机,并且很可能是投票的人(尽管从技术上讲,任何参与 podling 提案的人都可以)。投票持续至少 72 小时,并将根据 IPMC 成员投出的约束性投票进行多数票统计。
典型的 Apache 惯例是在讨论各方似乎达成普遍共识后才启动投票。当遵循此流程时,正式投票通过的可能性通常很大。但如果不是,反对方将有责任提供建设性的反馈,并且该项目可以在解决不足之处后,在稍后时间重新提交新的提案。
如果投票成功,您的支持者和导师将帮助您完成在 Apache 基础设施中设置项目的物流:GitHub 存储库、邮件列表、文档和法律支持。
此时,重点将转移到扩大项目的社区并采用 Apache 的方式。这包括支持新的贡献者,并将他们培养成提交者,最终成为 PMC 成员,发布定期的 podling 版本,维护文档,并不断改进代码和发布流程,以最好地满足最终用户的需求。
一旦项目达到足够的成熟度,您的支持者或导师可以向 IPMC 建议该项目已准备好毕业。如果 IPMC 投票赞成,那么该项目将从孵化器毕业,成为新的 Apache 顶级项目 (TLP)。
通过将 Polaris 集体捐赠给 ASF,并让来自众多公司的个人做出贡献,形成了一个更广泛的社区来支持其持续创新。我们认为开源是软件开发的未来,赋能开发人员进行创新,更快地使用整个行业都能从中受益的强大服务。通过优先考虑透明度、促进协作和鼓励快速迭代,开源已迅速成为用户通过共享知识的集体努力来推动技术进步的事实上的方式。
要了解更多关于 Kubernetes 和云原生生态系统的信息,请加入我们参加 11 月 12 日至 15 日在犹他州盐湖城举行的 KubeCon + CloudNativeCon 北美大会。