如何在 Github 参与开源项目的建设
前言
当今程序世界的快速发展无法脱离开源项目的茁壮发展,而作为知名的开源项目代码社区,Github 在开源届有着举足轻重的地位,本文就将帮助大家了解如何在 Github 上参与开源的建设。
参与开源
对于大部分人来说,开源项目的使用已经是家常便饭了,无论是数据库还是 ide,三方库还是连接工具都有可能是开源项目的一员。但是很多人也就是仅仅使用而已,实际上开源项目需要每个人的帮助才能够更加茁壮的发展。
很多人认为只有提交代码,进行 PR 合并代码才算是对开源项目产生贡献,其实这是不正确的,还有其他的方案也同样能对开源项目作出贡献。
Discussions
Discussions
是 Github 开源项目的讨论区,开发者可以在讨论区提出问题和各种话题,并且可以参与讨论。

Discussions
会有开源项目的管理人员进行管理,开发者在其中提出各种使用上的问题以及可以提出新的想法,设计思路等等,是一个较为开放的论坛性质的模块。在其中借助自己对于当前开源项目的了解来回答问题可以让更多刚接触到这个项目的萌新更加快速的加入。
Issue
Issue
是 Github 的重要功能之一,开发者可以通过创建Issue
来提出 bug,提出新 feature 等等,也可以提出议题在社区进行讨论。

每个项目提出Issue
的流程会有一些不一样,此处以open-telemetry/opentelemetry-java-instrumentation
项目为样例:

此处的Issue
经过社区的模版修改分为了三个类型,bug,feature 和安全漏洞,按照指引点开后会发现内部也是预置好了模板的:

仔细阅读模板中的内容然后照着填写即可。
Issue
与Discussions
实际上没有固定的边界,大部分情况下你既可以在Discussions
提出问题也可以通过Issue
提出问题。但是以我个人的理解,Issue
会更加的正式,并且正规的开源项目会有人以专门的流程来处理提出的Issue
,因此如果是一些 bug 类的问题建议还是提出Issue
更好。
Issue 分类标签
如果只是提出Issue
的话没法更多的参与项目,但是想尝试去解决一些Issue
往往又无从下手,该怎么办?
此处善用Issue
的分类标签可以帮上大忙。为了管理Issue
,往往社区人员会查看新提出的Issue
之后会对其打上一定的标签。社区的新人可以关注如下的标签:good first issue

这个标签表示Issue
适合新人来熟悉项目。有些大型的项目甚至还会有类似的good second issue
等标签。用户善于使用标签筛选,找到这类Issue
就能够帮助自己更好的成为开源项目的新人。
Pull Requests
Pull Requests
一般简称为PR
,是一种将自己改动代码推送合并到开源项目的手段。一般的开源项目都禁止直接在分支上进行推送,所有的代码改动都需要走PR
的流程。
如何提出自己的第一个 PR
此处样例使用的是开源项目 open-telemetry/opentelemetry-java-instrumentation
首先需要从原开源项目 fork 一份到你自己的仓库,这样你自己仓库就会有一份最新的开源代码
之后你就可以将自己仓库的 fork 的那份代码 clone 到本地进行开发,推荐创建新的分支来进行开发
开发完成后将代码 push 上来,至此都是正常的开发流程
此处开始新建 PR

之后选定自己的开发项目开发分支,以及想要合并到的开源分支,然后选择创建
PR

在创建 PR 是需要填写一些 comment,为了 PR 能够通过合并所以建议详细描述此次
PR
做了些什么,解决了什么问题,如果有具体的Issue
关联就更好了

之后点击 create 就完成了
PR
的创建了,后续就是社区管理人员的审核以及提出修改意见,然后后续就是反复的修改完善,然后合并代码了。
PR 注意事项
每个开源项目对于PR
都会有不同的规范,具体的详情一般都会在CONTRIBUTING.md
文件中详细描述,包括编码规范,使用的库的协议规范等等,请在提交PR
之前进行仔细阅读,避免提交之后违反了规范而被否决。
总结
开源社区中的种种玩法还是很多样的,此处只是介绍了最简单的一些参与开源的玩法,如果想要更加深度的参与各种社区的会议,各种社区的 SIG 等等,可以自己尝试摸索,探索开源社区的魅力。
版权声明: 本文为 InfoQ 作者【骑牛上青山】的原创文章。
原文链接:【http://xie.infoq.cn/article/a19404d2064a5d59fcc099eda】。文章转载请联系作者。
评论