越努力 越幸运

从开源项目中悟到了什么?

最近业余时间都在学习 grpc 相关的东西,由于本身对 RPC 的了解还很浅显,所以本文不谈 grpc 相关的东西,聊聊从中体会到的个人感受

1. 如何参与到开源项目中来?

要参与进来首先得保持一定的兴趣,兴趣是最好的老师嘛,虽然我是刚刚参与并且没有任何有质量的 Pull Request 被接受,但还是总结下个人的做法:

  • 学习项目的架构,通常都有详细的文档
    • 如果没有详细的文档,这里其实就可以做些事情,弄懂后写份文档,项目是英文就用英文写,这也是很大的能力提供。
  • 学会项目的使用,通常都有 example 代码
    • 同样,没有的话,就可以编写,然后提交
  • 读代码,然后提 Pull Request
    • 通常从简单的、依赖少的代码开始
    • 如果有 TODO 的话,可以尝试完成,测试通过后提交
  • 反复读代码,读懂代码
    • 在这基础上,记录自己的思考,并提 issue 跟别人沟通
    • 如果想法有用,尝试实现并提交
    • 沟通别人提的 issue 并尝试解决

个人觉得能按这种步骤来的话,还是对个人成长有帮助的。

2. 从开源项目中悟到了什么?

结合对 grpc 的了解和我在地铁路上的随想,记录下个人的想法,虽然想法在公司内部项目实施起来不太靠谱。

不管是 Facebook(Facebook是如何做自动化测试的?) 也好 Badoo(Badoo 告诉你切换到 PHP7 节省了 100 万美元)也罢,在项目升级过程中都强调单元测试自动化测试用例有多少条、覆盖率达到了多少等,说明测试用例的积累的重要性可见一般,在后续的回归、升级过程中起到强有力的保证作用。

在看看 grpc 等开源项目也是有大量的单元测试、自动化测试用例,也只有这样才能做到让更多的开发者参与的同时保证代码的质量和正确性。

由此,联想到的公司项目的一种参与方式:

  • 编写大量的初始单元测试、自动化测试用例
    • 至于谁来编写可以根据项目组来定
  • 将用例放入持续集成平台进行定时、条件触发执行
  • 项目组所有人参与代码提交
    • 模块负责人负责审阅提交
    • 对于QA来说也可以参与进来
  • 将代码在公司范围内开源
    • 在 KPI 满天飞的年代可能别人不愿意提交
    • 要是有奖励措施了可能就失去了开源的本意了

这些都是我个人的想法,或许你们赞同或不赞同,一看而过吧!

3. 后续需要做些什么?

发现 grpc 拥有大量的测试用例,包括单元测试、自动化测试、持续集成等,涉及到的测试相关的东西包括但不限于:

  • gtest
  • jenkins
  • php unit
  • python unit

所以后续需要做如下几件事情:

  • 学习服务端 rpc 的 gtest 是如何编写的?
  • tests 目录下有大量自动化脚本,学习如何组织自动化测试的?
  • 如何做集成测试的?

等等。