diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\357\274\232\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\347\254\254 4 \345\260\217\350\212\202\357\274\232\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" "b/\347\254\254\344\270\211\351\203\250\345\210\206\357\274\232\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\347\254\254 4 \345\260\217\350\212\202\357\274\232\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" index 4f7dcc3287362c4217b179cc9bf71ad7649dd78e..c7ab6e39ec0e6cce8cc5dd4efaeab917c7acc949 100644 --- "a/\347\254\254\344\270\211\351\203\250\345\210\206\357\274\232\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\347\254\254 4 \345\260\217\350\212\202\357\274\232\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" +++ "b/\347\254\254\344\270\211\351\203\250\345\210\206\357\274\232\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\347\254\254 4 \345\260\217\350\212\202\357\274\232\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" @@ -1,11 +1,12 @@ # 第 4 小节:可以用哪些方式参与开源 + 可以通过哪些方式参与开源呢?对于这个问题大家可以第一反应就是只直接参与到开源项目开发中,才是参与了开源项目。比如在 Linux 内核开发中,到 5.9 版本发展到现在已经有 2.4 万开发者参与其中。没错,他们当时都是这个开源项目的参与者。 在该项目中,除了 Linux Kernel 2.4 万开发者之外,还有很多其他的参与者。 那么参与开源项目常用有那些参与方式呢? -### 1. 直接参与开源项目的开发 +## 直接参与开源项目的开发 上面的 Linux Kernel 的开发就很典型,由于其开发的复杂性,开发流程也比较复杂。 @@ -16,7 +17,7 @@ 参与到开源项目的方式并不完全一致。有些项目有内部其他的沟通方式。如通过 Slack 或者开发的微信群、QQ 群或 TG 群/频道[1],可以实时的沟通。 -### 2. 开源项目文档编写 +## 开源项目文档编写 开源项目文档的编写也是参与开源的项目的一种方式。在一些开源项目中,由于参与者人数和时间等限制,在项目的初期缺乏详细的项目文档。这时候项目文档往往是限制参与者参与的很大的因素。 @@ -26,15 +27,15 @@ 开源项目的文档还包括项目的设计文档、用户使用文档、测试文档均属于项目相关文档。 -### 3. 修复开源项目中 Bug +## 修复开源项目中 Bug 在项目开发中,随着代码的复杂度提高、开发人员变动等原因,往往有一些 Bug 长时间潜伏。参与解决项目中的 Bug,同样也是参与开源项目。 -### 4. 参与开源项目的测试和 Demo 编写工作 +## 参与开源项目的测试和 Demo 编写工作 参与开源项目的版本测试并提交 Bug、参与完善项目的测试用例来提升测试覆盖度、完善 Demo 使用等都是参与开源项目的重要方式。 -### 5. 参与开源项目推广 +## 参与开源项目推广 参与开源项目同时帮助推广项目也是对开源项目的贡献。对于开源项目来说最重要的是围绕项目聚集起的一群人。通过帮助开源项目推广可以为项目聚集更多使用者,开发者,帮助项目持续发展。 @@ -42,56 +43,48 @@ 对于有技术写作或演讲特长的贡献者,则可以通过在技术社区发表技术文章,或者在技术沙龙/会议上发表演讲来介绍该项目的特点、技术原理、使用场景以及最佳实践等,让更多人了解和认识该项目,从而获得更多的关注和反馈,帮助项目持续演进。 -### 6. 在商业公司参与开源项目 +## 在商业公司参与开源项目 有很多商业公司就是开源项目的发起者或者主要参与者。 比如 Linux Kernel 中,代码贡献最多的是 Intel,其次是华为。华为同时也是 OpenHarmony 发起者。这些商业公司参与到开源项目中的人员,同时都是开源项目的参与者。 -### 7. 基于 Git 参与开源项目的方式 +## 基于 Git 参与开源项目的方式 Git 是开源的版本控制系统,Gitee 和 GitHub 都采用 Git 进行管理,在上面有着大量的开源项目。 - -#### Gitee 开源项目参与方式: -* Pull Requests 方式 +### Pull Requests 方式 -即传统的 `fork-update-pr-merge` 提交流程,基本上分为 4 个流程: +无论是 GitHub 还是 Gitee,都支持 Pull Requests 方式提交合并请求,这也是当前基于 Git 管理的开源项目最常见的参与贡献方式。 + +这种提交流程也被称为 `fork-update-pr-merge`,主要分为以下四个步骤: 1. Fork 到自己的项目中 2. 在自己的项目上进行修改,提交。 3. 将自己项目 Pull Requests 到原始项目中。 4. 原仓库作者进行审核,同意后进行合并。完成代码提交。 -* Gitee 轻量级 PR 方式 - -即Gitee 独有的 Gitee Pull Request Lite(Gitee 轻量级 PR)方式,不需要 Fork,可以直接在网页上面进行代码的提交。 - -#### GitHub 开源项目参与方式: - -GitHub采用的是经典、传统的 `fork-update-pr-merge` 提交流程。 - -* 提交方式的选用: +### Gitee 轻量级 PR 方式 -1. 针对仅需少量的修改就可以完成的场景,建议使用Gitee Pull Request Lite(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 帮助中心](https://gitee.com/help/articles/4291) 。 -2. 针对大量的代码修改或者多个模块的联动修改的场景,更建议采用传统的 `fork-update-pr-merge` 提交流程。 +### 如何选择 -采用这种方式,是因为可以更好地通过测试用例来验证代码的影响范围和正确性,保证所提交的代码具有一定的质量水准。 +对于仅需少量的修改就可以完成的场景,你可以直接使用 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 生态。 -### 参考资料 +## 参考资料 * [Gitee 使用流程](https://blog.csdn.net/qq_45069279/article/details/106174340)。 * [Gitee 参与开源流程](https://blog.csdn.net/u010852680/article/details/77718998)。 -### 本部分内容贡献者 +## 本部分内容贡献者 -[brace](https://gitee.com/awang)、[杨子江](https://gitee.com/nodexy)、[npulxj](https://gitee.com/npu_lxj)、[ORH](https://gitee.com/orh)、[沈唁](https://gitee.com/sy-records)、[taotieren](https://gitee.com/taotieren)、[李新兆](https://gitee.com/li-xinzhao)、[taotieren](https://gitee.com/taotieren)、[zeroTwozeroTwo](https://gitee.com/zerotwozerotwo)、[郝鹏飞](https://gitee.com/DakeHao) +[brace](https://gitee.com/awang)、[杨子江](https://gitee.com/nodexy)、[npulxj](https://gitee.com/npu_lxj)、[ORH](https://gitee.com/orh)、[沈唁](https://gitee.com/sy-records)、[taotieren](https://gitee.com/taotieren)、[李新兆](https://gitee.com/li-xinzhao)、[taotieren](https://gitee.com/taotieren)、[zeroTwozeroTwo](https://gitee.com/zerotwozerotwo)、[郝鹏飞](https://gitee.com/DakeHao)、[阿基米东](https://gitee.com/luhuadong) > 发现内容中的错误?还是想要补充更多符合主题的内容?《开源指北》欢迎你进行贡献,点击[贡献指南](./../贡献指南.md)了解贡献的具体步骤。 \ No newline at end of file