如今,开源软件已经成为了很多科技厂商选择的一种商业模式。谷歌、微软、亚马逊等全球顶尖的软件商业公司都有着自己的开源产业生态,红帽、Elastic、PingCAP 等专门围绕开源软件创业的公司也取得了不同程度上的商业成功。
除了这些从开源中获利的商业公司以外,开源社区中还有着大量的个人开发者,而来自这些个人开发者的合理利益述求往往很容易被人们忽视。
挣扎中的个人开发者
在开源社区中,有很多的个人开发者在积极地参与开源贡献,或是开源自己的个人项目,或是为其他项目贡献代码。很多人最初的动机仅仅是通过参与开源提升自己的技术,或是通过帮助别人获得心理上的满足,甚至是为了实现自己某个疯狂或有趣的想法顺便参与开源。他们都利用业余时间从开源中找到自己的价值。
然而,当个人开发者在一个开源项目中的贡献达到一定的程度(成为项目维护者),或是个人的开源项目发展到一定的规模时(具有一定用户数量),就会面临来自用户的压力。这个时候,仅仅依靠业余的时间来应对日渐繁重的用户需求,往往会有些力不从心,甚至影响原本正常的工作和生活。
Jacob Thornton 是一位资深的开源开发者。2010 年,Thornton 与设计师 Mark Otto 共同创造了前端开发框架 Bootstrap 并将其开源 —— 任何人都可以未经许可使用它,任何人都可以对其进行调整和改进。Thornton 表示,当初开源 Bootstrap 的动机也是受到经典开源精神的影响,他们认为这是一个很酷的挑战,它提高了他们在技术圈里的声誉,并且为人们提供帮助也让他们获得了成就感。随后,Bootstrap 的受欢迎程度激增,甚至连时任美国总统 Obama 的白宫官网也使用了他们的项目。“这是如此令人兴奋!”Thornton 说。但他们并没有因为制作了 Bootstrap 获得任何薪水。
随着 Bootstrap 用户数量的增长,Thornton 的业余生活也被大量来自世界各地的 PR 和 issue 淹没。“每周都有无数人给我们写 bug 报告,对新功能的要求,issue 和好评。”Thornton 表示,在下班后自己每晚要花四五个小时疯狂地在 Bootstrap 上工作,包括管理查询、回复 issue、编写新代码等。“下班后我无法和家人朋友一起吃晚饭”,因为他担心自己会让等待回复的 Bootstrap 用户失望。
如此坚持不懈了近十年,Thornton 和 Otto 以及少数核心贡献者仍在维护着 Bootstrap,但是压力已经足够严重,以至于 Thornton 经常想到要放弃。
事实上,大部分开源项目作者的境遇都与 Thornton 类似,项目管理者往往要比代码贡献者更苦更累。有一部分原因是参与开源项目代码贡献的大部分非核心开发者往往只做出了很小的贡献,例如修复了某个 bug。而编写和重新编写代码需要对整个项目有足够的掌控力 —— 事实证明,大部分项目只有极少数的核心开发者具备这样的能力。
当这些核心开源贡献者的付出与收入不成正比,甚至因为繁重的无偿开源工作影响到了正常的工作和生活时,放弃就是一个不得已的选择。毕竟他们也是人,也需要挣钱养家糊口。研究表明,所有的开源项目中约有 9.5% 已经被遗弃,另外还有大约 1/4 可能接近被遗弃的程度。
如果说开源项目的作者或核心开发者尚且有项目本身带来的名誉加身,而那些仅仅是为开源项目贡献了代码的普通开发者获得的关注度则要更少,在项目的发展方向发生变化时,这些人的利益往往更容易被忽视。
来自英特尔公司的开发者 Thiago Macieira 是一名开源爱好者,他曾长期为 Qt 项目贡献代码。今年年初,Qt 官方正式宣布将 Qt LTS 版本全面转入商业化阶段,不再向社区无偿提供稳定版本。这一变化让包括 Thiago 在内的 Qt 外部贡献者感到心寒,他们多年来出于热情向 Qt 贡献的代码被 Qt 公司当成赚钱的工具,自己却没有收到任何回报,甚至连无偿使用稳定版 Qt 的权利都没有。Thiago 表示,至少对于他在 Qt 中处理过的代码,他不会再参与修复、评论和审查后端错误报告。
与拥有专业团队的商业公司相比,个人开发者想要从开源工作中获取收入的渠道相当有限,但对于一个相对健康的开源生态来说,个人开源贡献者的利益理应得到人们的重视。
个人开发者如何从开源中获利?
在不违反开源许可证以及开源社区基本道德准则的前提下,开发者从开源项目中合理获利并不是一件坏事。
自由软件运动领袖 Richard Stallman (RMS)曾鼓励自由与开源软件作者合理利用开源软件赚钱,以更好地维持项目的研发和推广。Linux Kernel 维护者 Linus Torvalds 也接受着来自各大厂商的资助,从而能够全职进行 Linux Kernel 的维护工作。
开源产业编辑 Fernando Doglio 列出了六种个人开发者从开源活动中获利的方法:
1. Bug 赏金计划
BUG 赏金计划是很多大型开源机构面向个人开发者推出的一种赚钱的方式。开发者可以通过报告开源项目上的 BUG,也可以直接修复这些 BUG 获得来自项目官方不同程度的奖金。
目前拥有漏洞赏金计划的比较有代表性的组织包括:
- Mozilla:有两个主要的悬赏类别,一个是旗下的实际软件,一个用于其网站。第一个出价最高为 10,000 美元,第二个出价最高为 5,000 美元。
- Apache:Apache Web 服务器项目向那些能够解决最关键的错误的人支付最高 3,000 美元的奖金。
- Google Android:Google 会为发现和解决的最关键问题提供最高数十万美元的奖金。
此外还有许多拥有漏洞赏金计划的开源相关组织机构,可以在此网站上找到最新的漏洞赏金计划列表。总而言之,如果个人开发者能投入大量时间,通过这种悬赏的方式参与开源代码贡献也是一种很不错的选择,但需要开发者拥有信息安全方面的技能。
2.提供付费支持
提供付费支持是很多开源项目团队获利的经典方式之一。
如果开发者决定开始为某开源项目提供付费支持,则可以向其他人提供他们需要的有偿服务,这里有些例子:
- 帮助进行基本安装或使用。
- 代码和错误修复。
- 添加新的和额外的功能。
- 提供书面文件(例如书籍和教程)。
但要注意,如果你提供的支持包括对项目源代码进行更改,则需要核对项目采用的开源许可证,以确保其允许该类型的活动。当然,你不能只修改项目原作者的原始代码,你必须维护自己的产品副本。
3.出售增强功能/插件
例如,开发人员销售 WordPress 插件。用户可以免费下载并安装 WordPress,但WordPress 拥有丰富的付费插件生态,用户会根据自己的需求购买用于修改或增强现有功能的付费插件,开发者可以通过开发并出售这些插件获利。
这种获利方式的例子还有 Sidekiq 和 Blender:两种产品都遵循类似的模式,从某种意义上来说,它们都是开源的,可以免费使用,但是用户可以购买扩展插件来更好地使用它们。而付出了时间和劳动力开发这些优秀插件的开发者从中获利也是应得的。
4.出售代码以外的内容
与第 2 点类似,个人开发者还可以为开源项目编写用户教程等内容来获利,例如:
- 写和出售关于该项目的书籍教程。这可以通过与出版社推荐主题来完成。后者将负责编辑过程和发布步骤,让你专注于写作。当然,你必须与出版社分配收入,但这是值得的。
- 为一些内容付费平台创建视频课程。这样做会产生被动收入,就像书出版后一样。另外,这些平台通常会提供视频培训。
- 撰写有关产品的推广帖子。这并不意味着开源产品的所有者要向您付费以撰写这些帖子,而是使某些博客对该主题感兴趣,并愿意向你付费以提供有关其他主题的内容。
在所有这些情况下,重要的是要了解,要从开源产品中获利,实际上并不一定需要编写代码。你可以基于这些产品提供特定于用户的内容,只要市场有这方面的需求,而你恰好又花时间和精力去做了,以此赚钱也无可厚非。
5.来自用户的捐赠
GitHub、Gitee 等代码托管平台都拥有用户捐赠的功能,开源项目拥有者可以从这些平台获得来自用户的自发捐赠,当然这项收入的大小要取决于你的项目是否足够强大,以及你所在地区的用户是否足够慷慨。
以这种方式作为主要收入来源的开源项目有很多,大部分开源项目的官网都有捐赠入口。知名前端框架 Vue 的作者尤雨溪曾表示,在全职维护 Vue 的早期,其主要的收入也是来自众筹网站 Patreon 的用户捐赠。
6.用参与开源提升自己的职场竞争力
有时单纯的参与开源项目的代码贡献并不能带来直接的金钱利益,但开发者可以将这段经历写进简历里,以获得更多的就业机会。也可以通过参与大型公司旗下的开源项目,从而获得进入这家公司工作的机会。
例如,一位个人开发者为 TypeScript 做出一些有益的贡献,那么他就有可能成正为该项目的核心贡献者,从而获得微软的注意,甚至可以加入微软的 TypeScript 团队。
以上 6 点就是目前个人开发者能够从开源项目中获利的普遍方法。当然,能够完全依靠上述开源活动谋生的个人开发者并不多见,以此致富的人更是屈指可数。一方面是大多数开发者仅专注于技术,缺乏商业、运营、推广等相关经验,很难自发地从上述途径中找到适合自己的获利方法并执行下去;另一方面,大多数开发者仍然有自己的本职工作,更多的开源爱好者还是出于兴趣用业余的时间参与开源贡献,不求回报地为爱发电。
个人开发者是开源社区中一股不可忽视的重要力量,要让他们得到自己为项目付出应得的收益分成,来自社区官方的普惠性举措是不可或缺的。
业内的举措
一些开源相关组织机构也意识到了这一点。
去年 5 月,xs:code 平台宣布与 Redis Labs 展开一项新的合作,为创建与 Redis 相关的开源组件的开发人员提供财务支持。
xs:code 是一个允许开发人员在其免费和开放源代码之上提供付费产品和服务,从而帮助开源开发人员使用其代码与软件公司建立联系的平台。这些公司享受高度维护的代码,其可以选择从其开发人员那里获得付费支持和咨询,而开源开发人员则可以获得持续开发所需的财务资源。
几乎同一时期,微软旗下代码托管平台 GitHub 推出了为开源软件开发者提供资金支持的工具—— GitHub Sponsors,该功能允许开发人员提供各种资金捐助等级,并且可以从想要鼓励他们工作的支持者那里定期获得付款。为了激励企业与个人向构建有利于他们的开源技术的开发者支付费用,GitHub 还在去年 12 月推出了一个企业项目,让企业向开源项目开发者支付费用。GitHub 表示,这个项目已经大幅增加了资金量,从美国运通、AWS、Stripe、Indeeds、微软、Substack 和 Notion 等公司将数百万美元直接分发到了开源项目开发者的手中。
GitHub 产品总监 Devon Zuegel 表示,推出该计划主要有两个原因。一个是简单地对那些影响开源社区的开发者或从事赞助商欣赏的项目的开发者表示感谢。同时,一家公司可能会赞助某个从事其工作流程核心项目的人。掏出现金可以让这些核心开发者腾出更多时间专注于一个项目,或者更快地解决已知问题。
据悉,目前已经有数万名开发者注册了这个项目,数百名开发者利用这个项目全职为他们的开源社区服务,有些人甚至拿到了六位数的薪水。
有业内人士认为,现在仍有非常多的重要开源项目都在贡献者不求回报的辛勤付出下勉强维持,用爱发电的开源奉献精神固然伟大,但只有当越来越多的个人开源贡献者的劳动付出能够得到应有的回报时,整个开源产业生态才能健康地可持续发展。