做了5年开源项目,我总结了以下提PR经验!
如何优雅地参与开源贡献,向顶级开源项目提交 PR(Pull Request),如何更好地提交 PR?
针对这些问题和疑惑,我们邀请了 OpenAtom OpenHarmony(以下简称“OpenHarmony”)社区运营专家祝尚元,为大家分享《如何成为 OpenHarmony 社区贡献达人》。他将着重为大家讲解:社区角色定义、贡献类型、贡献前须知、贡献方式、如何处理冲突等 5 个方面,帮助大家更加高效地提 PR,助力大家成为顶级社区的大神。
参与战“码”先锋,PR 征集令! 你可以在 Gitee 的 OpenHarmony 代码仓提交 PR 参与活动,和全球开发者同台竞技,比拼技艺,为 OpenHarmony 贡献力量。


一、成为社区达人,先从了解角色定义和贡献类型开始
独行快,众行远,社区的发展需要社区参与者的持续贡献。每个参与者可以根据自己在社区中的角色来做相应类型的贡献。祝尚元解释到,社区角色可分为:User、Contributor、Committer、SIG leader、PMC,每个角色的解释和贡献类型如图所示。
社区角色定义及贡献类型
二、如何参与社区贡献
OpenHarmony 社区的发展需要大家共同参与,开发者参与社区贡献的最主要方式是提 Issue 和 PR。当开发者发现问题时,可以通过提 Issue 的方式表达出来。开发者可以通过提 PR 解决相关问题。在提 PR 之前,开发者需要签署开发者原创声明,熟悉相关文档和代码编写规范,并配置环境,准备Git 命令行工具、Gitee 账户,设置账户信息等。
一切准备就绪后,即可 Fork 目标代码仓到自己的 Gitee 账户,将代码 Clone 到本地开始编辑修改。当修改完善后,即可提交 PR,并关联 Issue。提交的 PR 将会被 Committer 检视并提出检视建议。贡献者根据建议再次修改完善后,如果得到 Committer 的认可,PR 将被成功合入到代码仓,自此 PR 顺利提交完成。流程可见下图。
参与社区贡献的流程
三、贡献代码之前需要了解
社区需要参与者踊跃贡献,更需要大家有序贡献,这就需要大家在贡献之前了解相关的指引文档。
作为一个开源社区公民,共建友好的社区开发和协作环境,是我们应尽的责任。在加入开源社区前,我们需要遵守《贡献者公约》V1.4。还需要了解设计规范和代码风格文档,通过遵守设计原则,治理章程,可以引导 OpenHarmony 生态向健康、有序的方向发展和演进;另外,遵循编程规范,在进行代码开发、检视、测试中,保持代码风格的统一,将有助于后续的维护和更新迭代。
如果想引入第三方开源软件,需要了解第三方开源软件引入指导文档,保障引入到 OpenHarmony 项目中的第三方开源软件的质量。如果想对文档进行贡献,可以先了解文档写作规范。撰写规范的文档是为了方便后续的社区参与者更好地阅读和了解项目。
提PR之前需要了解的事项
四、参与贡献的5个方式
对于刚接触开源社区的开发者,普遍存在的疑问是能在社区贡献什么?因为大家对项目熟悉程度的不同,可以根据自身能力寻找可以贡献的点。针对这个问题,祝尚元给出了 5 点建议。
接触开源项目,第一,从阅读文档开始。对于在初期的开源项目,由于运营时间较短,参与人数可能不多,缺乏详细的项目文档资料,参与者可以通过编写文档为开源项目做出贡献。现有的文档也有利于开发者去学习、掌握一个开源项目的入口。在我们使用文档时,如果发现问题,也可以反馈问题,帮助修复问题。
第二,找到自己的兴趣点,关注(Watch)感兴趣的项目。当遇到项目中提到的问题Issue,可以研究问题的缘由,并尝试解决问题,也可以学习其他人是如何解决问题,去评论和发表自己的看法。
第三,参与开源项目测试,贡献测试用例,编写贡献 Demo。当我们上手练习的时候,可以加深对项目的理解,在上手的过程中发现问题,并向社区反馈,进行贡献。
第四,如果在工作中能使用到开源项目,就有更大的便利性来进行社区贡献。我们可以在使用开源项目时,反馈需求,希望开源项目支持更丰富的功能,也可以反馈缺陷。当我们有相应的能力,可以去帮助实现这些需求,修复这些提交的缺陷。
第五,当你具备一定的开发水平,并对开源项目十分了解,可以直接认领在项目中被提出的需求,或者发现自己有更好的想法能够帮助项目带来更好的提升,这样可以直接提交PR进行贡献。
为开源项目做贡献的五个点
五、如何处理代码冲突
提交代码后,经常会遇到一个常见的场景:处理代码冲突。对于解决冲突,祝尚元强调:首先需要了解冲突的由来。当有贡献者与你同时改动了同一个文件的同一行代码,并提前于你提交 PR 被合入,那你再提交 PR 就会发生冲突。
遇到冲突时,一些贡献者容易想到把冲突的 PR 关掉,更新到最新的代码后,再提交一个新的 PR,其实大可不必这样。为了避免冲突,编码前一定要更新到最新的代码。当冲突发生时,修复冲突,推荐使用 Rebase 变基操作,而不是 Merge 合并操作。Merge 合并会产生冗余的 Commit 提交记录。
修复提交冲突
为 OpenHarmony 社区做贡献,成为开源达人,从提交第一个 PR 开始,把我们对 OpenHarmony 的热爱和期望编写到代码中。OpenHarmony 社区需要每一位开发者的支持与贡献,你的每一个 Issue、每一个 PR 贡献,都将被广大的开发者们看到并从中收益,一起来行动,提 PR,一起成为开源达人!
近日,战“码”先锋,PR 征集令!「OpenHarmony 开源贡献者计划 2022」惊喜上线。活动由 OpenHarmony 工作委员会发起,为了鼓励开发者积极参与开源软件开发维护。召集各位战“码”先锋参与 OpenHarmony 开源共建活动,一起来战!你可在 Gitee OpenHarmony 代码仓提交 PR 参与活动,和大家同台竞技,比拼技艺。
在这里你可以:建立影响力:个人专访,活动邀请,加持社区光环;学习新技能:开源大咖在线直播,详尽文档指引,教你不敲命令也能提 PR;认识新朋友:与志同道合的开发者交流技术;提升职场竞争力:提升编码能力,斩获心仪 Offer,升职加薪 UP UP UP;获得限量周边:定制 T 恤、徽章、手表、音响等礼品拿不停;即刻扫码入群,成为战“码”先锋,跟大咖交流,赢取丰厚大礼。

