如何创建一个成功的自由或开源软件项目?
成功 有两个组成部分
- 部署增长:发布软件是为了看到它被使用。即使从最简约的观点来看,“它对我很有用;它可能对你也有用。” 但随着软件被使用,它反映了软件的动态特性,并且作为解决问题的方法,它以新的方式被用于解决新问题。 这就引出了成功公式的第二部分——贡献。
- 贡献流:一个自由或开源软件项目最简单来说就是软件中的讨论,没有贡献,对话就会逐渐消失并失败。 从更复杂的社区角度来看,FOSS 项目是关于协作创新和开发的经济学。 如果没有持续的贡献流,软件项目的动态方面将变得静态和脆弱,并失去其相关性。
由于项目核心的软件是动态的东西(即要复制的“模因”),我们需要能够为项目做出贡献的开发人员。 可能做出贡献的开发人员可能是最初是软件项目的用户。 他们找到了软件,使用了它,可能修复了一个错误,可能添加了一个功能,或者将软件重新用于解决新问题。 在这一点上,他们有能力做出贡献,但还需要做一些工作来鼓励和允许这种贡献。
因此,FOSS 项目的提交者需要构建和不断改进三个入口
- 吸引大量用户:软件需要易于安装/配置/使用(这适用于开发人员工具、库和框架,以及用户空间应用程序和工具)。
- 从这个用户群中,吸引开发人员:软件需要易于下载,并且可以构建和测试到已知状态。 这允许潜在的开发人员为自己及其自身自私的需求实验/修复/扩展软件项目。
- 从这个开发人员池中,吸引贡献者,因为实际上有一个经过深思熟虑的管道和关于贡献什么、在哪里以及如何贡献的沟通。贡献确实来自用户,例如错误报告。但是项目仍然需要与用户沟通,以使他们能够贡献良好的错误报告。
多年来,我们已经通过轶事看到了这些管道。
- 在早期基于 PC 的软件时代(90 年代初期),有一个 5 分钟规则(或 10 分钟规则,取决于你咨询的对象),该规则规定,如果软件没有在 [非常] 短的时间内安装并做一些有用的事情,它就会变成滞销品。 今天,有多少人下载了一个开源项目,但从未使其工作起来就放弃了? 在你宣布失败并继续前进之前,你愿意投入多少时间来安装、配置、构建、测试、浏览论坛? 你让多少潜在的贡献者感到沮丧和愚蠢?
- 大约 10-15 年前,一些开源社区的核心提交者表达过一个想法,即社区和贡献之间存在数量级差异,即每 1000 个用户,你可能会看到 100 个错误报告,其中 10 个将发送声称修复所述错误的代码,其中 1 个阅读了你的编码指南并真正修复了错误。 我从几个社区(大型 = sendmail,小型 = 图形驱动程序)听到了这一点,并且自那以后在许多核心提交者身上“测试”了该声明,他们都停下来、思考并同意。 (告读者:这纯粹是轶事。 我正在考虑寻找方法来通过数据流寻找证据,类似于 Donnie Berkholz 的优秀的近期调查。)我们在 Jono Bacon(“我们希望将临时贡献者转变为定期贡献者”)、Kohsuke Kawaguchi(“潜在贡献者从访问你的网站开始”)和 Donnie Berkholz(“你未来的潜在贡献者从潜伏在你的项目的沟通渠道上开始”)等人的演讲中看到了这一点。
- Tim O’Reilly 在 2004 年写了“参与的架构”,描述了为用户贡献而设计的系统的性质,并扩展了 Mitch Kapor 关于“架构即政治”的模因。
成功的 FOSS 项目使用模式和实践来发展和演化社区(用户 + 开发人员 + 贡献者),从而最终发展软件本身。 社区中的每个群体都需要一个入口。 这些活动可以沿着两个轴排列
- 软件构建:使软件本身易于安装、配置、运行、构建、测试到已知状态的模式和实践。
- 社区发展:鼓励将增长用户群的人们参与进来的模式和实践。
因此,如果我们从轴的角度来看入口,我们得到以下图表。
一旦项目开始增长,就会有商业利益。 公司希望以有趣的方式在自己的产品和服务中使用该软件,或围绕该项目向其他用户提供服务。 在这一点上,项目需要开展一系列额外的活动,以促进社区增长和贡献流。 (这些活动构成了它们自己的轴,所以实际上有三个轴)
- IP 管理:鼓励商业参与以使生态系统得以形成的模式和实践。
因此,推动开源项目成功是一项为用户、开发人员和贡献者社区以及最终的商业贡献者构建入口,以实现项目生态系统的活动。
我之前已经撰写并介绍了关于基金会的作用以促进增长。 许多 IP 管理问题由自由和开源软件基金会处理,因为它们为 IP 共享和协作创建了中立的非营利空间。 看看 Apache 软件基金会的历史,及其孵化计划以推动某些软件构建和社区发展活动,以及基金会 IP 结构本身的作用,人们可以看到开源软件项目成功的实践和模式。 “Apache 之道”是模式和实践的反映。
Eclipse 基金会也是如此,其严格的 IP 管理和开发实践以及社区支持,以及 Linux 基金会对 Linux 生态系统的支持。 人们可以追溯到自由软件基金会和 gcc 以及为 Cygnus Software 等公司实现 C 编译器生态系统,而 Outercurve 基金会延续了支持 FOSS 项目成功的三个活动轴的传统。
因此,总结一下
- 成功的 FOSS 项目向外扩展其社区,以推动对核心项目的贡献。
- 为了构建该社区,一个项目需要为软件用户、开发人员和贡献者以及最终的商业贡献者开发三个入口。
- 入口中涉及的模式和实践可以沿着软件构建活动、社区发展活动和 IP 管理活动这三个轴排列。
- 构建入口,就构建了生态系统的潜力。
过去一年,我写了很多关于这些想法的文章,但没有框架。 我今年 5 月在 Outercurve 基金会开源软件会议上首次介绍了模式和实践框架 [视频如下]。 我期待着在本周接下来的时间里在社区领导力峰会和 OSCON 2013 上继续讨论。
最初发布在 Stephen 的博客上。 根据 Creative Commons 重新发布。
1 条评论