到底怎么参与开源项目
很多同学一上来很着急, 觉得自己水平还不够, 源码看不懂, 不知道怎么做开源贡献, 所以这个计划就一直搁置着, 干着急.
其实开源项目不仅仅是代码, 各种水平或者阶段的程序员都可以找到自己能够做贡献的地方. 比如:
上面举的一些例子都比较容易上手, 不管你是一个在校生还是一个编程小白, 只要你会写东西, 喜欢帮助别人, 乐于分享, 能够细心和站在用户使用的角度, 去优化这个开源项目, 总有很多地方你可以参与进来.
开源项目不只是代码, 你可以想像它其实是一个来自世界各地的志愿者组成的组织, 大家的共同目标是打造一个产品(比如一款桌面游戏, 一个数据可视化的项目等), 产品提供给任何有需要的个人或者公司使用.
在组织中需要有分工合作, 比如有人负责写文档, 规范的文档提供给外界使用, 就像一个说明书. 有人负责组织一些线下的 meetup, 有人负责整理邮件列表, 有人负责规划未来的工作要点, 有人负责写更多的使用 example, 让用户能够更快的获得他们想要的东西. 有的人负责写核心的代码等等.
所以一上来不要太着急去写代码, 先让自己沉到社区里面去, 看看大家讨论什么问题, github 的 issues 板块有大家提出来的一些bug或者存在的问题. 你可以先从一些边边角角的地方开始, 整理文档也是一种贡献, 时间慢慢积累, 熟悉项目后才有可能提供核心代码的贡献.
说了这么多, 让我们来看看开源项目的一些共同特点.
开源项目的通用结构
每个开源项目的人员组成和项目结构都是不一样的, 但是每个开源项目都会遵循一些通用的结构. 了解这些通用的结构可以让你在不同的开源项目中切换的更加游刃有余. 一个开源项目一般都会有以下的文件:
除了以上的文件, GitHub还提供一些板块方便用户跟踪项目的 Issues(问题/提升), Pull Requests(代码合并请求), Roadmap(蓝图), Wiki(百科) 等. 这些板块均可自行浏览和学习, 较为大型的项目还会提供mailing lists(邮件列表), 比如 python 社区就有很多不同的邮件列表, 有的专门是开发专用的邮箱订阅, 有些专门用来讨论一般性的问题.
国外的项目还会配有 Slack (即时通讯工具) 方便大家讨论, 国内的开源项目可以在 README.md 文件上找到联系人的微信进入群聊或者是钉钉.
以上的各种文档和工具都是为了让大家更快速了解项目, 更方便讨论问题, 提供更高效的交流合作.
怎么找到你想看的项目
GitHub 上面的项目琳琅满目, 怎么找到适合自己入手的项目呢?
1. 选择一种语言
首先从选择你熟悉的语言开始, 比如Python, Java, JavaScript等. 再去找该语言下的项目. 最好是选择受众比较多的项目, 这样社区比较活跃, 你提的问题一两天内就有人回复. 怎么看社区的活跃度呢? 一方面可以看这个项目的Watch, Star, Fork数量.
其次可以点击项目主页的Insights这个tab查看过去一周, 过去一个月的代码合并次数以及参与的人数来看看活不活跃(社区还活着吗)
2. 找到合适且感兴趣的项目
3. 筛选适合新手解决的issue
GitHub 有标签的功能, 可以对issues进行分类, 你可以通过筛选, 找到适合新手, 简单的问题, 看看自己能不能理解并解决这类问题. 具体如何筛选可以看下面这张图. 找到 good first issue
, beginner
, easy
这些标签, 适合新手上路的就对啦!
好啦艾瑞巴蒂, 讲了这么多, 小豆作为过来人, 最后还有一些小技巧可以分享给大家~
不要走马观花
如果一直只是浮在表面的看, 不去关注, 不去行动, 就会发现自己很难钻进一个项目里. 不要对自己要求很高, 也不要追求完美, 先找到一个自己觉得还可以的项目, 未来几个月就啃这么一个项目. 如果你能够把一个啃下来, 后续切换到其他项目是非常快速的.
长期坚持
也许短期内不会看到什么进步, 也许很长一段时间内自己在项目中仍然是个小透明. 给自己个半年时间, 长期去做. 不要因为一时半会儿没有进步, 项目也无法写到自己的简历里就灰心丧气, 要有延迟满足的能力.
放下焦虑, 平常心看待
一路上你会发现很多大牛, 也许你会发现自己差的东西太多了, 没有关系, 从今天开始捡起来, 今天开始行动起来. 种一棵树最好的时间是十年前, 其次就是今天啦.
如果你有更多的问题, 可以私我了解和咨询~