新手如何快速参与开源项目

新手,如何,快速,参与,开源,项目 · 浏览次数 : 2878

小编点评

**参与开源的好处和方法** **优点:** * 对贡献的深入了解,提升个人能力。 * 沟通交流能力锻炼,掌握清晰的描述技巧。 * 对个人能力背书,提升信任度。 * 对项目的贡献加深理解。 * 对代码贡献的归属感。 **参与开源的步骤:** 1. **了解项目规范:**阅读官方提供的贡献指南和 PR 语义。 2. **修复代码 bug:**首先考虑解决提交的 bug,建议在 PR 中明确说明修复过程。 3. **回答问题:**回答社区中用户的问题,并提供解决方案或建议。 4. **提交 feature:**针对软件不具备功能的 issue,提交 feature 提案并实现。 5. **遵守贡献指南:**严格按照项目规范完成 PR 和 git commit。 **解决问题:** * **问题:** PR 语言或格式错误。 * **解决方案:**检查代码规范和 PR 语义,并进行修改。 * **问题:**缺少明确的修复步骤。 * **解决方案:**在 PR 中提供清晰的修复步骤。 * **问题:**无法解决的 bug。 * **解决方案:**向社区发布问题,或者在社交媒体上寻求帮助。 **建议:** * 在准备贡献之前,阅读官方提供的贡献指南。 * 在提交 PR 前,确认项目规范要求。 * 在回答问题时,保持冷静和专业。 * 积极参与开源社区,提升个人能力。

正文

image.png

前言

开源这件事情在软件开发领域一直是一个高频话题,我们工作中不管是使用到的工具还是第三方库都离不开开源的支持。

近期由于工作的原因,我需要经常和 Apache Pulsar 社区沟通,同时也会将日常碰到的问题反馈给社区,包括一些 bug ,一些我能修的也是顺带就提了一些 PR

之前或多或少我也参与过其他的开源社区,但和现在的还是有些许的不同:

  • 以前我更多的是个人开源项目,偶尔也会有其他开发者向我的仓库贡献代码。
  • 也参与过其他个人作者或者是社区性质的项目,但流程上没有那么正规或者是标准

简单来说就是以前就是小打小闹,Pulsar 毕竟是 Apache 社区的顶级项目,参与的整个流程要求也会比较复杂,当然学到的知识也会更多。

image.png

image.png
这半年时间大大小小提了十几个 PR ,也逐渐捋清楚了一些上手的方法和套路,所以如果你也想参与开源,但苦于不知道如何入门,看完后希望对你有所帮助。

为什么参与开源

首先还是来聊聊参与开源的好处,了解之后也许会让你有路转粉。

首先最明显的一点就是让你对贡献的这个项目更加深入的了解,我们常常都在面试的时候被问到对 XX 框架的熟悉程度,哪怕你在简历里写的天花乱坠也没有是这个项目 Contributor 更具有说服力。

其次是沟通交流能力也会得到锻炼,开源社区往往都是以 github issue/PR,或者是 Mailing List 的方式沟通交流,这样的沟通方式和我们常用的微信、QQ 这类及时通讯工具有着本质的区别。

往往需要我们有了冷静的思考加上清晰的描述才会将自己的观点发布出去,这样不自觉的就会养成自己的总结能力,这个能力对于内容创意内容工作者来说非常重要。

还有一个更明显的好处就是对个人的能力背书,大家常说的 show me the code,而 GitHub 就是最好的方式。

当你是某个知名开源项目的 Contributor 甚至是 Committer/PMC 就已经足够证明自己的能力了。

如何参与

如何参与呢,其实也很简单,不外乎有以下几种方式(由易到难):

  • 一些 typo 类的修复。
  • 回答社区中用户的问题。
  • 使用过程中遇到 bug,直接反馈,有兴趣的话最好是自己能修复。
  • 修复现有 issue 列表中未解决的 bug
  • 软件不具备自己需要的功能时提交 feature 提案并实现。

不管是哪种方式我的建议是在准备贡献之前都应该先看看官方提供的贡献指南,通常在官网就能查看。

即便是最简单的修复 typo,因为越是专业的项目每个 PR 的合并都是严谨的,提前了解后可以避免犯一些基本错误从而影响积极性。

这里我以 Pulsar 为例:
image.png
官网有着详细的贡献指南,包括环境搭建、代码约定、PR/git commit 语义等各种规范。

这里我重点强调 PR 的语义,一个好的 PR 规范更容易引起社区成员的注意,毕竟我们每一次提交都需要 Committer 的同意才能合并。

image.png
还是以 Pulsar 为例,在提交 PR 前一定得先看看这里的规范要求,不然很可能第一步就会吃瘪。

可能遇到的问题

下面讲讲贡献过程中可能会碰到的问题。

在上面讲到的难度排序中将修复个人 issue 排在了其他 issue 之前了,这是因为往往对自己提交的 bug 更熟悉,而社区其他人反馈的问题大概率会被老手认领。

加上自己也不熟悉,可能在自己研究复现的过程中就把自己劝退了。

认领 issue

这里还有个小技巧,当我们准备修复一个不是自己提交的 issue 时,最好是在评论区让 Committer 将这个任务分配给你,这样社区成员就不会做重复工作了。

image.png
类似于这样。

同时我们在查找可以修复的 issue 时也要注意这个 issue 有没有被认领以及是否有 PR 关联。

image.png

有时候 issue 并没有被指定但也有相关 PR 在处理该问题了,这时我们就可以过滤掉这个 issue

help want

