第 4 小节:可以用哪些方式参与开源
# 第 4 小节:可以用哪些方式参与开源
可以通过哪些方式参与开源呢?对于这个问题大家可以第一反应就是只直接参与到开源项目开发中,才是参与了开源项目。比如在 Linux 内核开发中,到 5.9 版本发展到现在已经有 2.4 万开发者参与其中。没错,他们当时都是这个开源项目的参与者。
在该项目中,除了 Linux Kernel 2.4 万开发者之外,还有很多其他的参与者。
那么参与开源项目常用有那些参与方式呢?
# 直接参与开源项目的开发
上面的 Linux Kernel 的开发就很典型,由于其开发的复杂性,开发流程也比较复杂。
- 阅读官方网站和内核代码中的文档,了解基本的开发流程。
- 加入邮件列表,查看计划改善的问题,寻找自己想要改善的问题点。
- 下载代码后编译,修改代码,测试验证后。
- 生成 Patch, 然后发邮件提交补丁。
参与到开源项目的方式并不完全一致。有些项目有内部其他的沟通方式。如通过 Slack 或者开发的微信群、QQ 群或 TG 群/频道[1],可以实时的沟通。
# 开源项目文档编写
开源项目文档的编写也是参与开源的项目的一种方式。在一些开源项目中,由于参与者人数和时间等限制,在项目的初期缺乏详细的项目文档。这时候项目文档往往是限制参与者参与的很大的因素。
就像我们当前参与的开源指北文档的编写,所有参加编写和校对的人员也都是开源项目的参与者。
有些项目使用 Wiki 来编写项目文件,完善和维护项目 Wiki 同样也是参与开源项目。
开源项目的文档还包括项目的设计文档、用户使用文档、测试文档均属于项目相关文档。
# 修复开源项目中 Bug
在项目开发中,随着代码的复杂度提高、开发人员变动等原因,往往有一些 Bug 长时间潜伏。参与解决项目中的 Bug,同样也是参与开源项目。
# 参与开源项目的测试和 Demo 编写工作
参与开源项目的版本测试并提交 Bug、参与完善项目的测试用例来提升测试覆盖度、完善 Demo 使用等都是参与开源项目的重要方式。
# 参与开源项目推广
参与开源项目同时帮助推广项目也是对开源项目的贡献。对于开源项目来说最重要的是围绕项目聚集起的一群人。通过帮助开源项目推广可以为项目聚集更多使用者,开发者,帮助项目持续发展。
同时在开源项目社区解答用户使用的问题,可以让我们对开源项目有更深的认识的同时,也能帮助更多的用户使用好开源项目。
对于有技术写作或演讲特长的贡献者,则可以通过在技术社区发表技术文章,或者在技术沙龙/会议上发表演讲来介绍该项目的特点、技术原理、使用场景以及最佳实践等,让更多人了解和认识该项目,从而获得更多的关注和反馈,帮助项目持续演进。
# 在商业公司参与开源项目
有很多商业公司就是开源项目的发起者或者主要参与者。
比如 Linux Kernel 中,代码贡献最多的是 Intel,其次是华为。华为同时也是 OpenHarmony 发起者。这些商业公司参与到开源项目中的人员,同时都是开源项目的参与者。
# 基于 Git 参与开源项目的方式
Git 是开源的版本控制系统,Gitee 和 GitHub 都采用 Git 进行管理,在上面有着大量的开源项目。
# Pull Requests 方式
无论是 GitHub 还是 Gitee,都支持 Pull Requests 方式提交合并请求,这也是当前基于 Git 管理的开源项目最常见的参与贡献方式。
这种提交流程也被称为 fork-update-pr-merge
,主要分为以下四个步骤:
- Fork 到自己的项目中
- 在自己的项目上进行修改,提交。
- 将自己项目 Pull Requests 到原始项目中。
- 原仓库作者进行审核,同意后进行合并。完成代码提交。
# Gitee 轻量级 PR 方式
轻量级 PR(Pull Request Lite)是一种更易于操作的提交方式,目前也是 Gitee 独有的 Gitee Pull Request Lite(Gitee 轻量级 PR)方式,不需要 Fork,可以直接在网页上面进行代码的提交。这种提交方式适合对 Git 不太熟悉的初学者。
对于常见的「Fork + Pull」模式,需要将开源项目仓库 Fork 一份副本,占用用户名下仓库空间,在 Fork 和 Clone 过程中存在一定的网络传输和等待时间,为创建一个 Pull Request 带来一定的时间和操作成本,在 Gitee 就可以通过轻量级 PR(Gitee Pull Request Lite),开发者只需在 Web 端完成代码贡献(添加、删除、修改代码等等),就能一键向开源项目仓库提出Pull Request 请求,减去了中间大量的繁琐操作。无论是单文件修改还是多文件编辑都可以使用轻量级 PR,了解更多关于轻量级 PR 的使用方式和介绍可以点击查看 Gitee 帮助中心 (opens new window) 。
# 如何选择
对于仅需少量的修改就可以完成的场景,你可以直接使用 Gitee Pull Request Lite(Gitee 轻量级 PR)方式。但对于大量的代码修改或者多个模块的联动修改的场景,更建议采用传统的 fork-update-pr-merge
提交流程,这样可以更好地通过测试用例来验证代码的影响范围和正确性,保证所提交的代码具有一定的质量水准。
# 注释
- [1] 因为 QQ/WeChat 没有支持 Linux 系统,对于使用 Linux 为主系统的开发者/贡献者/维护者来讲非常不友好,所以才会有很多开源社区/项目使用 Telegram(简称 TG )作为实时沟通工具。TG 可以通过配置 Bot(机器人)来自动完成很多低级且重复的操作,相比 QQ/WeChat 不支持大文件不支持
Code 块
显示有了很多优势,而且消息可追溯和 Bot 配合能很友好的解决很多问题。同时也希望国产软件能够提供支持 Linux 的软件,来完善 Linux 生态。
# 参考资料
# 本部分内容贡献者
brace (opens new window)、杨子江 (opens new window)、npulxj (opens new window)、ORH (opens new window)、沈唁 (opens new window)、taotieren (opens new window)、李新兆 (opens new window)、taotieren (opens new window)、zeroTwozeroTwo (opens new window)、郝鹏飞 (opens new window)、阿基米东 (opens new window)
发现内容中的错误?还是想要补充更多符合主题的内容?《开源指北》欢迎你进行贡献,点击贡献指南了解贡献的具体步骤。