开源指北,如何参与 170k 的顶级项目
写在前面
几个月前在公司搞了一个开源的前端基建组织,在推动的过程中发现很多小伙伴对于开源这件事很陌生,几乎所有的开发者都会享受到开源项目所带来的便利甚至是收益,当有些人想要参与时却不得其门而入。
我本人也对一些开源项目有过一些贡献,比如代码类的: element-plus, Ant Design Vue,文档类的:MDN Web Docs, You Dont Know JS 等等,本文就以 You-Dont-Know-JS-zh-CN 这个项目为例来分享一下如何参与开源项目的。
TIP: You Dont Know JS (中文:《你不知道的 JavaScript》)是一本关于 JavaScript 的开源书籍,目前在 GitHub 拥有超过 170k+ star。
而我的项目 You-Dont-Know-JS-zh-CN 是原作者授权的第二版的社区中文翻译。除了提供源码外还提供了在线版以及 PDF 离线版。
如果你觉得文章有用请给我的项目点一个 star ~~~///(^v^)\...。
开源的概念
「开源」一词对应英文 Open Source,最初起源于软件开发领域,因此也称为「开放源代码」,对应的软件则称为开源软件 (Open Source Software)。除了我们熟知的开源软件以外,开源的表现形式还有开源硬件 (Open Source Hardware)、开放设计 (Open Design)、开放文档 (Open Document)。
找到一个项目
万事开头难,很多人纠结的第一步就是如何开始参与开源。是自己写一个?还是参与某个项目?参与哪个项目?我的建议是从工作中寻找灵感,先做点小事。
比如 element-plus 和 Ant Design Vue 这两个项目是我在工作中实际应用到的,参与的契机就是在使用时发现项目存在 bug,于是提交了 pr 来修复。
有了目标以后你就可以开始你的第一次贡献了。
开源项目礼节
当你准备为第三方仓库贡献你的力量时,很多小伙伴会纠结的一点是如何开始?
万幸,开源社区发展到现在已经有了约定俗成的内容,比如 Mozilla 总结了一套开源项目礼节。而几乎所有希望社区参与的项目都会有贡献指南。
在贡献指南中你可以看到如何为项目贡献代码、应该遵循哪些规范、应该在什么时间 (提出问题/代码提交/测试等) 做什么事 (issue 规范/单元测试) 等等。当你了解基本规则以后就可以着手相应的工作了。
比如在给 You Dont Know JS 贡献前,与原作者沟通是否可以做一个中文版的,有哪些限制 (比如版权)。经过确认后按照作者的指南进行贡献就可以了。
切记,在开源社区中基本都是陌生人相互协作,甚至有很多不同国家和地区的人,所以遵守礼节尤为重要!
调整心态
做开源很明确的是你不会像工作一样,可以拿到收入 (起码初期肯定是用爱发电)。那么做开源一定是让自己感到 Happy,就像雷军在演讲中说的「因为我想我写得这么牛,也该让大家看一看嘛」。
给第三方贡献还好,因为不是主要的维护者,一般不会占用很大的精力。但是你决定做一个自己主导的开源项目时就会遇到很多非技术上的问题。会有人给你提各种各样的需求,出现各种各样的声音:
- 加个 xxx 吧
- 我觉得 xxx 更好
- 你这个设计不合理,应该这么做
- ...
对于这些声音来说你首先要做的就是学会拒绝,拒绝不合理的需求,拒绝不想做的事情!在你的开源项目中你才是主导者,回到上面讲的:做开源一定是让自己感到 Happy!
请谨记八字真言:关你屁事,关我屁事!
延迟满足
上面已经说了,做开源很难通过商业化赚钱,那么就要学会延迟满足。
最好理解的就是你的项目在经过一段时间的沉淀被大家认可后那会很有成就感。
当然做出流行的开源项目还是有些难度的,那么一开始就要抱着好奇和学习的心态。
比如逛 GitHub trending 时,发现超级好玩的东西,感叹一下卧槽这人好牛逼,这个代码写的真是 6,我也来整一个。
那么就算你的项目在开源社区无人问津,但是做项目本身的过程也会让你受益良多。
善用社区资源
开源社区发展到现在已经非常丰富了。当你要实现一些东西的时候可以看看社区里有没有能利用的资源。
比如在我的项目中:
- 通过开源项目申请 GitHub Copilot,使用 Ai 来辅助
- CI/CD 使用 GitHub Actions 实现自动化
- 域名使用 JS.ORG
- 在线版的 pass 平台部署使用 Netlify
- ...
以上这些都是免费的。
最后
虽然做开源本身并没有带来金钱的反馈,但是在过程中你可能会认识志同道合的朋友、学习到工作中接触不到的知识。
这些都会在未来某个时间给你带来正向的反馈。
当然如果你觉得文章有用的话请给我的项目点一个 star ~~~///(^v^)\...。