Launching a Side Project Backed by Github Sponsors

Matthias Endler

借助 GitHub Sponsors 上线一个副业项目

原文由 Matthias Endler 发布,订阅该博客

昨天我们上线了 analysis-tools.dev,说实话,反响之热烈远超我的预期。

这是一个用于对比静态代码分析工具的副业项目。静态分析无需运行代码就能检测出源码中的缺陷,从而提升代码质量。

这个项目最棒的一点在于它是完全开源的。我们想做一款不靠展示广告、也不靠追踪用户的产品。取而代之,我们只在 GitHub 上寻求赞助——就这么简单。在这个过程中我们学到了很多,如果你也想尝试,不妨继续往下看!

先来看一些数据

大家都喜欢看业务数据,来看看我们的:

  • 项目最初是 2015 年 12 月在 GitHub 上的一个 awesome list
  • 目前收录了 470 款静态分析工具。
  • 流量持续增长,目前已收获 7.5k 个 star,超过 190 位贡献者。
  • 每周有 500 至 1000 名独立访客。
  • 我想做这个网站已经好几年了,直到同事 Jakub 在 2020 年 5 月加入,才终于让它成为现实。
GitHub star 数随时间变化。这张图简直在呐喊:商机来了。
GitHub star 数随时间变化。这张图简直在呐喊:商机来了。
来源:star-history.t9t.io

“做个网站怎么花了五年!?”我仿佛听见你在问。因为我觉得这个想法太显而易见了,肯定早就有人试过却失败了。

我一直在拖延,哪怕根本没人来填补这个空白。
我一直在拖延,哪怕这五年来我一直在持续更新这个清单,只为了解市面上有哪些工具。
道理你应该明白了:别拖太久。当一个想法听起来很显而易见时,很可能它本来就是。

盈利模式

我们花了好一阵子才想明白怎么在财务上支撑这个项目。我们很清楚自己不想要什么:不想做一个靠 AdWords 堆砌的 SEO 垃圾场,也不想把“用户数据”卖给追踪方。

我们对 GitHub 上的贡献者负有责任,要让所有数据对所有人免费开放。那还能围绕它做出什么样的服务呢?起初我们想过自己承担基础设施成本,但那样我们就没有动力去维护网站或扩展新功能了。

那时 GitHub Sponsors 还很新。但当我们意识到这是一个可选项时,顿时豁然开朗:不惧怕与竞品对比的公司,有动力去支持一个促进这种对比的开放平台。而且,这样我们还能避免偏见,打造一个让对比更客观、更易得的产品。

赞助或许能成为对抗无灵魂增长的解药,让我们得以建立一个精简、可持续的副业。我们从没指望 analysis-tools.dev 能成为一份全职工作,这个市场也许太小了——但也没关系。

技术选型

确定了盈利模式后,我们就能专注于技术了。我们俩都是工程师,这有助于快速迭代。

起初我想用 Yew 来搞点花哨的东西。它是一个 Rust/WebAssembly 框架,而我这个人就喜欢 Rust/WebAssembly……

还好 Jakub 提议了另一个方案:Gatsby。老实说,我对 Gatsby 根本无感。我当时就这么跟 Jakub 说的:“我对 Gatsby 一点兴趣都没有。”但恰恰是这一点很关键:不对某个工具抱有执念,才能让我们专注于任务本身,而不是工具。这样反而能做成更多事!

接下来的事就顺利多了:我们用了一个 starter 模板,Jakub 教我 GraphQL 集成是怎么回事,我们甚至还用上了 Rust!网站跑在 Cloudflare 上,是一个基于 Rust 构建的边缘 worker。(好吧,我算是耍了点小聪明。)

数到三,MVP 诞生!

寻找赞助者

原型是有了,但赞助者还是零。接下来开始的(而且直到现在仍是)迄今为止最难的部分:说服别人支持我们。

我们还算聪明,没有去群发陌生邮件,因为大多数公司根本不会理会。相反,我们转向自己的人脉,发现之前有不少开发者曾主动联系,希望把他们公司的项目加入 GitHub 上那个旧的静态分析清单。

这些人成了我们首批联系的对象。我们尽量让邮件简短、有人情味。

效果最好的是一封中等长度的邮件,附上一些背景信息,并提醒对方他们曾为项目做过贡献。我们还在邮件里附上了我们的赞助页面链接。

企业想要可靠的合作伙伴和合理的价值主张,因此前提是赞助页面必须精雕细琢。

我们的 GitHub Sponsors 页面
我们的 GitHub Sponsors 页面

就像《星球大战9》一样,我们收到的评价褒贬不一:很多人根本不回复,有人把消息转给了经理,而经理同样不回复,还有人则根本对赞助开源项目不感兴趣。这都很正常:大家都很忙,而且 sponsorware 还是个相当新的概念。