image.png
也可以找找带有 help want 标签的 issue,这类问题往往会相对简单,修复起来也更容易。

社区反馈较慢

还有一个比较常见的问题是自己提交的 issue 或者是 PR 迟迟没有人处理。

我们可以先看看这个 issue 对应的代码最近主要是哪些人在维护,这个在 IDE 中配合 GitToolBox 插件就很容易看出来。

image.png
后面的 ID 往往是 PR 号,我们可以通过这个 PR 找到对应的作者,然后尝试在 issue 评论区艾特对方。

如果依然没有回复,那我们也可以给开发组发送邮件。
image.png
如果还是没有回复,比如我这个😂

那也还有一个办法,就是尝试在社交媒体(GitHub 首页、技术群)上找到 Committer 的微信,直接私聊的方式让对方帮忙推进。
image.png

当然也有一些项目长期没有维护了,这种 PR 要做好心里准备,很有可能对方不会理你;这点在国内某个企业的开源项目中比较常见。

总结

总的来说想要做好开源得有耐心和长期坚持,同时给自己带来的好处也是物超所值的,Apache 这类专业的社区我也才参与了半年,后续也会长期坚持下去,也希望哪天可以积累到成为 Committer 后再和大家分享。

与新手如何快速参与开源项目相似的内容:

新手如何快速参与开源项目

![image.png](https://s2.loli.net/2023/08/05/5mXrStCDVHNxF7f.png) # 前言 开源这件事情在软件开发领域一直是一个高频话题,我们工作中不管是使用到的工具还是第三方库都离不开开源的支持。 近期由于工作的原因,我需要经常和 `Apache P

如何找到并快速上手一个开源项目

以前有写过两篇文章来简单聊过如何做开源的事情,最近我自己组了一个社区里面也有不少朋友对开源感兴趣,于是我便根据自己的经验系统的梳理了一些关于开源的事情。 新手如何快速参与开源项目 手把手教你为开源项目贡献代码 有兴趣的可以先看看之前这两篇。 如何找到自己感兴趣的开源项目 首先第一步先想清楚自己搞

如何3分钟,快速开发一个新功能

背景 关于为什么做这个代码生成器,其实主要有两点: 参与的项目中有很多分析报表需要展示给业务部门,公司使用的商用产品,或多或少有些问题,这部分可能是历史选型导致的,这里撇开不不谈;项目里面也有很多CRUD的功能,而这些功能的实现代码基本上差不多,这些功能都去手写,也比较浪费时间而且效率很低,还可能会

Linux平台Oracle 23c单实例 安装部署配置 快速参考

转眼间已经2023年,再有一周就要过年了,在这里先给大家拜个早年,祝大家新的一年万事顺利。 Oracle如今版本号也和年份挂钩,在前段时间的OCW上也宣布发布了beta版本的23c,因为23c是继19c之后的另一个长期支持版本,所以今天就下载安装测试尝尝鲜。 自己的测试环境目前剩余资源有限,就先装个

测试新人,如何快速上手一个陌生的系统!

大家好,我是狂师! 作为刚不行不久的测试新人,面对一个陌生的系统时,可能会感到有些手足无措。面对一个全新的系统系统,如何快速上手并展开有效的测试工作是一个重要的挑战。 本文将探讨测试新人如何通过一系列步骤和策略,快速熟悉并掌握新系统的测试要点,从而提高测试效率和质量。本文旨在为测试新手提供一份指导,

玩转服务器之网站篇:新手使用WordPress搭建博客和静态网站部署

在之前的玩转服务器系列文章里,我们介绍了如何构建小型的高可用环境、PHP、Python、Java web、docker环境部署,以及Node.js SSR应用,本篇文章主要介绍新手也能快速上手的WordPress博客搭建和静态网站部署的教程

Python Django 零基础从零到一部署服务,Hello Django!全文件夹目录和核心代码!

**在这篇文章中,我将手把手地教你如何从零开始部署一个使用Django框架的Python服务。无论你是一个刚开始接触开发的新手,还是一个有经验的开发者想要快速了解Django,这篇教程都会为你提供一条清晰的路径。我们将从环境搭建开始,一步一步地创建一个可以处理GET和POST请求的服务,让你能在实践

使用“宝塔一键迁移”工具,将typecho博客迁移到京东云cvm云主机

作者:京东科技 林中 服务器更换、网站搬家,对于很多开发者新手来说不是一件容易的事情,需要迁移网站程序、数据库,修改数据库连接文件等。在云迁移方案中,宝塔是非常简单好用的服务器运维面板,能够极大提升运维管理效率。本文将介绍如何使用“宝塔一键迁移”工具将单机版typecho博客系统快速迁移到京东云cv

投放视频广告时,如何快速与第三方播放器兼容?

新媒体时代,广告样式越来越丰富。相较于传统的图文信息,视频类广告更具有直观性,能够让消费者在了解产品知识和功能的同时加深对产品的印象。 因此在各类网站或App上投放视频类广告是个很好的宣传方式,但广告商们如果想在网站上展示视频广告,必须确保视频广告投放协议与发布渠道的播放器兼容;如果不能兼容,广告商

[转帖]关于Bonree ONE 2.0,那些运维人不知道的一切

http://blog.itpub.net/31545813/viewspace-2924710/ 近年来,伴随着数字经济的不断深入,以云原生、Devops等为代表的新技术快速发展。传统的IT监控工具多样、分散、庞杂,并且数据种类杂、缺乏关联性,导致整个IT系统不具备真正的可观测性。那么,如何快速发