文章中的相关链接汇总
战“码”先锋,PR征集令活动链接:
https://gitee.com/openharmony-sig/online_event/tree/master/Contributor%20program
OpenHarmony ArkUI子系统:
https://gitee.com/openharmony/ark_runtime_core
https://gitee.com/openharmony/ark_js_runtime
https://gitee.com/openharmony/ark_ts2abc
DCO签署地址:
https://dco.openharmony.cn/sign
贡献者公约B1.4:
贡献指南:
https://gitee.com/openharmony/docs/tree/master/zh-cn/contribute
Git Commit Message 编写指南:
https://gitee.com/help/articles/4231#article-header0
如何处理代码冲突:
https://gitee.com/help/articles/4194


搜索
复制
做了5年开源项目,我总结了以下提PR经验!的更多相关文章
- 开源项目AndroidUtil-采用Fragment实现TabHost
原文出自:方杰|http://fangjie.info/?p=141 转载请注明出处 学习Android也有一段时间了,感觉大部分的Android应用都有很多类似的组件,所以就打算做了这样一个开源项目 ...
- 开源项目AndroidUtil-採用Fragment实现TabHost
原文出自:方杰|http://fangjie.sinaapp.com/?p=141 转载请注明出处 学习Android也有一段时间了.感觉大部分的Android应用都有非常多类似的组件,所以就打算做了 ...
- 我参与 Seata 开源项目的一些感悟
丁老师在他的知识星球邀请我回答以下一个问题: 我觉得这个问题非常有意思,姑且把它贴到公众号这里,与大家分享一下我对这个问题的一些感悟. 感谢丁老师的邀请问答: 在这里我就简单说下,我这段时间参与 Se ...
- Atitit.为什么小公司也要做高大上开源项目
Atitit.为什么小公司也要做高大上开源项目 1. 为什么手头有很多加急的事情还要做高大上开源项目??1 2. 从长远看,发展 高大上开源项目计划对于解决我们在应急项目正面临着的种种严峻问题也大有裨 ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- 【目录】本博客其他.NET开源项目文章目录
本博客所有文章分类的总目录链接:本博客博文总目录-实时更新 1.本博客其他.NET开源项目文章目录 37..NET平台开源项目速览(17)FluentConsole让你的控制台酷起来 36..NET平 ...
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
注意:有网友提出部分项目停止更新的事情,这个问题我特意注意过,很多都是小功能组件,功能稳定,没有bug,没更新是正常的.够用就行了.其次技术支持的事情,对开源免费来说,不能太强求,这里发布的都是小功能 ...
- android studio 使用jar包,arr包和怎么使用githup开源项目中的aar包或module
我这里的android studio的版本是2.2.3版本 一.现在大家都用android studio了,就有人问怎么使用jar包 其实使用jar包比较简单 直接吧jar放入工程的app目录下的li ...
随机推荐
- 【Azure 应用服务】应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件
问题描述 应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件 问题解答 App Service可以通过门户配置Mount Storage, ...
- Nebula Graph 在众安保险的图实践
本文首发于 Nebula Graph Community 公众号 互联网金融的借贷同传统信贷业务有所区别,相较于传统信贷业务,互联网金融具有响应快.数据规模大.风险高等特点.众安保险主要业务是做信用保 ...
- 高性能图计算系统 Plato 在 Nebula Graph 中的实践
本文首发于 Nebula Graph Community 公众号 1.图计算介绍 1.1 图数据库 vs 图计算 图数据库是面向 OLTP 场景,强调增删改查,并且一个查询往往只涉及到全图中的少量数据 ...
- 在vmware里安装ubuntu的简单过程(具体的见网址)
在官网选择vmware版本为16,安装后,在vmware里升级到最新版.(这个可以解决蓝屏) 在下面的这个文章里下载ubuntu的镜像文件iso,我下载的是16年的,内存为1.6GB,下载的时间用的少 ...
- 手机端User-agent
转载: http://www.fynas.com/ua 设备 系统 浏览器 User-Agent vivo X20Plus A Android 手机百度 Mozilla/5.0 (Linux; And ...
- (三)Git 学习之分支操作
一.分支简介 1.1 Git 分支初探 几乎所有的版本控制系统都会以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 假设你准备开发一个新功能,但是需要两周时 ...
- AQS很难,面试不会?看我一篇文章吊打面试官
AQS很难,面试不会?看我一篇文章吊打面试官 大家好,我是小高先生.在这篇文章中,我将和大家深入探索Java并发包(JUC)中最为核心的概念之一 -- AbstractQueuedSynchroniz ...
- golang sync.Map之如何设计一个并发安全的读写结构?
在 golang中,想要并发安全的操作map,可以使用sync.Map结构,sync.Map 是一个适合读多写少的数据结构,今天我们来看看它的设计思想,来看看为什么说它适合读多写少的场景. 如下,是g ...
- 04.JavaIO流问题
目录介绍 4.0.0.1 说一下Java IO里面的常见类,字节流,字符流.接口.实现类.方法阻塞? 4.0.0.2 什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多 ...
- 记录--vue.config.js 的完整配置(超详细)!
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间,对部门的个别项目进行Vue3.0+ts框架的迁移,刚开始研究的时候也是踩坑特别多,尤其我们的项目还有些特殊的webpack配置, ...