想靠开源赚钱?
原文由 Matthias Endler 于 发布,订阅该博客
多年来,维护开源软件我一分钱都没赚到,我一度以为本该如此。直到去年我才开始研究如何让自己的项目变现,这次分享想聊聊目前学到的东西。虽然还没让我暴富(暂时还没!),但我已经通过 analysis-tools.dev ✨ 做出了第一个可持续的副业项目。
接下来我会聊聊这个项目和其他尝试,以及我在走向可持续的路上踩过的坑。
相关链接与资源:
- Caleb Porzio 的播客,探讨为什么围绕 GitHub Sponsors 创业如此艰难。
- The Changelog 播客——与 Zeno Rocha 对谈《从开源中赚钱也没关系》。
- Nadia Eghbal 关于我们关键信息基础设施的维护的分享。她还就此话题写过一本书《Working in Public》。
- Generating income from open source 一文,作者 Vadim Demedes,结合多个真实案例讲解了项目变现的不同方式。
以下是演讲的完整文字稿。(文字有点多,见谅。)
这是我在 2020 年底亚琛 Web Engineering Meetup 上关于靠开源赚钱的分享,主办方欣然允许我把它分享到自己的 YouTube 频道上。说到底,我想回答的问题是:“为什么我在 GitHub 上赚不到 10 万?”我会聊聊如何为自己寻找企业赞助,以及开源维护走向可持续的漫长道路。
你或许根本不想开始。这场分享是讲给那些觉得“如果要这么久才看到回报,就不值得在开源上投入那么多精力”的人听的。结果这个演讲有点丧。我本来想做一场很励志的分享,但现实是,这事很难——我说很难,是真的非常难。
我就想把这一点说清楚,或许还能激励你去尝试,不过先说说:我凭什么来讲这个?我做开源已经十多年了。这场分享算是献给 15 年前的自己。我在位于杜塞尔多夫的酒店搜索公司 trivago 工作,博客是 endler.dev。跟所有人一样,我也有个 YouTube 频道,叫 Hello, Rust!,更新极其勤奋——每两年一更。所以你肯定不想错过更新,记得订阅。不过今天我想聊的是开源,我准备了一个非常“精妙”的大纲,只有两点:我的经历和盈利模式。
让我们回到 2010 年,那时的世界确实很不一样。

