做了5年开源项目,我总结了以下提PR经验

LabVIEW数据采集-数字I/O/计数器 labview 数据采集 数字I/O 计数器 阅读详情

如何优雅地参与开源贡献,向顶级开源项目提交 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子系统:

ark_runtime_core: Runtime Core组件是方舟运行时的公共组件,主要包括一些语言无关的基础运行库,包含承载字节码以及执行字节码所需要相关信息的ARK File、支持Debugger的Tooling、负责系统平台公共基础接口的ARK Base等

ark_js_runtime: 方舟JS运行时(ARK JavaScript Runtime)是OpenHarmony上JS应用使用的运行时。包含JS对象的分配器以及垃圾回收器(GC)、符合ECMAScript规范的标准库、用于运行ARK前端组件生成的方舟字节码(ARK Bytecode,abc)的解释器、用于存储隐藏类的内联缓存、方舟JS运行时对外的函数接口(AFFI)等模块。

ark_ts2abc: ts2abc组件是方舟平台的一个组件,其作为方舟编译器中JavaScript语言的前端工具,支持将JavaScript文件转换为方舟字节码文件

DCO签署地址:

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:

贡献指南:

docs: OpenHarmony documentation | OpenHarmony开发者文档 - Gitee.com

Git Commit Message 编写指南:

Git Commit message 编写指南 - Gitee.com

如何处理代码冲突:

如何处理代码冲突 - Gitee.com

PaddleOCR GPU部署:从环境配置到避坑实战指南 本文详细介绍了PaddleOCR GPU部署的全过程,从环境配置到避坑实战指南。通过分析常见的部署失败原因,提供硬件兼容性自查、软件环境精配方案以及路径配置的解决方案,帮助用户高效完成GPU加速的OCR任务部署,避免90%的常见错误。 阅读详情

相关推荐

【纯血鸿蒙】安装hdc工具

参考资料:

oh.K 5545

如何提交一个PR?完成这 6 点就可以了

龙蜥社区近期上线了【人人都可以参与开源】活动,活动里涉及了一项重要的事项就是:提!交!PR!本文就跟大家分享一下作为入门级的开发者,可以通过哪些方式参与社区建设?以及在社区参与过程当中如何提交 Pull Request(以下简称“PR”) ?...

weixin_60347558的博客 5871

非线性动力学_用MatCont分析非线性动力学方程组(一)

写在前面:笔者打算写两到三篇系列文章介绍MatCont,此为第一篇《用MatCont分析非线性动力学方程组(一)》。MatCont是一个基于Matlab而开发的免费工具包,专门用来做非线性动力学模型分叉、向量场、周期性等分析,符号(连续性)运算和数值(离散性)运算均适用。该工具的开发及研究项目由比利时Ghent大学的Willy Govaerts教授、荷兰Utrecht大学的Yuri Kuznets...

weixin_39700215的博客 2765

开发中时常提到的提交pr是什么意思?

在编程开发领域,PR是Pull Request的缩写,一般用于Git/SVN等版本管理软件中。 它的过程是这样的:比如你在GitHub上看到一个很牛X的项目,你fork到自己仓库后,再改动一些代码,然后可以向提交一个pull request。当管理员觉得你的提交太哇噻了,就会点击合并,然后你就给这个项目贡献了代码了。 有点枯燥是吧?我们再用一个通俗易懂的例子来解释一下。 就比如,我们在考试,我们每个人做的卷子都是一个仓库,而你的卷子肯定会有错误(除非学霸)。这些错误就相当于是bug。 老师把你的卷子收上来

kewei chen 2万+

N32G003学习——第九章 第三节1 串口 发送

经过第九章前2节的学习,基础打下之后,开始敲代码。

qq_34525008的博客 1030

自动驾驶预测决策规划八股

预测规划八股个人总结。

dawushixiange的博客 479

【面试】什么是PR,如何提PR?

定义:是一种协作开发的工作流程,当开发者完成一个功能、修复一个Bug或进行其他代码更改后,可以通过PR将这些更改提交给项目维护者或团队中的其他成员进行代码审查。PR允许团队成员在合并代码到主分支之前,对代码进行审查、评论、测试,确保代码质量。作用:PR提供了一个平台,允许其他开发者在代码被合并到主分支之前进行审查,发现潜在问题并提出改进建议。PR通常伴随着讨论和评论,团队成员可以在PR中讨论实现细节、设计选择或代码风格等问题。

Lewiz_124的博客 5845

Linux yum源配置以及yum命令讲解

前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu

九派Linux的博客 2282

