【文字版】如何成为OpenHarmony社区贡献达人 原创
1、封面:如何成为开始社区贡献达人
-
时间到了,我们按时开始。
-
非常荣幸有机会参与知识赋能第五期的活动,给大家做一些分享。
-
我今天分享的题目是,如何成为OpenHarmony开源社区贡献达人。我会重点给大家介绍下什么是开源社区贡献,如何进行社区开源贡献。希望通过这样的分享,大家以后都能成为社区开源贡献达人。
2、目录:了解下议题内容
-
先看一下目录,了解下今天分享的内容。今天分享的内容如下:
-
首先,什么是社区贡献?在社区参与什么活动算是社区贡献呢?
-
接着,看一下在开源社区的贡献流程,如何参与社区贡献。
-
然后,对社区贡献流程中的一些常见问题,分享一下我的经验。
-
在社区里发现问题之后,如何提问呢,在提问的智慧这一节解答这个疑问。
-
如果有意向在社区贡献,在社区贡献之前,需要具备哪些知识?
-
有些社区新人经常疑惑,不知道从哪里开始贡献。会给大家分享下如何找到社区贡献点。
-
然后给大家分享一下如何规范化地社区提交贡献。只有操作规范,才能更容易被社区接受。
-
提交PR合入请求后,接下来的一个环节就是,代码仓的责任人会来检视合入请求,会提修改意见。作为贡献者,我们怎么来想处理这些检视意见?
-
最后,给大家实例分享一下如何处理合入冲突。
-
当我们知道掌握了社区贡献有,怎么从社区贡献新手让成长为一个开源贡献达人。在最后一部分做这些分享。
3、社区贡献有哪些
-
独行快,众行远。一个人走得快,一伙人结伴才能走得远。社区的发展需要社区参与者的持续贡献。社区贡献有哪些呢?如何根据自己的情况进行贡献呢?我们来分享下。
-
根据社区定义的角色来分别讲对应的社区贡献,在左下角我列了一个网址,大家也可以访问下。
-
第一个是用户,Users。 如果我们只是使用社区开源的软件,我们就是是用户。对于用户。可以做的社区贡献是,可以向社区反馈问题和功能建议,以issue的形式。向社区反馈缺陷、反馈一些功能建议。这也是一种贡献。如果大家在OpenHarmony社区遇到一些技术问题,都可以积极的向社区反馈。当我们使用OpenHarmony的时候,我们已经成为社区参与者的一部分。以后大家在使用OpenHarmony社区的时候,遇到问题要积极的通过Issue的方式来反馈。
-
第2个角色是社区的contributor,是社区的贡献者。社区贡献者会做一些代码、文档的贡献。在论坛、在社区,或者通过开发者邮件列表,解答别人的问题。发表发表一些技术文章和发表一些视频课程。这都是社区贡献、
-
第3个角色是Committer,可以理解为代码仓的责任人。Committer在社区上的贡献主要是做一些模块设计和评审,处理Issue,处理社区反馈的问题,然后对社区的参与者进行一些辅导。我们在社区反馈的问题,这些就需要Committer去处理。当社区参与者提交的PR合入请求,Committer需要去处理,去review这些代码是否符合编程规范,代码实现是否最优?给出检视意见,如果确认没有问题的话,就合入代码。User、Contributor的数量成千上万,Committer每个仓2-3个,数量几百人。大部分社区参与者属于前两个。如果我们在社区贡献的足够。做了足够多的贡献,可以由PMC提名成为某个代码仓的Committer。
-
接着看下SIG Leader角色。SIG指的特别兴趣小组。开发者可以通过这个社区上的SIG列表查看感兴趣的SIG组织,可以参与SIG项目的技术讨论、社区维护和开源开发。如果找不到现有的SIG,可以发起孵化一些技术项目。需要满足能代表某一领域的技术方向,并能最终转化为OpenHarmony的新增部件时,我们就可以上社区会议申请创建一个新的SIG。创建人就可以成为一个sig leader。-
-
sig leader这个层级,要求肯定会是更高的。能成为sig leader,这肯定是这个领域的一些比较牛的人,是这个领域的大神。sig leader的对社区的贡献,就会体现在:定义特定SIG的工作范围,定义目标。负责SIG的运营和维护。
-
最后一个角色,PMC是OpenHarmony项目管理委员会,PMC是open哈密项目管理委员会,负责社区管理工作,社区版本规划、竞争力规划。
-
不同的角色有不同形式的贡献,同一个社区参与者也可以多个角色。
4、如何参与社区贡献
我们接着往下看如何参与社区贡献,讲一讲在社区参与贡献的流程。有些社区参与者已经很熟悉这些贡献流程了,我们快速看一遍。
-
这几个流程也不是严格的先后顺序关系。比如,可以先反馈问题,再去准备环境;也可能是早就准备好环境了,再去反馈问题。
-
看下反馈问题。我们在提PR的时候也要把我们解决的问题说清楚。要在社区代码仓里先反馈一下问题。当我们反馈Issue之后,有的可能期望社区,代码仓的责任人来答复修改;我们就是程序员,我们愿意修改,这样的话也可以表达这样的意向。可以通过在issue里评论表明这样的意向,等待这个代码仓的责任人反馈;很确信的小问题,提交问题后,也可以直接提交代码修改。
-
只反馈问题,是不需要签署开发者原创声明DCO的;如果想提交代码,进行这一个代码或文档贡献的时候,是需要签署的DCO的。
-
在社区贡献之前要熟悉相关的文档。作为一个开源社区的公民,我们还是要有一些社区行为守则要遵守的。 另外对于提交代码,要掌握设计规范、编码规范;对于文档贡献,要关注一下写作规范。通过这些规范,我们要可以保持编码、文档风格的统一。
-
我们还要准备一些开发环境,比如说准备git命令行工具,要申请一个码云的账户,设置一下账户信息。
-
环境就绪后,我们需要Fork代码仓到自己的账户,然后下载代码到本地进行开发。
-
接下来需要做的事情就是我们要把对OpenHarmony的热爱和贡献编写到代码中,然后提交PR。在提交PR的时候,要关联我们提的Issue问题。提交PR之后。我们要触发门禁。通过门禁之后,代码仓的Committer会来检视我们的代码。Committer会提一些检视意见让修复。如果Committer没有处理,社区上Committer列表,可以查到邮件,也可以给他们发邮件催促一下。
-
当贡献的代码没有问题后,Committer认可了,就会合入代码。对这个贡献流程中的一些特别需要关注的点,接下来就来分别来详细的和大家分享一下。
5、提问的智慧
-
贡献流程里的第一步就是反馈问题。我来给大家分享一下我一些经验。
-
想给大家分享的是一篇文章《提问的智慧》。原文是英文的,作者非常有名气,非常了不起,他就是Eric Steven Raymond。还写了另外一本书《大教堂与集市》。网上也可以找到《提问的智慧》的中文版。
-
我来简单介绍一下这个提问的智慧有哪些内容,如何来帮助大家如何更好地提问。这是一个人的软实力,掌握提问的智慧,对职业生涯发展非常有帮助。
-
在和社区里打交道的时候,也会遇到很多这样的情况,有些人说,我这里出错了,只是说我这里出错了,然后更多的信息都不提供。这就很头大,很崩溃。如何大家都能掌握提问的智慧,沟通会顺畅很多。
-
在提问之前,我们要尝试自己去搜索,找到问题的答案。有时候遇到的一些问题,在这个代码仓的问题列表里可能有人反馈,并且已经提供了一些解决方案,在这种情况下,我们如果再反馈问题,那就是个重复问题。重复问题就是浪费时间。那为什么不早点自己去搜索一下,早点得到答案呢。另外,还可以去OpenHarmony文档仓多看看资料手册,去FAQ里面去尝试找到答案,尝试自己解决问题。对于开发工程师、程序员,我们在出现问题时,根据错误日志能不能自已去阅读源代码、去定位下问题。因为我们这是开源的,我们有源代码,我们自己尝试去找到答案的。这样的经历多了,就会提升自己解决问题的能力。
-
那当提问的时候,我们就要使用一个有意义的标题。从这个标题上就能做到快速了解一个问题;你需要这个问题容易回答,如果问了一个问题特别大,让别人一言难尽。问题必须描述准确,能做到让别人能复现,可以辅助log信息和错误截图等。还要求最小化复现,如果能用两步骤复现问题。你就不要用三步,这有助于缩小定位问题的范围。
-
要清楚的表达你的问题和需求,你的问题是什么?你期望是什么?你的预期结果和实际结果是什么?说了一段,不提下自己的诉求,解答问题的人也会很懵。
-
接下来是,如何解读答案。当代码仓的负责人或者其他的社区参与者给反馈之后,你还是看不懂的时候,那怎么办?如果开发者没有反馈怎么办?这个大家自行去读读提问的智慧获取答案吧
-
最后是,如何更好地回答问题。前面都是针对提问的人说的,最后一个描述如何给别人提供答案,这些我们也不展开啦。
-
总的来说,不会提问的人得不到想要的答案。在社区反馈问题的时候,社区提供了一个模板。包含简要描述、环境信息、预置条件、测试步骤等等。可选的,可以提供些定位信息,为了提供更详细的信息,提供一些log,一些截图,甚至一些录一些视频文件。好,关于反馈问题这一块就说这么多。
6、在贡献之前要了解
-
在做贡献之前要了解下相关的文档。
-
作为一个开源社区公民,共建友好的社区开发和协作环境,每个人都要遵守贡献者公约。现在我们用的这个贡献的公约是1…4版本。
-
还要看下设计规范和代码风格文档这一块。通过遵守设计原则,治理章程,可以引导社区健康有序的发展;遵循编程规范,保持代码风格风格的统一。
-
如果想做引入三方开源软件呢,就需要看一下三方开源软件引入指导文档。如果想对文档进行贡献的时候,要去学习一下这个写作规范。所有的这些信息都可以在这个贡献指南这个链接上找到更多的信息,推荐大家去读一读。
7、如何找到贡献点
-
对于刚接触开源社区的参与者,都会有这样的疑问,我能在社区贡献什么呢?不知道如何找到贡献点。现在,我们就来一起学习下如何找到贡献点。
-
大家对项目熟悉程度的不同,对项目的了解处于不同的阶段,每个阶段都有可以贡献的点。
-
1、首先,建议大家从文档开始开源项目,文档的编写也是参与项目开源项目的一种方式。 在开源项目中。由于这个参与的人数和时间的限制,在项目的初期,非常缺乏详细的项目文档。
-
社区参与者可以参与文档的编写工作,来贡献文档。另外,现有的一些文档也是我们去学习、去掌握一个开源项目的入口。在我们使用这些文档的时候。如果发现问题,我们就去反馈问题,去帮助修复问题。
-
2、第二点建议大家去关注感兴趣的项目,关注一下项目的开发进展。
-
关注项目中提到的问题issue,研究下为什么会产生这些问题?尝试帮助别人解决问题,也学习下其他人是如何解决问题的。去评论,去发表自己的看法。
-
关注下别人提的一些PR代码合入请求。了解下解决的是什么问题,是如何解决问题的,有没有更好的实现方法?可以提检视意见,或者提供更好的实现。这就是在做贡献,在参与社区。
-
3、第三点建议呢,就是参与项目的一些测试。贡献一些用例,编写贡献demo。当我们上手练习的时候,可以加深我们对项目的理解,在上手的过程中发现问题,就可以向社区进行贡献。
-
4、如果我们在工作中能使用到这个开源项目,那在这个时候。我们是有更大的便利性来进行社区贡献。当我们用这些开源项目的时候,我们可以反馈一些需求,希望这个开源项目支持更丰富的功能;可以反馈缺陷。当这个开源项目有缺陷,有bug我们可就以反馈。当我们有相应的能力,也可以去来帮忙实现这些需求,来修复这些提交的缺陷。
-
5、还可以参与社区共建。认领一些需求,参与开源项目直接贡献。
-
通过这些分享,大家对这个如何找社区贡献点,应该比较清晰一点了。
8、规范化提交贡献
-
在提交PR请求合入的时候,需要注意下规范。前面提到了Issue的模板,这里又出现了2个模板,一个是描述了git commit提交应该使用什么样的模板。在提交PR贡献代码的时候也有个PR模板。
-
在使用git commit 提交代码的时候,需要提供git message提交记录信息,来说明做了哪些修改。在码云上有一个比较好的帮助中心,有文章介绍git commit message编写指南。指南里说的是
angular社区提交规范。它包含这种三部分,一个是消息头,一个是消息体,和尾部信息。消息头一般会有一个类型,这个类型就是来表示这次提交的类型是新增特性,还是缺陷修复,还是文档提交,还是样式更改,重构、测试等等。 -
scope用于表述是改动的模块等,是个是可选的。如果一个工程比较大的时候,要指定具体模块。然后,就是就是标题,一般的这个地方是动宾结构的,描述做了什么。这个也不建议特别长,git log里面也也展示不完,一般就是简洁的描述吧。
-
中间是消息体,来提供一些更详细的一些信息,来说明为什么我们这个提交是必要的。问题是如何解决的,有没有副作用?
-
最后是消息尾,一般就是关闭了哪些问题,可以带上issue编号。另外,还要补充一下,是否存在一些不兼容的修改,改动了对外接口等等。
-
PR模板描述下关联的Issue、描述下原因、做了什么。对测试用例有没有改动?是不是要要同步到其他的历史分支?提供给Committer一些详细的信息,有助于自己的PR更方便的合入。
9、处理检视意见
-
好嘞,那我们再往下看。
-
参与社区是大家提升编码能力的好机会。等于免费的,别人手把手教你写更高质量、更规范的代码。提交PR后,Committer会给检视意见。要积极处理Committer提交的检视意见,如果自己认为可以不修改的地方,积极的和committer进行沟通解释、争取同意。
-
在处理检视意见时,有些注意事项。我这边提了一个例子,大家可以看清。
-
这一个PR里边有17个提交,然后大部分git message一模一样。为了解决一个小问题,生成了这么多冗余的这个提交历史记录,很不规范。在处理检视意见的时候,特别容易出现这种情况。对于这种情况,可以使用git commit --amend追加提交。在码云的帮助中心有个git知识大全,大家可以去学习到更多的知识。
10、 如何处理代码冲突
-
接下來,讲一下另外一个常见的场景,处理代码冲突。代码冲突是如何产生的呢?Git是非常智能,基本上,不改动同一文件的同一行,就能顺利的合入。改动同一行时,才会产生冲突。遇到冲突时,一些新手很容易想到把冲突的PR关掉,更新到最新的代码后,再提交一个新的PR。其实大可不必这样,开发者都需要掌握处理代码冲突的方法。
-
为了避免冲突,编码前一定要更新到最新的代码。当冲突发生时,修复冲突就好了,推荐使用rebase变基操作,而不是说merge合并操作。merge合并会产生冗余的commit提交记录。我们实际演示一下。
11、如何成为开源达人
-
今天分享的重点都是社区贡献,简短说下如何成为社区贡献达人。
-
什么是开源贡献达人呢?首先要有这一个定义。定义的方式有很多,我分享一个。在开源社区有一个叫CHAOSS社区健康分析模型,提供指标字典来评估开源社区的健康程度,其中对贡献者有一些指标。开源达人可以使用CHAOSS中贡献者的指标,比如这个开源贡献者提交了多少,多少提交,然后参与了几个代码仓,它增加了多少行代码,删减了多少行代码,平均提交了多少个文件。这些贡献者排名靠前的就是这个社区贡献达人。度量指标清晰了,如何成为社区贡献达人也就清晰了。
12、致谢
-
今天就到这,非常感谢大家的时间。时间总是过得很快,除了线上交流,线下如果有什么问题,也可以随时和我交流。右边这个是我的微信,可以微信联系,也可以加我码云账户,私信联系我。
-
社区上有很多活动,https://www.openharmony.cn/activitiesList?id=1 开源贡献者计划、OpenHarmony组件大赛等,大家可以踊跃参加,行动起来,成为社区贡献达人。
嘿嘿嘿,太好了,还得是祝老师亲自整理更权威。🤓🤓🤓
🤓🤓🤓🤓🤓🤓
清晰明了!!
多谢梁兄支持
期望大家社区多贡献,在gitee年度账单上 满满的成就感
https://gitee.com/help/articles/4104 Gitee 帮助中心 / Git 知识大全 推荐大家读读