这就是当时的 GitHub,我入场算有点晚。2010 年 1 月我才注册,那时 GitHub 已经两岁了,所以想要的用户名早已被占用。我在各个平台上常用 mre 这个昵称,发现这个 ID 居然没人用,就给官方发了封邮件问能不能给我,结果有人回复说“拿去吧”。那个人就是 Chris Wanstrath,ID 叫 defunct,当时是 GitHub 的前 CEO,从那一刻起我就入坑了。我很喜欢这个平台,很喜欢他们那种亲身投入开源的方式。我把自己的一些项目放了上去,比如截图里你能看到我上传了自己的博客,因为他们提供免费托管。当时博客是用 Jekyll 做的,只要推送到他们的服务器,就会自动静态生成,完成发布。不用说,过去十年几乎没什么变化——我的博客现在看上去还是差不多。只不过不再用 jQuery 和 Jekyll,而是用 Zola 和 Cloudflare Worker Sites 搭建,但本质上还是那一套。为了准备这次分享,我想回头看看自己从哪儿来、现在在哪儿,最好的办法就是查些数据,看看仓库数量随时间的变化能不能说明问题。于是我调用了 GitHub API。
你可以看到,从 2010 到 2020 年,基本是一条直线,只有 2018 年似乎达到了生产力的巅峰,不过也就那样。总体来看就是线性增长,你可能会说,投入多少就得到多少回报,但实际情况并非如此。这里有复利效应。如果看我获得的 star 数随时间的变化,就能发现起初增长很慢,现在则近乎指数级增长,目前所有项目的 star 总数已经达到 2.5 万。另一个角度是关注者数,这对我来说是个新指标,我从 archive.org 上查了一些数据(因为 GitHub API 不提供这个),同样呈现出近乎指数级的增长。
你投入一些工作,却能得到工作本身加上利息的复利回报。这不是运气,而是积累,说明你知道自己在做什么。但与此同时,有个无法回避的问题——这不过是口头表扬而已。到目前为止,我们一分钱都没赚到,于是问题来了:如何把这些努力变现?
首先,这是不是一份工作?
我不知道你们怎样,但我平均每天大概要花两三个小时在开源上:思考开源、创建新项目,还有维护和代码审查。所以这确实是工作,而且工作量不小,而你基本是免费在做。
免费做事、把它当爱好本身没什么不对,但这本该是你想做什么就做什么。开源不是这样;有时候你会感到有责任、觉得有义务去帮别人,这也是很大一部分。你在日常工作之外做这些,真的会成为负担。如果你到现在还不明白,让它产生价值有多难——是真的非常难。我想聊聊几种从开源中建立正常收入模式的方法。不用说,如果你看过前面的图表,这本来不该是你一开始就关注的重点。但当你到了想获得一些收入的阶段,就有几个选项。我不想谈把开源作为公司业务的一部分,也不想谈大公司或更大额度的资助。我想聚焦在每个人都能做的几件事上。在 GitHub 上获得赞助算一种。在常规文档之外提供付费的学习材料,比如你做一个收费的视频系列。像 Mozilla 那样卖周边。还有在开源项目之外提供咨询。以及面向企业的服务和插件,比如写一个 ADFS 插件或高可用功能,这些都是针对企业客户的常见付费功能。
但我们先从最基础的说起,先说第一点:赞助。赞助分两种:一种是个人捐助。个人赞助就是 GitHub Sponsors 的核心。如果你想靠这种模式赚钱,就得思考转化漏斗,思考如何抓住人们的注意力、如何变现。它从产品开始,产品可以是任何东西,由此产生兴趣,兴趣聚集起受众,受众最终可能会为你的服务付费——这就是靠任何产品赚钱的全部秘密。想靠开源吸引赞助,你就得做出人们想要的产品。
如果把这个套到开源上,构建项目可能就是建一个仓库,star 数代表受众的兴趣,受众本身由关注者构成(个人关注者或公司关注者),而这些关注者最终可能会或不会成为赞助者。我知道 star 是个很糟糕的流行度指标,因为每个人使用 star 的方式不同。比如有人把它当书签以后再看,有人则是想感谢开发者的付出,等等,但它仍是一个不错的初步估算。
现在想想下面这个问题。想想我有多少 star、多少关注者、多少赞助者,想想我现在的“漏斗”。我刚才说我有 2.5 万个 star,大约 1000 个关注者,其中只有 3 个赞助者,所以 star 与赞助者的比例是 0.01%。这看起来相当惨淡。意味着你大概需要 8000 个 star 才能换来一个支持者。我当时想:“也许只是我这样?”也许 GitHub 上排名前 1000 的维护者没有这个问题。结果发现,情况完全一样。如果你看前 1000 名 GitHub 维护者的赞助情况,同样是一幅惨淡的景象。比如看中位数,每人有 3421 个关注者,赞助者中位数却是零。按我的计算就是 0%,如果看平均数,因为有 Linus Torvalds 拉高了数值,平均有 5430 个关注者,平均赞助者是 2.8 个,也就是 0.5% 左右,比我稍好一点,但大致在同一水平。再想想:GitHub 有 4000 万用户,所以前 1000 名维护者只占整个社区的 0.0025%,而这些维护者在 GitHub 上的收入中位数基本就是零。
这本身也许还不是最大的问题,但别忘了,GitHub 在 2019 年的营收是 3 亿美元。昨天我在 Hacker News 上看到一条评论:
我在 GitHub 上有赞助者,每月能赚足足 2 美元。扣税之后就更少了,所以我还得有一份日常工作。
显然这套模式行不通。你得想别的方式让开源变现,或者就等着 GitHub Sponsors 变得更受欢迎——看哪个先发生。我想简单提一下 sponsorware 这个概念。这是个比较新的概念,有些人还没听说过,我个人很喜欢。大致意思是:你先创建一个项目,保持私有,但在 Twitter 或其他平台上宣传,说:“嘿,我在做这个东西,想提前体验就得先成为赞助者”,等达到一定的赞助人数或收入门槛后,再把项目公开。我前面举的那个在开源上赚 10 万的例子,就是这么做的。他先做产品和服务,进行宣传,最后再向所有人开源。
这样做有几个好处:第一,你能从真正相信你使命的人那里尽早获得反馈;第二,你不用一直免费打工;第三,你还可能为项目制造受众和热度。缺点是,如果你是坚定的开源或自由软件信仰者,这就违背了你的伦理——你希望软件一开始就是开放的,没有任何附加条件。所以你得自己权衡。我试过,我有一个只对赞助者开放的抢先体验计划。我的第一个 sponsorware 是一个获取 GitHub 统计数据的工具,这场分享里的统计数据就是用它做的。我觉得要玩转这个,你需要很大的受众。问题在于,你是否愿意投入那么多精力,还是干脆一开始就直接开源,再去考虑别的盈利模式。不过我觉得这仍然是个很有意思的概念,未来可能会更常见,所以先让你知道它长什么样、有个名字。
另一种是企业赞助。这是一把双刃剑,因为企业给你钱,有时就会想要点什么。他们可能想要额外的支持,或希望你修复某个 bug,感觉上就好像你开始为他们打工了。不过,这些企业如今确实在开源上投入了不少钱。看看两家大公司,Facebook 和 Google,它们在 Open Collective 这个捐助平台上,整个生命周期里分别向开源投入了 17.7 万和 84.5 万美元。这很棒,我们需要更多企业这么做。但顺带吐个槽,我觉得这些公司做得远远不够。
Facebook 去年的营收是 700 亿,Google 是 1600 亿,都不少。所以我真的怀疑这是他们能做到的极限。当然,Google 也向 Mozilla 等其他项目捐过款,也会组织 meetup 等等。但你真的认为,如果当年没有 Python、没有 Web 服务器、没有 Linux,两个斯坦福学生在车库里捣鼓的搜索引擎还能发展成今天的 Facebook 和 Google 吗?有时候我觉得财富 500 强公司根本没意识到他们对开源有多依赖,也没意识到有多少人依赖着少数几个维护着关键基础设施的人。
我不认为他们对开源的投入足够多。很多人以为开源是像左边那张图那样,一群工程师围在一起商量怎么把项目做得最好,而现实更像是右边这样——有人深夜还在修 bug,只是因为他相信这件事。公众的认知可能是错的,实际上只有一小撮人在维护关键基础设施。有时这会导致非常棘手的局面。我童年时的两位偶像就公开谈过这个问题:Kenneth Reitz 是 Python 的 requests 库的核心维护者,antirez 是键值数据库 Redis 的作者,一个做前端一个做后端。他们都在谈倦怠,因为成为大规模开源维护者的负担,很快就会让人精疲力竭。互联网从不睡觉,你也别想睡,你总会收到工单、功能请求、Pull Request、Issue,总有做不完的事,再加上其他本职工作的责任,很容易就被压垮。还有一位我非常敬重的人,叫 Mark Pilgrim,他是《Dive Into Python》的作者,曾经一口气删光了自己在互联网上的一切。有个词专门形容这种行为:infocide,也就是“信息自杀”。他受够了整个生态。说到 Ruby 社区,你可能还记得 _why,他写了《Poignant Guide to Ruby》,也做了类似的事。回到 antirez 的话,“一旦我开始收钱做 Redis,出于道义我就再也不能像以前那样工作了,所以我开始强迫自己按正常作息来。这对我来说,多年来一直是巨大的挣扎。到现在我确信,因为这样我做的比我能做的要少,但事情就是这样运作的”,感觉他因为被迫进入这种工作节奏、可能表现不够好而感到愧疚。这在我看来已经是倦怠的迹象,这就是开源与金钱那种又爱又恨的关系。一旦你接受了钱,它就成了工作,但你大部分时间不是在写代码,而是在写演讲稿、审查 Pull Request、看 Issue、在 Stack Overflow 上回答问题、在 Discord 上讨论、在 YouTube 或大会上做宣传。当你在开源领域小有名气后,感觉就像在两个选项之间做选择:要么抑郁,要么倦怠。如果项目没成功,你会觉得自己是个失败者,项目 0 star,没人喜欢。但如果成功了,所有人都喜欢你,你又会被热情“拥抱致死”。这真是个尴尬的处境,你想不再被这些责任压得喘不过气,就得设定清晰的边界,选好自己要承受的代价。接受企业赞助时也要小心。我想举一个可行的例子,也指出一些风险。今年早些时候,我开始做一个拖了很多年的正经项目。
你看,2015 年 12 月,我在 GitHub 上建了一个静态分析工具的列表。静态分析工具就是帮你改进代码的工具,事实证明这类工具非常多,光是把它们收集起来就是第一步。当时我没多想,但随着时间推移,这个列表变得相当受欢迎。你可以看到 star 数随时间基本呈线性增长。2018 年,我开始认真思考,这里是否不止是一个 GitHub 项目。我和很多人聊过这个想法,想把它做得更大。真正推我一把、让我下定决心的是 Jakub。他说:“为什么不做个网站呢?”于是我们大概花了两个周末搭了个网站,用 Gatsby 做的,不过用什么技术不重要。我们就这么做了,然后看看会怎样。现在我们展示了 500 个工具,最初的反馈非常好,大家似乎很喜欢。第一天就有 72 万次请求,接下来一周左右,累计达到了 150 万。这很棒,因为突然大家开始对这个项目感兴趣了。于是我们开始找到一些赞助商。这些公司很特别,因为他们相信你的使命,也懂得开源是怎么运作的。他们并不真的指望你去给他们的工具打广告。他们想面向开发者销售,所以想在开发者心里刷个存在感,说:“嘿!你是开发者,我们做了个很棒的工具,你可以看看!”同时他们也会被视为对开源友好的公司。我觉得这是双赢。我得说,事情并不总是这么顺利,有时企业就指望你提供廉价的广告位,一旦发现点击量不高就立刻撤了,但也有企业明白,他们投资的是可能一两年后才见效的东西。所以我很感激有些公司能理解这一点。不过,企业想要的东西和个人想要的不一样。企业需要发票,需要可抵税的凭证,需要有人保持项目运转、能通过邮件及时响应,所以你确实有这些义务,而 Open Collective 这个平台能帮上忙。他们为开源项目提供 501c6 财政托管服务,也就是说他们会负责开票、正式担任托管方。如果你作为开源维护者或贡献者想为自己的工作获得报酬,就得向 Open Collective 提交发票。
我觉得这是两全其美的办法。同样,因为整个流程非常透明,企业能随时了解情况,也不用处理那些财务上的琐事。但这也意味着你得好好打磨自己的公众形象。企业很想知道赞助你能得到什么,你必须把这点说得非常清楚。你最重要的页面可能不是你的官网,而是你在 GitHub 上的赞助页面,在那里你要描述不同的赞助档位以及每个档位意味着什么,所以我们设了三个档位:一个面向小公司和自由职业者,他们能获得曝光,被视为对开源友好的技术公司,一个月 100 美元。中间一档是面向更大的公司,他们也能获得徽标,还能得到一篇关于他们想推广的静态分析工具的博客文章,但我们会明确标注这是赞助内容。最后,如果你想做到极致,就可以选择全方位的内容创作,可能是视频 workshop,不过我们暂时还没有视频 workshop 的赞助商,所以还不能多说。但我得说,我真的很想试试,而且就你得到的东西而言,这真的很便宜。
总之,这些都是你今天就能做的事。无需真正改变你做开源的方式,把这些设置好,然后看看会怎样。可能没人回应,那也没关系。列表上的其他选项都算是进阶玩法,你需要有受众,所以应该从这里开始。
付费学习材料是我们未来在 analysis-tools.dev 上要做的,比如视频课程。像 tailwind 这样的公司在这方面做得非常出色,你可以向他们学习。做周边需要有品牌,所以这不是我能做的,但像 Mozilla 或 YouTube 上的 Coding Train 这样的项目或频道就完全可以。咨询永远是个选项,但工作量也大得多,可能会让你偏离真正热爱的事,所以它真的就成了一份工作,你得想清楚是否愿意这样做。企业服务则非常进阶,可能只适用于那 1% 能在商业环境中运行、有特殊需求的项目。我得说,从最上面开始,一步步往下走。先去建立受众。在 Twitter 上建立受众,再导流回 GitHub,可能比反过来更容易。哦对了,顺便说一句,我有说过这很难吗?我真的不想以低沉的调子结尾。我想强调的是,如果让我重新来一次,我还是会这么做。我觉得现在投身开源再好不过了,可能明天会更好,因为突然有更多人感兴趣,搭建项目也更容易了,你有 VSCode、GitHub Actions、免费托管等各种免费工具。只花很少的钱就能做出很多了不起的事。所以你可以试试。最坏的结果是什么?没人关心?好吧,那你就跟我一样了。不过如果你想今天就开始,我有几个小建议。我的第一条建议是:做好功课。很多人先学习,然后去构建,再闭环,但这里缺了关键的一环。有些人讨厌这个词,但你最终会爱上它——它叫营销。营销对不同的人有不同的含义,但对我而言,它就是把消息传出去,因为如果你不说,别人会说,而你很棒,你只是还没意识到。也许不是所有人都能马上知道你的项目,所以你真的应该多聊聊。也许是在大会上,也许是在 Twitter 上,也许只是告诉你的朋友。也许你可以请别人来贡献、来支持你。不知为何,社区里有点鄙视做营销,觉得你这么做就不够“纯粹”,但我觉得不是这样。我觉得如果聪明、耐心、热情的人去做营销,世界会变得更好;因为我敢肯定,那些不怀好意的人一定在做营销。所以做好功课,但要明白,成为开源维护者就意味着在经营一家企业,而你就是产品。你得想想别人为什么要赞助你,因为如果你自己都想不出答案,别人又怎么会知道呢。还要想想转化漏斗。人们会怎么找到你?找到你的最好方式,或许就是开个 YouTube 频道。
当然,也有更轻松的办法。
[首先,]你随时可以在别的项目里帮忙,而且你甚至不需要会写代码。如果你擅长设计,我可以告诉你,有太多开源项目需要设计师了,多到离谱。也许可以先为一个小项目做个 logo,慢慢获得一些曝光。另一个就是保持乐趣。如果你知道在开源中赚钱很难,那反而能让你放轻松,因为这意味着你可以去尝试、去创新,是啊,保持乐趣才是最重要的,我想。
第二,构建你热爱的东西,因为归根结底这是你的业余时间。项目被人发现的概率本来就很低,所以它最好是你真正感兴趣的东西。如果你不再相信它了,就转向下一件事。放弃一个你不再相信的项目完全没问题,除非有人是混蛋才会对此指责你,而你也不想和混蛋待在一起。
第三,找到友善的人,因为你会和社区一起成长。你希望有人支持你的项目,甚至最终成为维护者来分担负担,而找到一个维护者有时需要很多年,所以永远要友善,试着站在对方的角度思考。力所能及就多走一步,比如帮对方把 master 分支合并到他的 Pull Request 里,直接帮他做了。如果不确定,就多说一句谢谢。
第四是扩大受众。激进的营销是一种方式,但平易近人、包容开放是另一种方式。你要成为那种当别人有难题、或想知道如何入门开源时会去求助的人。你要成为那个在他们第一次提交 Pull Request 时伸出援手的人。他们会千倍回报你。迄今为止我遇到的最棒的人,都是愿意回答问题、又不求任何回报的人。你会把他们深深放在心里。时机成熟时,你会记得这些人,会说:“这是个非常棒的合作者,我强烈推荐”,这就是所谓的销售线索。
最后,要做好长期投入的准备。好事多磨。你看,我花了 10 年。也许你只要 5 年,甚至更少,但这很可能不是一夜成功的事。这真的是一项长期投资。
随机一篇博客
评论
登录后参与讨论