如何给开源项目提过 PR 呢?其实很简单

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信ruochuan12源码共读群里有小伙伴聊到如何给开源项目提PR,所以今天分享这篇文章。你有给开源的库或者框架提过 PR 吗...

u012384510的博客 2697

ADS1115 0-10V高精度ADC模块原理图设计,已量产

在水质监测、智能气象站、环境感知等领域,0-10V 电压输出的传感器占据了重要地位。这类传感器输出信号稳定、抗干扰能力强,但对数据采集模块的精度、线性度和易用性提出了严苛要求。本文将深度解析一款专为 0-10V 传感器设计的高精度 ADC 模块,从硬件架构、性能指标到工程化实践,全面呈现其设计思路与核心价值。

不脱发的程序猿 272

ABAP SQL Hierarchy 全景参考,组织树、分类树与递归查询在数据库层的优雅落地

ABAP SQL中的hierarchy语法为树形数据结构处理提供了高效方案。S/4HANA系统中常见的成本中心、利润中心、物料分类等树形结构,传统开发需通过递归和嵌套循环处理,而ABAP SQL hierarchies通过将层级遍历能力下沉到SQL层,借助SAP HANA的层级函数支持,实现了更高效的查询。 该功能要求ABAP 7.51+版本,支持两种实现方式:CDS hierarchy用于创建可复用的稳定层级模型,适合业务核心数据;ABAP SQL HIERARCHY generator则适用于临时性层级

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 313

【转载】开源PR教程---我要提交 PR,怎么上手?

最近在参与开源项目,对于pr流程还不太清晰,看到了一篇不错的介绍文章,这篇文章摘取重要的部分转载一下。文章末尾有标注原文。

STATICHIT静砸的博客 1285

Coze智能体开发:搭建一个解析 PDF 文件的工作流

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 2812

为什么现在没人愿意给开源项目提 PR 了

你会找到一个 bug,clone 仓库,改一行代码,然后在绿油油的贡献方格里自豪地发呆。前端AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。但时代变了:经济压力、AI 冲击下的职业焦虑、要命的加班,让工程师根本挤不出“热爱时间”。为什么要花 3 个月等别人审你的 PR, 不如自己发个版本,顺便涨粉。如果你想修复它,先从同理心开始—— 顺便去看看你 2022 年开的 PR,关了它, 或者帮别人审一个。

粉丝们务必加入微信粉丝群 1059

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

开源趣事~ 记给 OpenHarmony 提 PR 的那些事

说到这次的主题,参加鸿蒙项目的开源,也是小编第一次拥抱开源...

m0_46259251的博客 897

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

给 Swin Transformer 提 PR 前,先问自己这 5 个问题

有开发者给 Swin Transformer 提过一个开源贡献 PR:修了配置文件里的一个拼写错误,顺手把相邻的六十多行也重新排版了。这个 PR 被拒了 3 次。第 4 次,他只剩那 1 行改动,半小时就过了审。差别不在技术,在 diff 里到底装了什么。 下面的经验来自一个在这个仓库被拒过 PR 的人。核心就两件事:怎么让第一个 PR 顺利过审,以及之后怎么走一条稳定的贡献者路径。 Swin

gitblog_00361的博客 870

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Openharmony图文直播锤子哥直播议题 - 4步高效提PR技巧,学会效率直接提升666%!

openharmony 锤子哥专访

weixin_54516968的博客 579

如何为AirDash开源项目贡献代码:从提Issue到合并PR的完整指南

