之前跟大家聊了很多如何参与一个开源项目,今天跟大家聊聊如何维护一个开源项目。

开源项目并不是代码的集合:每一个开源项目都能够视作一个小型的公司,它有自己的市场定位,有自己的战略目标,有自己的用户受众。因此开源项目维护有着大量工程以外的工作,包括但不限于跟用户沟通,设定路线图等等。本文旨在为加入开源维护者行列的新人提供一个基本的指引,讲解开源维护者应该需要做的事情。

First Day

开源维护者在开始一个项目之前,需要首先搞清楚项目的目标市场及其定位。

明确市场

开源项目的发展也大体遵循着强者恒强的马太定律:一个特定的垂直领域往往只能容下一到两个广泛使用的项目。

所以在开始一个项目之前我们就必须考虑清楚:

  • 项目想要哪个领域发展?
  • 这个领域都有哪些重要玩家?
  • 我们项目有哪些不可替代的优势?

如果我们不能够比现有项目做的更好,不如直接放弃加入现有项目。否则我们就需要进一步对领域进行细分,找到自己的差异化优势。

比如最近 SmartX 发起了一个新的开源项目 virtink,一个更轻量的 Kubernetes 原生虚拟化管理引擎。相比于社区现有的 kubevirt,它不考虑支持遗留硬件设备的模拟以及桌面应用场景能力,而是聚焦于在 Kubernetes 上运行现代化的云端虚拟化负载,因此 Virtink 就可以做到以更安全轻量的方式支撑虚拟化负载。

当然目前市场并不是一成不变的:字节跳动开源的 monoio 最开始市场是基于 io-uring 的 thread-per-core 模型高性能 Rust Runtime,但是在社区的演进中逐渐加入了对 tokio mio 的支持。

开源项目的维护者需要审慎地考虑项目的发展来选择是否加入或者进入某个领域。

立下愿景

文章合为时而著,代码合为事而写。开源项目必须要能够解决实际的问题,否则就无法形成一个可靠的开源共同体。