strint

Feature development process

本文想了解何把 Feature 推向成熟,开源领域对此有成熟的经验可以参考。

讨论3个子问题, 为什么以 Feature 为粒度来推动软件开发;Feature 成熟如何判定; Feature 开发流程是怎样的。

以 Feature 为粒度做开发

软件由功能集合组成,功能集合里面由单个Feature组成。基于Feature开发,可以把大的任务细分成可执行的功能。

Feature Stage

软件一般以 Feature Stage 来评估功能成熟度,常见的 Stage有:Pre-alph、Alpha、Beta、RC、Stable. 后面详细介绍其标准。

功能成熟度分级及其标准

注:该定义主要参考了Google, IBM, Lyft推动的 istio 项目的 Feature stages,https://istio.io/latest/docs/releases/feature-stages/ ,感谢。

Feature Stage Review

升级Feature Stage,需要做严格的Review,以保证质量。这是 Code Review 之上的一层 Review.

关于里面的标准看起来要求多

仔细看会发现一个少不了,核心 Feature 走向 Stable,是整个软件走向 Stable 的必要条件。要做的事情没做,就达不到那个 Stage;达不到那个 Stage,就获得不了那个 Stage 的用户。比如一个 feature 是 alpha的,就只有内部用户、专家用户才用得了,这就限制了该功能的用户是个位数的。

参考资料:

Feature Relase Process / Cycle

下面对几家流行软件的 Release Process做下调研。

Python release cycle

参考资料:

django release process

版本规划

开发流程

发布流程

参考资料:

PyTorch Release

参考资料:

进一步阅读的参考资料