开源不仅仅是开放你的代码,还包括构建一个支持性基础设施,吸引人们做出贡献。 为了创建一个充满活力、不断发展和令人兴奋的项目,社区需要能够参与到治理、文档、代码和实际维持项目运行的结构中。 如果整个“蜂巢”运作良好,它会吸引更多具有不同技能的人加入到项目中。
尽管许多项目都在努力实现“开放一切”,但基础设施通常对贡献是封闭的。 通常,只有少数人运行基础设施并维持运行。 有时他们无法招募到帮助,因为,你真的不能把王国的钥匙交给每个人。 在授予贡献者访问项目基础设施的权限之前,需要一定程度的信任。
在过去的几年里,像 Ansible, Chef, 和 Puppet 这样的基础设施工具已经被广泛采用。 现在可以将项目基础设施作为代码开源,并提供与其他贡献者相同的访问级别。 这使得该过程对贡献者可见,并使社区能够扩展。 你不再受限于只有少数高水平的贡献者才能访问的问题。
鉴于此,以下是我们参与 Gluster 项目时学到的一些经验:
- 公开做出决策: 使用公共邮件列表进行与基础设施相关的讨论和规划。 让社区参与决策过程的每个部分。 特别是,避免宣布私下做出的决定。
- 将基础设施定义为代码: 使用 Ansible、Puppet 或任何其他配置管理工具,使贡献者能够驱动基础设施开发。 使用 Jenkins Job Builder 定义 Jenkins 任务。 开发人员和更广泛的社区可以用很少的开销定义新任务。
- 定义基础设施的所有权: 通过对失败的公开事后分析来定义基础设施的明确所有权。 这种透明度将有助于你的社区信任你做好你的工作。
- 清除贡献的道路: 为基础设施贡献定义清晰的路径。 正如我的朋友 Elizabeth Krumbach Joseph 所说,“如果你需要 root 权限才能完成你的工作,那这是一个 bug。”
当你尝试开放你的基础设施时,你将会遇到问题。 以下是我们遇到的一些问题以及如何解决它们。
- 你将改变现状: 当你改变基础设施流程时,你将改变事物的工作方式。 你的团队可能会对这些变化感到不满。 确保你提前宣布你的计划。 分块进行更改,以便你可以尽快发现任何“损坏”。 通过修复影响其生产力的事情,让你的团队站在你这边。
- 你将想要修复太多的东西: 你的基础设施中会有很多需要修复的东西。 谨防将其变成 牦牛剃毛(yak shave),这似乎是由一千个毫无意义的不同步骤组成的,所有步骤同时发生。 想象一下试图给牦牛剃毛! 如果你试图执行一项任务并发现其他需要修复的东西,请记录下来以供以后使用,而不是试图立即修复它们。 你的进度会很慢,但要确保它是稳定的。 重要的是不要被你面前的工作压垮。
- 你将破坏东西: 当你对流程和基础设施进行大规模更改时,你将破坏东西。 确保你对你的失败进行公开的事后分析。 制定一个计划,以避免将来出现这种特定的错误模式。
- 感觉工作永远不会结束: 我们会告诉你一个秘密:它永远不会完成。 基础设施随着项目的需求而变化。 没有“完成”这样的事情。 你总会有其他需要修复的东西。
我们要留给你的最重要的事情是,开放基础设施很重要,但基础设施周围的文档和流程也很重要,以便每个人都可以做出贡献。
评论已关闭。