小小地抱怨一下:我认为,相比科技公司从开源中获得的价值,它们赞助的力度远远不够。如果当初没有 Linux 这样免费的操作系统,或 Nginx、Apache 这样的 Web 服务器,你们的公司还能成立吗?

不过,也有少数回复者表现出了兴趣,只是需要一些指引。对很多人来说,这是他们第一次通过 GitHub Sponsors / OpenCollective 赞助任何开发者。

好在我们用 OpenCollective 作为财务托管方,由它来处理开票和捐款转账。他们的文档在我们起步时帮了大忙。

寻找赞助者的任务永远不会结束,但当得知 DeepCode——一家基于 AI 的语义分析服务——愿意给我们一次机会时,我们感到非常欣慰。

多亏了他们,我们才得以把产品推过终点线。正因为有他们,我们才能让网站对所有人免费,也才能让网站保持无广告、无追踪。

作为回报,DeepCode 得以接触到众多关注代码质量的优秀开发者,他们可能会成为忠实客户。同时,他们也被认可为一家对开源友好的科技公司——如果你想销售开发者工具,这一点如今比以往任何时候都更重要。双赢!

市场推广

Jakub 和我以前都创过业,但这是我们第一次真正打造一款开放的产品。

第一阶段:尽早发布 🚀

我们决定软启动:尽早部署网站,让爬虫来收录。页面采用静态渲染并遵循了一些基本的 SEO 准则,这确实有助于随着时间推移提升搜索引擎排名。

第二阶段:向目标用户征求反馈 💬

在获得一些自然流量和首批投票后,我们请开发者朋友们来测试页面,并为他们了解和喜爱的工具投票。这算是早期验证,我们也得到了不少坦诚的反馈,帮我们发现了最明显的缺陷。

第三阶段:准备发布公告 📝

我们写了一篇博客文章,虽然有点标题党,但确实起到了作用:《静态分析已经崩坏——让我们来修复它!》。它基本表达了我们对这个领域的不满,以及为什么构建一个开放平台很重要。我们本可以更好地解释不同分析工具之间的技术差异,但那就留到以后再说吧。

第四阶段:在社交媒体上官宣 🔥

就在正式官宣前不久,我们发现搜索功能坏了(当然了)。原来,我们比预期稍早一点就用完了 Algolia 的免费额度。😅 不过没什么大不了的:跟 Algolia 客服快速沟通后,他们就把我们转到了开源计划(我们之前都不知道还有这个)。我们又重回正轨了!

顺带一提:Algolia 的客服非常棒。响应迅速、懂技术、乐于助人。事实证明 Algolia 非常适合我们的产品。响应时间始终保持在几毫秒,与 Gatsby 的集成也快速又简单。

那条推文带来了不小的热度:63 次转发、86 个点赞,且数字还在增长
那条推文带来了不小的热度:63 次转发、86 个点赞,且数字还在增长

显然,大家都知道我们是在寻求支持,但我们对每一个点赞和转发的人都心怀感激。这种时候,有一群志同道合的人脉就能派上大用场。

一确认网站没有完全崩掉,我们就去 Lobste.rs(2 个踩)、/r/SideProject(3 个赞)和 Hacker News(173 个赞,57 条评论)上发布了消息。社交媒体有点难以预测,不过针对不同受众调整话术并保持谦逊总是有帮助的。

所有这些推广努力带来的反响简直疯狂

发布当天的流量
发布当天的流量

或许并不意外,Cloudflare 的边缘 worker 连汗都没出。

Cloudflare 上边缘 worker 的 CPU 耗时
Cloudflare 上边缘 worker 的 CPU 耗时

我的老板 Xoan Vilas 甚至还做了一次快速的性能分析,并表示认可。(谢谢老板!)

大家纷纷击掌庆祝!

接下来呢?

当然,我们会添加新功能;当然,我们对未来还有更多计划,诸如此类。先不说这些,让我们回望一下这个里程碑:一个没有广告、没有追踪、完全由赞助支撑的健康小生意。🎉

最后,我希望你能扪心自问,找到属于自己的那个小产品去打磨。它很可能就在你眼前,而你和曾经的我一样,已经拖延了太久。好了,别再拖了!下一个成功故事就属于你。去动手创造吧。

哦等等!……在你离开之前,能不能去 analysis-tools.dev 看看,给你喜欢的几个工具点个赞?嘿,如果你今天特别慷慨(或者你有一个非常支持开源的优秀雇主),何不去看看我们的赞助页面

我和 Jakub 在奥地利维也纳。其实我没那么矮。
我和 Jakub 在奥地利维也纳。其实我没那么矮。

本文章由 muse-spark-1.2-contributor 进行翻译

评论