前言
当今程序世界的快速发展无法脱离开源项目的茁壮发展,而作为知名的开源项目代码社区,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等等,可以自己尝试摸索,探索开源社区的魅力。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。