AirDash开源项目是一款基于Flutter与WebRTC技术构建的跨平台文件传输应用,它能让你把照片、文档、视频等任意大小和数量的文件,免费、加密地发送到任何一台设备上。无论你是开源新手还是资深开发者,为AirDash贡献代码都是学习WebRTC点对点传输、跨平台App开发的绝佳途径。这篇完整的贡献指南,将带你一步步走完从提交Issue、搭建本地开发环境,到提交PR并成功合并的全过程。 [!

gitblog_00053的博客 606

Nue社区贡献指南:如何为开源项目提交PR

你是否曾为现代前端框架的复杂性感到困扰?当一个按钮组件的实现需要数百行代码和多个依赖时,我们不禁要问:web开发真的需要这么复杂吗?Nue作为React、Vue和Svelte的替代方案,正通过"以更简洁的代码构建用户界面"的理念重新定义前端开发。 作为开源项目,Nue的成长离不开社区的支持。本文将带你深入了解如何通过提交Pull Request(PR)为Nue贡献力量,无论是修复bug、提交新功...

gitblog_00446的博客 599

手把手教你,细说向开源项目递交代码的流程

经过前面的学习,相信大家对GIT的已经基本熟悉了。但是笔者也知道,很多同学对向开源项目做贡献感兴趣,开源项目的魅力在于它们能够吸引来自世界各地的开发者协同工作,共同创造出更为强大的代码库。如果你想为一个开源项目作出贡献,那么递交代码就是必须掌握的技能。在这篇博客中,我将会手把手地教你如何向开源项目递交代码

战斧的博客 7805

读优质开源项目的合并PR:高效提升代码能力的实战指南

在软件开发中,代码能力的提升不仅依赖自身编码实践,更离不开对优秀工程案例的深入研读。GitHub作为全球最大的开源协作平台,其合并PR(Pull Request)是代码变更的最终定稿,包含了设计讨论、代码审查和测试验证的全过程。理解合并PR的运作机制,等于站在资深开发者的视角观察问题拆解与边界处理,这对提升代码评审能力和工程素养极具价值。无论是后端开发者、开源维护者,还是准备技术面试的工程师,通过系统化阅读合并PR,都能获得比零散刷教程更高性价比的学习效果。本文从GitHub搜索语法、REST API和gh

weixin_34189116的博客 469

开源项目教程:一普每日一PR指南

开源项目教程:一普每日一PR指南 1. 项目介绍 一普每日一PR(1pr) 是一个独特的GitHub项目,由The Practical Dev团队创建并维护。该项目接受每天最多一个pull request(合并请求),旨在鼓励开发者参与贡献并学习Git和GitHub的工作流程。尽管这个仓库已被归档,但它作为一个教育工具仍然具有价值。项目遵循BSD-2-Clause许可证,并且其结构简单明了,适合新...

gitblog_00053的博客 336

HTMLBook 开源贡献指南:5 步向 O‘Reilly 项目提交第一个 PR

HTMLBook 是一个由 O'Reilly 发起的开源项目,它基于 XHTML5 制定了一套专门用于编写纸质书与电子书的开放标准,让你可以真正"用 HTML 写书"。无论你是前端开发者、技术写作者,还是对开源贡献跃跃欲试的新手,为 HTMLBook 提交第一个 Pull Request(PR)都是一次低门槛、高回报的开源入门体验。这份完整的 HTMLBook 开源贡献指南,将带你从了解项目结构开

gitblog_00520的博客 1162

用GitHub API筛选合并PR,高效生成开源项目阅读清单

阅读开源项目源码时,直接看master分支往往信息过载,难以把握设计动机。而一次合并的Pull Request(PR)浓缩了问题背景、方案取舍、评审讨论与测试补充,是高效学习的理想切片。借助GitHub API,我们可以自动化筛选候选仓库、抓取已合并PR,并从项目治理成熟度、改动聚焦度、评审强度、测试配套等维度进行学习价值评分,最终生成一份个性化的PR阅读清单。这一流程将代码阅读从随机浏览升级为系统化工程实践,尤其适合希望提升代码能力与代码评审水平的开发者,将时间花在真正值得精读的高质量PR上。

anjichan4261的博客 475

Captura开源项目健康指标:Issue解决时间与PR吞吐量

Captura是一个功能强大的屏幕录制工具,支持捕获屏幕、音频、光标、鼠标点击和键盘输入。作为开源项目,其健康状况可以通过Issue解决时间和PR吞吐量等关键指标来评估。本文将深入分析这些指标,揭示项目的开发效率和社区活跃度。 ## Issue解决时间分析 ### 定义与计算方法 Issue解决时间指的是从Issue被创建到被关闭(包括解决、关闭或标记为重复)所经历的时间。本文通过分析项目提...

gitblog_00159的博客 459

读源码不如读合并PR:高效学习开源项目的最佳方法

在开源项目学习中,源码阅读往往只能看到最终结果,却无法还原代码背后的决策过程。真正承载这些信息的,是已经合并进主干分支的 Pull Request。一个高质量的 merged PR 不仅包含代码改动,还记录了设计取舍、性能考量、测试策略与代码审查交锋,信息密度远超静态源码。对于开发者而言,掌握从 GitHub 等平台搜索、筛选和拆解 PR 的方法,能够大幅提升技术理解力。通过精准的搜索语法定位高价值 PR,再结合自身业务场景进行针对性阅读,就能将开源社区的工程经验转化为个人能力。这种学习方式适用于日常技术积

weixin_30680385的博客 315
上一篇: 许北林:我为什么加入OpenHarmony生态?又为什么要做“启航KP”开发套件?
下一篇: OpenHarmony3.1 Release版本特性解析——硬件资源池化架构介绍
OpenHarmony开发者
博客等级 码龄5年 625粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值