新手如何参与 GitHub 开源项目
共 3849字,需浏览 8分钟
·
2022-05-30 02:28
很多人都知道 GitHub 上面有非常多优秀的开源项目, 如果能够参与到一些开源项目中, 对自己的技术提升和职业发展都是非常有帮助的. 对于项目经验不足的应届生来说, 也可以丰富一下自己的简历的~
有些同学说, 我还是个技术小白, 怎么参与开源项目呢? 应该怎么找到自己适合的项目呢? 下面就来详细展开说说.
参与开源项目的好处
参与开源项目最有趣的地方就是可以开阔自己的眼界, 链接到世界各地的人, 让自己加入到某个圈子里.
深入到感兴趣的圈子
比如你对某种小众的语言感兴趣, 你可以在这些项目中找到非常多志同道合的朋友. 有时候开源项目组的人会组织一些线下的 meetup, 你有机会接触更多的人, 甚至是一些技术大牛.
帮你找到工作
当你对某个开源项目非常熟悉, 对它的源码和整个项目的历史变动以及未来规划设计都非常清楚, 你就很可能被邀请到做类似产品的公司团队中工作. 也有非常多小初创公司在社区里面寻找合适的兼职/全职/远程程序员. 你会发现有很多获得额外收入的途径, 甚至是开拓自己的副业, 又或者成为一个自由职业者. 总之有可能收获一些意外的机会.
提升自己的影响力
在开源项目中贡献代码, 可以得到来自其他人的 Code Review, 提升自己的代码能力, 文档, 沟通和组织能力等. 当你贡献的足够多, 还有可能成为项目的核心人员, 领导项目的发展等机会, 建立自己的技术影响力.
既然参与开源项目的建设有这么多的好处, 作为一个小白或者对自己不太自信的同学, 应该怎么着手开始呢? 有没有比较简单和容易上手的路线呢?
到底怎么参与开源项目
很多同学一上来很着急, 觉得自己水平还不够, 源码看不懂, 不知道怎么做开源贡献, 所以这个计划就一直搁置着, 干着急.
其实开源项目不仅仅是代码, 各种水平或者阶段的程序员都可以找到自己能够做贡献的地方. 比如:
当你发现项目的介绍中有错别字, 或者URL链接已经失效, 你就可以提交一个 Pull Requests 来修改这些错误. 一个你经常调用的包 (package), 如果发现它的测试用例不是很全面, 你可以专门为这个项目添加几个测试. 最近学习/工作中高频使用的一个开源框架, 你觉得它的例子写的不够好, 对新手不够友好, 这时候你就可以在文档中添加一些易读易理解的例子. 当你看到 Stack Overflow 或者一些开发者论坛上有人问某个开源项目怎么用的问题的时候, 你如果知道并回答了, 这也是贡献的过程.
上面举的一些例子都比较容易上手, 不管你是一个在校生还是一个编程小白, 只要你会写东西, 喜欢帮助别人, 乐于分享, 能够细心和站在用户使用的角度, 去优化这个开源项目, 总有很多地方你可以参与进来.
开源项目不只是代码, 你可以想像它其实是一个来自世界各地的志愿者组成的组织, 大家的共同目标是打造一个产品(比如一款桌面游戏, 一个数据可视化的项目等), 产品提供给任何有需要的个人或者公司使用.
在组织中需要有分工合作, 比如有人负责写文档, 规范的文档提供给外界使用, 就像一个说明书. 有人负责组织一些线下的 meetup, 有人负责整理邮件列表, 有人负责规划未来的工作要点, 有人负责写更多的使用 example, 让用户能够更快的获得他们想要的东西. 有的人负责写核心的代码等等.
所以一上来不要太着急去写代码, 先让自己沉到社区里面去, 看看大家讨论什么问题, github 的 issues 板块有大家提出来的一些bug或者存在的问题. 你可以先从一些边边角角的地方开始, 整理文档也是一种贡献, 时间慢慢积累, 熟悉项目后才有可能提供核心代码的贡献.
说了这么多, 让我们来看看开源项目的一些共同特点.
开源项目的通用结构
每个开源项目的人员组成和项目结构都是不一样的, 但是每个开源项目都会遵循一些通用的结构. 了解这些通用的结构可以让你在不同的开源项目中切换的更加游刃有余. 一个开源项目一般都会有以下的文件:
README: README.md 是一个项目总的介绍入口, 会在github的主页中展示, 一般会介绍项目是做什么的, 有什么功能, 如何启动和参与项目等. LICENSE: 每个开源项目都必须有一个开源协议 open source license. 想了解更多可以看阮一峰老师的 如何选择开源许可证. CONTRIBUTING: 对于想要参与开源项目的同学来说, 这个文档非常重要, 如何参与开源项目, 方式和途径有哪些这里会找到答案. 其他文件: 较为优秀和成熟的开源项目, 都会有tutorials, 使用示例, 详尽的文档等等, 来帮助新人更快的熟悉项目.
除了以上的文件, GitHub还提供一些板块方便用户跟踪项目的 Issues(问题/提升), Pull Requests(代码合并请求), Roadmap(蓝图), Wiki(百科) 等. 这些板块均可自行浏览和学习, 较为大型的项目还会提供mailing lists(邮件列表), 比如 python 社区就有很多不同的邮件列表, 有的专门是开发专用的邮箱订阅, 有些专门用来讨论一般性的问题.
国外的项目还会配有 Slack (即时通讯工具) 方便大家讨论, 国内的开源项目可以在 README.md 文件上找到联系人的微信进入群聊或者是钉钉.
以上的各种文档和工具都是为了让大家更快速了解项目, 更方便讨论问题, 提供更高效的交流合作.
怎么找到你想看的项目
GitHub 上面的项目琳琅满目, 怎么找到适合自己入手的项目呢?
1. 选择一种语言
首先从选择你熟悉的语言开始, 比如Python, Java, JavaScript等. 再去找该语言下的项目. 最好是选择受众比较多的项目, 这样社区比较活跃, 你提的问题一两天内就有人回复. 怎么看社区的活跃度呢? 一方面可以看这个项目的Watch, Star, Fork数量.
其次可以点击项目主页的Insights这个tab查看过去一周, 过去一个月的代码合并次数以及参与的人数来看看活不活跃(社区还活着吗)
2. 找到合适且感兴趣的项目
可以到 GitHub Explore 随便逛逛, 看不同的 GitHub Topics, GitHub Trending等. HelloGitHub(https://github.com/521xueweihan/HelloGitHub) 这个项目每个月出一刊, 有点类似一个杂志, 在这里也许能够找到你感兴趣的内容 Follow 一些 GitHub 上面的大神. 看看他们关注什么, 他们做了什么. 可以先从一个顶尖的项目切入, 找到项目贡献最频繁的人, 关注他们. 找到感兴趣的项目记得 star 和 watch(订阅) 这个项目, 定时收到邮件通知, 就是开始关注和了解.
3. 筛选适合新手解决的issue
GitHub 有标签的功能, 可以对issues进行分类, 你可以通过筛选, 找到适合新手, 简单的问题, 看看自己能不能理解并解决这类问题. 具体如何筛选可以看下面这张图. 找到 good first issue
, beginner
, easy
这些标签, 适合新手上路的就对啦!
好啦艾瑞巴蒂, 讲了这么多, 小豆作为过来人, 最后还有一些小技巧可以分享给大家~
不要走马观花
如果一直只是浮在表面的看, 不去关注, 不去行动, 就会发现自己很难钻进一个项目里. 不要对自己要求很高, 也不要追求完美, 先找到一个自己觉得还可以的项目, 未来几个月就啃这么一个项目. 如果你能够把一个啃下来, 后续切换到其他项目是非常快速的.
长期坚持
也许短期内不会看到什么进步, 也许很长一段时间内自己在项目中仍然是个小透明. 给自己个半年时间, 长期去做. 不要因为一时半会儿没有进步, 项目也无法写到自己的简历里就灰心丧气, 要有延迟满足的能力.
放下焦虑, 平常心看待
一路上你会发现很多大牛, 也许你会发现自己差的东西太多了, 没有关系, 从今天开始捡起来, 今天开始行动起来. 种一棵树最好的时间是十年前, 其次就是今天啦.
文章中提及很多链接, 没有办法通过超链接的形式放到文章中, 我把相关链接都一一列在参考资料中, 感兴趣可以深入探索~
参考资料:
https://opensource.guide/how-to-contribute/ GitHub: https://github.com/ Meetup: https://www.meetup.com/home/ Pull Requests: http://www.ruanyifeng.com/blog/2017/07/pull_request.html Stack Overflow: https://www.zhihu.com/question/20824615 Code Review: https://juejin.cn/post/6844904009065578510 Slack: https://slack.com/ GitHub Explore: https://github.com/explore
GitHub Topics: https://github.com/topics
GitHub Trending: https://github.com/trending