如何优雅地参与开源贡献,向顶级开源项目提交 PR(Pull Request),如何更好地提交 PR?

针对这些问题和疑惑,我们邀请了 OpenAtom OpenHarmony(以下简称“OpenHarmony”)社区运营专家祝尚元,为大家分享《如何成为 OpenHarmony 社区贡献达人》。他将着重为大家讲解:社区角色定义、贡献类型、贡献前须知、贡献方式、如何处理冲突等 5 个方面,帮助大家更加高效地提 PR,助力大家成为顶级社区的大神。

参与战“码”先锋,PR 征集令! 你可以在 Gitee 的 OpenHarmony 代码仓提交 PR 参与活动,和全球开发者同台竞技,比拼技艺,为 OpenHarmony 贡献力量。

祝尚元
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征集令
提交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/blob/master/zh-cn/contribute/%E8%A1%8C%E4%B8%BA%E5%87%86%E5%88%99.md:

贡献指南:

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经验!的更多相关文章

  1. 开源项目AndroidUtil-采用Fragment实现TabHost

    原文出自:方杰|http://fangjie.info/?p=141 转载请注明出处 学习Android也有一段时间了,感觉大部分的Android应用都有很多类似的组件,所以就打算做了这样一个开源项目 ...

  2. 开源项目AndroidUtil-採用Fragment实现TabHost

    原文出自:方杰|http://fangjie.sinaapp.com/?p=141 转载请注明出处 学习Android也有一段时间了.感觉大部分的Android应用都有非常多类似的组件,所以就打算做了 ...

  3. 我参与 Seata 开源项目的一些感悟

    丁老师在他的知识星球邀请我回答以下一个问题: 我觉得这个问题非常有意思,姑且把它贴到公众号这里,与大家分享一下我对这个问题的一些感悟. 感谢丁老师的邀请问答: 在这里我就简单说下,我这段时间参与 Se ...

  4. Atitit.为什么小公司也要做高大上开源项目

    Atitit.为什么小公司也要做高大上开源项目 1. 为什么手头有很多加急的事情还要做高大上开源项目??1 2. 从长远看,发展 高大上开源项目计划对于解决我们在应急项目正面临着的种种严峻问题也大有裨 ...

  5. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  8. 【目录】本博客其他.NET开源项目文章目录

    本博客所有文章分类的总目录链接:本博客博文总目录-实时更新 1.本博客其他.NET开源项目文章目录 37..NET平台开源项目速览(17)FluentConsole让你的控制台酷起来 36..NET平 ...

  9. 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧

    注意:有网友提出部分项目停止更新的事情,这个问题我特意注意过,很多都是小功能组件,功能稳定,没有bug,没更新是正常的.够用就行了.其次技术支持的事情,对开源免费来说,不能太强求,这里发布的都是小功能 ...

  10. android studio 使用jar包,arr包和怎么使用githup开源项目中的aar包或module

    我这里的android studio的版本是2.2.3版本 一.现在大家都用android studio了,就有人问怎么使用jar包 其实使用jar包比较简单 直接吧jar放入工程的app目录下的li ...

随机推荐

  1. 深入解析Python并发编程的多线程和异步编程

    本文分享自华为云社区<Python并发编程探秘:多线程与异步编程的深入解析>,作者:柠檬味拥抱. 在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别 ...

  2. 2-Django之三板斧

    HttpResponse 返回字符串类型的数据 HttpResponse: 这是 Django 自带的类,用于构建基本的 HTTP 响应 我的app名称是demo,我们先按照正常的流程,在views中 ...

  3. 带你领略下iOS中OC的“alloc”源代码,让你在工作中不在迷惑

    前言 前面我们使用官方开源的objc源码进行了编译调试 objc4-818.2源码编译调试笔记 前言为什么会想要调试源码? 苹果开源了部分源码, 但相似内容太多, 基本找不到代码见的对应关系, 如果能 ...

  4. Android底层渲染原理

    Overview多年前Android的UI流畅性差的问题一直饱受诟病,Google为了解决这个问题开发了Project Butter项目,也就是黄油计划,期望彻底改善Android系统的流畅性.这是A ...

  5. 【Azure 应用服务】收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)

    问题描述 收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)的具体办法 问题 ...

  6. 非正式全面解析 NebulaGraph 中 Session 管理

    NebulaGraph 论坛最近有些讨论帖,各种姿势来问 NebulaGraph Session 管理相关的事情,我寻思这也不是一个法子,还是来写一篇文章来讲述下 NebulaGraph 中的 Ses ...

  7. Java 常用类 JDK 8 之前日期和时间的API测试

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 import java.util.Date; 6 7 8 /** ...

  8. wsl使用记录

    # wsl使用记录 安装 直接参考微软官方文档使用 WSL 在 Windows 上安装 Linux ubuntu可用发行版安装 https://ubuntu.com/wsl 访问 方式一:在资源管理器 ...

  9. 面试官:线程调用2次start会怎样?我支支吾吾没答上来

    写在开头 在写完上一篇文章<Java面试必考题之线程的生命周期,结合源码,透彻讲解!>后,本以为这个小知识点就总结完了. 但刚刚吃晚饭时,突然想到了多年前自己面试时的亲身经历,决定再回来补 ...

  10. 在Linux平台使用wps卡顿现象解决方法

    是因为软件占据的内存过多,需要关掉目前不使用的软件,以释放系统内存.