作为程序员,Github 是第一个绕不开的网站。我们每天都在上面享受着开源带来的便利,我相信很多同学也想自己做一个开源项目,从而获得大家的关注。然而,理想很丰满,现实却是开发了很久的项目仍然无人问津。
最近,我的一个项目获得了超过 1000 star 的成绩,我认为这是一个重要的里程碑。这个项目已耗时 5 个月,起初我并未预料到会获得如此多的支持。在本文中,我将分享本次项目的经验,祝愿大家也能早日拥有第一个 1000 star 的项目。
背景
几个月前,我在写作时突然冒出一个想法:为什么每次写作都要四处查阅资料?这些内容在写作前明明已经反复论证过,写作只是一个总结过程而已,问题究竟出在哪里?
究其原因,是没有形成良好的记录习惯。研究某项技术时,频繁地复制粘贴、切换应用会严重影响思路。即使快速记录,写作时面对凌乱的记录,也会导致查找困难,效率低下。此外,记忆力衰退也是一个因素,很多事情只能记住流程,无法记住细节。
因此,我打算开发一个小工具来快速记录这些内容。最初的想法是通过截图记录,然后利用 OCR 识别图片中的文本,最后在写作时,通过 AI 的能力整理识别后的文本。在后续版本中,我又增加了 Markdown 编辑器,使得记录与写作的流程完全打通。这个思路也受到了大量支持者的欢迎。如果有兴趣,可以试用一下 NoteGen。
做开源项目可以获得什么?
无数大佬都在各自领域默默奉献,才有了今天飞速发展的局面,我们都是站在巨人的肩膀上,在开源的世界里添砖加瓦。做开源的好处有很多:
- 获得关注,这是一种很特殊的情绪价值。
- 学到技术,既然要做为何不尝试一下新的技术?
- 规范开发的流程,提高了写作和交流能力。
- 建立个人品牌,获得人脉关系,职业发展机会。
- 等等...
GitHub 作为程序员的技术名片,你在 Github 的一切贡献都将会成为简历的亮点。我曾经在面试时收到了大量重复的简历,无非是用了某某框架、某某组件库,爱岗敬业之类的话术,如果这时你的简历上出现了参与过某些开源项目,拥有多少 star,你就会在这堆简历中脱颖而出。
勇敢迈出第一步
无论你想在开源项目中获得什么,首先要做的就是迈出第一步。要知道,每个人都是从小白逐步成长起来的,但你需要有迈出第一步的勇气,不要顾虑自己的代码是否写得不好,功能是否强大。只要能解决某个问题,就可以着手去做。先做出第一版,走通流程,后续可以逐步去完善它。
能拔脓就是好膏药。
请无视那些只会站着嘲讽的人,他们可能会说你在重复造轮子。即使你在重复造轮子,你也应该做一些特别的轮子,即使只是轮毂变了一些样子,你也可以吸引到一些忠实的用户。
开源都可以做些什么?
在 Github 上你可以看到各类的仓库,几乎你能想到的这里都可以找得到,在做之前可以去搜索一下,看一下别人是如何做的。如果你还不清楚自己要做什么,我在这提供一些方向供大家参考:
- 开发 app,这类其实很容易收获到大量的关注,因为大家可以直接下载安装包即可体验,不需要复杂的环境搭建,我做的就是独立开发三件套之一的笔记,再不济也可以去做高仿 app,也可以收获一些想学习开发技术的用户关注。
- 框架、插件、组件库类,这也是经常被喷重复造轮子的,其中框架和组件库其实很难做得起来,他们真正的运用在实际工作中,大家不会轻易去变动。
- 后台解决方案,这类开源项目也有很多,不乏获得几万 star 的项目,想做好这一点,需要你拥有丰富的实际工作经验。
- 写作,我认为写作也是一种开源,将你的经验分享给大家。
- Awesome... 这类通常需要持续对业内关注,通常要在经营上去花时间。
- ...
能做的还有很多,比如我这些年也做过很多小工具:
- 好医生自动学习考试 Chrome 插件,给我媳妇开发的浏览器插件,她是护士,每年被在线学习搞得很痛苦,花几百块就可以不用学,在我的研究下,发现了网站一些很弱智的漏洞,直接做到了视频秒学和自动考试的功能。
- 掘金小号管理平台,我自己偶尔会写写文章分享,但是一年可能也憋不出几篇文章,有的时候写完感觉又没人给点赞,就想自己给自己点,然后用 nest.js 写了后端,pupppeteer 实现了爬虫,当时研究破解滑块验证码在知乎写了一个回答《滑块验证码能被机器破解么?》,居然得到了 1k+ 赞。但是由于注册小号太麻烦,也不敢给自己点赞怕被封号,后来直接开源了,不过也没见到有人用。(大家都很正直嘛)
- VS Code 翻译插件,这个我自己用了好多年了,有几个同事被我安利也在用,当时弄的是动态获取 token ,所以无需配置就可以用。但是最近发现不能用了,我也没空去管他。
- VS Code 摸鱼插件,平时总看头条,直接开发了个在 vscode 中看头条的插件,后来也是闲麻烦,直接光明正大摸鱼了。
- 前端脚手架,我职业成长的见证,技术从最开始的 gulp 到后来的 webpack 、vite ,从 jquery 到 vue3 ,但是现在又更多好用的脚手架可用,我已经不需要它了。
生活中处处充满了需求,你将它做出来,可能就会有人去用。
参与开源项目也是一条不错的道路,我在 uni-app 团队待过几个月,跟着几个大佬也学到了很多。
如何经营?
此时,你已经开发完成第一版,觉得不错,发布了第一个 release,发现还是无人问津,因为开源不仅是公开你的代码,你要检查一下是否这几项还没有做?
- README.md,请完善它,这是你项目的门户,任何用户看到空荡荡的介绍都会失去继续下去的兴趣。你应该在这里写清介绍、特性、使用方式等等。
- About,它在页面的右上角,请完善 Description 和 Topices,这样可以更加容易让大家搜索到你的仓库。
- 建立官网和文档,大家基本没有查看源码或自行摸索去使用的耐心。
小技巧,README 徽章可以提高你项目的专业性(看起来)。
这里可以清洗的展示项目构建通过,当前版本号,软件状态(alpha 指开发的早期阶段),下载量,维护频率。
另外就是演示,没有什么比图片或视频更能吸引人的了。
从此就会有零星的用户访问你的仓库,如果你戳到了他的痛点,他就会留下 star。
你可以通过 Insights -> traffic 来查看每天有多少用户访问,这些用户来自于哪里。
可以看到最多的是一个来自于 v2ex 的论坛,这就是我要继续讲的话题。
如何推广?
经过你的不懈努力,你觉得项目已经非常好用,但是只有获得了几个 star,其中还有几个是你朋友的支持。此时你应该做的是去推广它们,谁会去注意暴风中的那一片树叶呢?
酒香也怕巷子深。
可以看到 NoteGen 项目初期 star 涨速非常缓慢,因为这段时间我没有去做任何推广,完全是靠自然流量。
直到 2025 年春节前夕,我发现有几个大 V 通过微博、twitter 等平台宣传了我的项目,实现了一波 star 飞速增长,此后,也陆陆续续一些小博主或媒体在发,但是几乎没什么流量。没了大 V 加持,我的流量很快就落下来了,随后我开始了在各种技术社区论坛推荐我的项目。
这里我介绍一下我平时推广的社区:
- 掘金,自从字节接手之后,质量已经远不如从前,大家很难分到流量,充斥着各种 AI 水文和自家产品的广告,有 CSDN 那味了。
- 知乎,你可以将自己的开发经验或将自己的产品发布在某些问题下,流量会比掘金好很多。
再后来我发现论坛才是推广的好地方,可以得到更高的曝光量:
- LINUX DO 这是一个新兴的社区,进来你就会看到《请不要把互联网上的戾气带来这里!》的置顶帖,所以这里人都非常友善,即使你的项目不是很优秀,大家也不会对你阴阳怪气,你可以放心大胆地发。
- V2EX 访问它需要梯子,而且现在的邀请码比较难搞,花钱都不一定有人卖,这是个绝对专业的社区,里面有很多大佬,如果你不怕被嘲讽可以在这里发一波试试。
你可以选择自己常用的社区,一般老账号总也可以获得更高的流量吧。
请注意,大家不要水贴,也不要过于频繁的去发,避免大家产生厌恶。如果你写作能力不错,我建议还是去写一些开发过程中的技术总结,夹带项目地址,这样也可以获得一些流量,算软广吧,至少可以让有这方面需求的人能学习到一些知识。
另一种获得流量的方式:噱头。
这里说的噱头请不要做标题党,例如 《一大早起来,看到 GitHub 让我立遗嘱?》,大家喜闻乐见,觉得很有意思,顺便就给了 star。
维护好你的社区
通常情况下,你的用户会通过 issues 向你提供建议或提交 bug,这里是一个健康的开源项目最重要的环节。
你可以为每一条 issue 添加标签,以记录你未来将如何处理他们。积极的去处理每一条 issue,尤其是 bug,你应该去感谢这些无偿帮你测试的人,尽量将其解决,然后 close。
提建议的人很多,但是无需盲目遵从,你可以开通 discussions,更加方便的让大家去讨论如何去实现这些功能。也可以建立粉丝群...
如果有人给你提交 PR,那么恭喜你,他们不但喜欢你的项目,而且还愿意与你一起完善它。
在这里我要感谢一下他们几位:
坚持下去
什么事情都不是一蹴而就的。
做开源需要的就是时间和耐心,独立去做一个项目相当于在一个人成立了一家公司,所有的事都压在你一个人的头上,你可能需要做产品、设计、开发、测试、运维、运营、客服、文案、策划等等...
仅开发这一项,我在这几个月的时间就提交了 600 次代码,实际上,开发我认为只占了整个项目 1/5 时间,剩下的大多数用于产品的设计与推广。
我本身不是一个独立开发者,我都是利用工作时的摸鱼时间来进行开源项目的推进,并且下班回家还要带娃,所以支撑我去做这个事情完全是因为兴趣使然,我会利用工作中的空闲时间进行开发,在带娃时思考如何去做。
开源这件事很难赚钱,完全是为爱发电,所以我希望大家尊重每一个开源项目。