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