开源软件成功的模式与实践

还没有读者喜欢这个。
How has open source changed your life?

Opensource.com

如何创建一个成功的自由或开源软件项目?

成功 有两个组成部分

  • 部署增长:发布软件是为了看到它被使用。即使从最简约的观点来看,“它对我很有用;它可能对你也有用。” 但随着软件被使用,它反映了软件的动态特性,并且作为解决问题的方法,它以新的方式被用于解决新问题。 这就引出了成功公式的第二部分——贡献。
  • 贡献流:一个自由或开源软件项目最简单来说就是软件中的讨论,没有贡献,对话就会逐渐消失并失败。 从更复杂的社区角度来看,FOSS 项目是关于协作创新和开发的经济学。 如果没有持续的贡献流,软件项目的动态方面将变得静态和脆弱,并失去其相关性。

Contribution Flow

由于项目核心的软件是动态的东西(即要复制的“模因”),我们需要能够为项目做出贡献的开发人员。 可能做出贡献的开发人员可能是最初是软件项目的用户。 他们找到了软件,使用了它,可能修复了一个错误,可能添加了一个功能,或者将软件重新用于解决新问题。 在这一点上,他们有能力做出贡献,但还需要做一些工作来鼓励和允许这种贡献。

因此,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 项目使用模式和实践来发展和演化社区(用户 + 开发人员 + 贡献者),从而最终发展软件本身。 社区中的每个群体都需要一个入口。 这些活动可以沿着两个轴排列

  • 软件构建:使软件本身易于安装、配置、运行、构建、测试到已知状态的模式和实践。
  • 社区发展:鼓励将增长用户群的人们参与进来的模式和实践。

因此,如果我们从轴的角度来看入口,我们得到以下图表。

Grow user base

Grow contributor base

一旦项目开始增长,就会有商业利益。 公司希望以有趣的方式在自己的产品和服务中使用该软件,或围绕该项目向其他用户提供服务。 在这一点上,项目需要开展一系列额外的活动,以促进社区增长和贡献流。 (这些活动构成了它们自己的轴,所以实际上有三个轴)

  • IP 管理:鼓励商业参与以使生态系统得以形成的模式和实践。

Commercial contributor

因此,推动开源项目成功是一项为用户、开发人员和贡献者社区以及最终的商业贡献者构建入口,以实现项目生态系统的活动。

PnP Framework

我之前已经撰写并介绍了关于基金会的作用以促进增长。 许多 IP 管理问题由自由和开源软件基金会处理,因为它们为 IP 共享和协作创建了中立的非营利空间。 看看 Apache 软件基金会的历史,及其孵化计划以推动某些软件构建和社区发展活动,以及基金会 IP 结构本身的作用,人们可以看到开源软件项目成功的实践和模式。 “Apache 之道”是模式和实践的反映。

Eclipse 基金会也是如此,其严格的 IP 管理和开发实践以及社区支持,以及 Linux 基金会对 Linux 生态系统的支持。 人们可以追溯到自由软件基金会和 gcc 以及为 Cygnus Software 等公司实现 C 编译器生态系统,而 Outercurve 基金会延续了支持 FOSS 项目成功的三个活动轴的传统。

因此,总结一下

  • 成功的 FOSS 项目向外扩展其社区,以推动对核心项目的贡献。
  • 为了构建该社区,一个项目需要为软件用户、开发人员和贡献者以及最终的商业贡献者开发三个入口。
  • 入口中涉及的模式和实践可以沿着软件构建活动、社区发展活动和 IP 管理活动这三个轴排列。
  • 构建入口,就构建了生态系统的潜力。

Contributor Ecosystem

过去一年,我写了很多关于这些想法的文章,但没有框架。 我今年 5 月在 Outercurve 基金会开源软件会议上首次介绍了模式和实践框架 [视频如下]。 我期待着在本周接下来的时间里在社区领导力峰会OSCON 2013 上继续讨论。

最初发布在 Stephen 的博客上。 根据 Creative Commons 重新发布。

标签
User profile image.
我是一名技术主管、创始人、顾问、作家、国际商务人士、系统开发人员、软件构建极客和标准外交官。 我喜欢构建让客户欣喜若狂的团队和产品。 自 1980 年以来,我一直在 IT 行业工作,既是客户又是供应商。

1 条评论

Stephen,很棒的文章! 写得很好,表达得非常清楚。 理解你描述的模式和实践将有助于任何人建立 FOSS 项目。

我特别喜欢你文章中的“入口”部分。 我自己不会那样看待它。

由于我在开源领域的贡献主要发生在 FOSS 项目中,我肯定会去看看你的博客。 看看你还写了什么。

Creative Commons Attribution-NonCommercial-NoDerivs 2.0 通用许可
© . All rights reserved.