我们为什么要贡献开源软件?

深入研究支持开源生态系统以及开发者参与动机的研究。
129 位读者喜欢这篇文章。
question mark in chalk

TeroVesalainen via Pixabay CC0

作为一个整体,组织出于各种原因贡献开源软件项目。

最重要的原因之一是开源开发模式是与其他公司协作处理共同感兴趣项目的有效方式。但他们也希望更好地理解他们使用的技术。他们也希望影响方向。

具体的理由因组织而异,但通常归结为一个简单的事实,即在开源中工作对他们的业务有利。

但是,个人为什么要贡献开源?他们大多也看到某种个人利益,但究竟是什么激励着他们?

动机的类型

当我们谈论动机时,一种常见的方式是根据激励理论。该理论始于 20 世纪 40 年代和 50 年代,建立在克拉克·赫尔 (Clark Hull) 和肯尼思·斯宾塞 (Kenneth Spence) 等心理学家建立的早期驱力降低理论之上。激励理论最初基于这样一种观点,即动机主要受外部奖励或激励的前景驱动。

金钱是一种经典的外部激励因素。赢得奖项、获得成绩或获得可能带来更好工作的认证也是如此。

然而,在 20 世纪 70 年代,研究人员也开始考虑内在动机,这种动机不需要除了活动本身之外的明显奖励。由爱德华·德西 (Edward Deci) 和理查德·瑞安 (Richard Ryan) 开发的自我决定理论,后来从比较内在和外在动机的研究中,以及从对内在动机在行为中可能发挥的主导作用的日益了解中发展而来。

虽然内在动机可能来自许多不同的来源,但最直接的来源是对特定活动的简单享受。您下班后在垒球联盟打球是因为您喜欢打垒球。您享受锻炼、友谊和游戏本身。

研究人员还提出了这种基于享受的内在动机与基于义务/社区的内在动机之间的进一步区别,后者更多的是关于遵守社会或社区规范。也许你真的不喜欢让亲戚来过感恩节,但你还是这样做了,因为你知道你应该这样做。

今天的心理学文献还包括内在化的外在动机的概念。这些是外在动机,例如获得提高职业机会的技能——但它们已被内在化,因此动机来自内心,而不是渴望其他人挥舞的任何胡萝卜。

是什么激励了开源开发者?

2012 年,苏黎世联邦理工学院的四位研究人员调查了过去十年对开源软件贡献的研究。在他们的研究结果中,他们能够将研究结果归为以下三个类别:外在动机、内在动机和内在化的外在动机——以及这些更广泛类别中的一些常见子类别。

毫不奇怪,金钱被列为外在动机。在研究期间,与今天的情况相比,与成功的商业支持产品相关的大型项目较少。即便如此,研究人员检查的大多数开源项目都有相当数量的贡献者,他们的公司付费让他们从事开源工作。

职业显然与薪酬密切相关,但开源软件在这方面与专有软件开发有何不同?有一些证据表明是不同的。

Lerner 和 Tirole 在 2002 年首次提出,"个人开发者在开发开源软件时会受到职业考虑的激励。通过发布所有人都可以检查的免费软件,他们可以向潜在雇主展示他们的才能,从而提高他们在劳动力市场中的价值。"

最近,有大量的经验证据表明,开发代码并使其可供他人查看和使用具有职业优势。在某些行业领域,求职者拥有公共 GitHub 代码存储库几乎已成为一种期望,这些存储库实际上是他们简历的一部分。

有理由问这种趋势是否走得太远。毕竟,许多高素质的开发者都在从事专有代码的开发。但很明显,公平与否,至少有一些职业前景可能专门来自成为开源开发者。

在内在动机中,意识形态和利他主义通常看起来密切相关。

免费软件最初主要是一种意识形态声明,即使用户控制也具有重要的实际意义;一些研究人员在开发者调查中发现了对意识形态动机的支持。

利他主义也可以是开发者的一种动机,尽管对此的研究存在争议。一篇论文将 "向程序员社区赠送礼物的愿望 "确定为开源软件中的一个关键模式。但其他研究则限定了利他主义作为一种动机的重要性,尤其是在获得薪水的程序员中。其他工作发现,利他主义可能是一种动机,但仅限于那些在其他方面感到满意的开发者。

还有乐趣和享受的激励力量,这是一种经典的内在动机。对于任何经常与开源开发者打交道的人来说,这都不足为奇。几乎所有人都喜欢从事开源项目。一项 2007 年的大型研究确定,乐趣占项目投入工作量(以小时数计算)的 28%。这项研究的一个含义是,开发者通常不太喜欢的活动(技术支持通常名列前茅)可能需要其他形式的动机。

许多将声誉作为内在化的外在动机的研究都特别关注同行认可。您在同行中的声誉可以成为您自豪感的来源,但它也向社区内部人士和潜在雇主发出了您的才能信号。早在 1998 年,在埃里克·雷蒙德 (Eric Raymond) 的文章"开垦智域" 中,就有人提出声誉可能是贡献开源的重要动机。然而,从那以后,各种调查都支持了同行声誉是参与的驱动因素这一观点。

这个类别中的另一个动机是研究人员所说的 "自有使用价值",但更广为人知的描述是 "解决自己的难题"——开发您自己想要的东西,并在过程中为他人创造有价值的东西。最初的动机本质上来自自私的需求,但它可以演变成更多内在化的贡献愿望。

研究发现自有使用价值是一个很好的动机并不奇怪。当然,民间智慧是,许多开发者通过开发他们自己需要的东西来进入开源领域——例如 Linus Torvalds 编写 Git 是因为 Linux 需要一个合适的分布式版本控制系统。

正如我们所见,开源软件的贡献者有各种不同的动机,但在最后有一些值得强调的总体思路。

当过分依赖单一动机时,动机实际上会适得其反。一项研究报告说,解决自己难题的开发者工作 "不拘一格",修复让他们烦恼的错误,然后退出,直到下一次。

特别是,不要期望非外部动机承担过多的负担。如果任务实际上并不有趣,那么乐趣就不是一个好的动机。利他主义激励了一些人,但它也不会支付他们的账单。

也就是说,开发者贡献的原因确实不仅仅是金钱或其他外部原因。学习、同行声誉和认可对许多人来说都很重要(而且不仅仅是在开源开发中)。组织不应忽视这些因素在激励开发者方面所能发挥的作用,并应围绕这些因素实施激励计划,例如同行奖励系统。


这篇文章基于作者撰写的开源如何吞噬软件(Apress,2018)中的材料。

下一步阅读什么
User profile image.
Gordon Haff 是红帽技术布道师,是客户和行业活动中一位备受赞誉的演讲者,专注于红帽研究、开源采用和广泛的新兴技术领域。

4 条评论

当然是为了支持社区!

开源软件的名声中有一部分是缺少或不足的文档。正因如此,学习如何使用它一直是一项艰苦的任务。我加入邮件列表是为了学习,然后惊讶地发现我能够帮助其他人。这逐渐演变成帮助创建更完整的文档,然后编写或修复 Python 脚本。即使我不太擅长修复错误,我也可以通过解释或完善别人报告的某种错误的描述来提供帮助。最终,你会得到作为开源软件社区一部分的积极反馈。

我最终点击了投票中的“其他”,因为我贡献开源项目的原因不止一个,并非其他选项对我来说不重要。毕竟,谁不喜欢享受乐趣呢!

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.