如何探索大型开源软件库

原标题:如何探索大型开源软件库
作者|ParthParikh , KishoreGanesh , ChrisEwald , CoryMassaro , MakrandRajagopal , SarthakKundra
译者|平川
策划|Tina
本文最初发布于ParthParikh的个人博客 , 经原作者授权由InfoQ中文站翻译并分享 。
注:本指南是我们在2020年秋为MLH研究员制定的开源软件指南的一部分 。 但是我坚信 , 这对任何探索大型代码库的新人都会有所帮助 。 如果你对这个指南有什么建议 , 请联系我 。
内容列表
选择一个项目开始探索存储库使用存储库检出最初的提交测试用例、规范和从源代码构建使用工具帮助理解GitLog使用技巧搜索发现问题计划充分使用问题描述不要试图遍历整个代码库弄清楚你那一部分在其中扮演的角色重现问题结构化理论编码和指南来自导师和维护人员的反馈调试、日志记录和性能分析选择一个项目
你的小组长和导师给你发了一个存储库列表 , 罗列了你可以参与的项目 。 你要研究这些存储库和相关的问题 。 最有可能的是 , 这些存储库已经在GitHub上的MLH-Fellowship组织中创建了分叉 , 并且项目板(projectboard)已经与这些分叉进行了关联:

如何探索大型开源软件库
文章图片
项目板是一个找问题的好地方 。
如果你所选择的存储库还没有创建分叉 , 或者还没有添加项目板 , 请联系相关导师 , 因为他们需要进一步完善他们的工作 。
或者 , 你可能对你想要参与的库或是想要从事的工作有一个非常清晰的愿景 。 我们鼓励团队成员积极主动!务必在GitHub上公开问题并进行讨论 , 以表明你的意图 。
开始探索存储库
探索新存储库无疑是一项令人生畏的任务 , 会涉及到很多方面——要熟悉语言 , 理解所使用的工具或框架 , 组件之间如何相互集成 , 开发人员使用什么范式 , 等等 。 本小节中提到的要点将为你提供保证存储库探索之旅顺利进行的方法 。
使用存储库
如何探索大型开源软件库】正如在各种讨论中提到的 , 熟悉任何开源项目的最佳方法就是使用它 。 从一个与你将要参与贡献的项目相关的非常简单的想法开始 。 然后 , 利用这个开源项目把这个想法变成现实 。 在整个过程中 , 要确保自己了解项目的依赖项、特性和重要组件/类 。 设法集成尽可能多的特性 。 记住 , 你的第一个目标是探索这个项目的广度 。
如果上面的过程让你觉得很被动 , 分析下为什么?是因为某个工具、语言、框架 , 还是别的什么东西?在了解了“为什么”之后 , 观察项目是如何使用该技术的 , 并阅读文档 。 如果文档信息量太大 , 请跳到教程 , 或者观看下作者/维护人员提供的相关视频演示 。 如果还有困惑 , 请在项目的讨论平台(Githubdiscussion、Slack、Discord等)上联系贡献者 。
最后 , MLH-Fellowship的kickoffhackathon , 其主要目的就是让研究员们广泛地使用他们将在整个奖学金项目中做出贡献的开源项目 。 所以要好好利用这个机会 。
检出最初的提交
总是先做最难的部分 。 如果最难的部分是不可能完成的任务 , 为什么要在容易的部分上浪费时间?一旦最难的部分完成了 , 也就大功告成了 。
总是先做容易的部分 。 你一开始认为容易的部分 , 结果往往是困难的部分 。 一旦简单的部分完成了 , 你就可以把所有的精力都集中在困难的部分了 。
——A.Schapira
通常 , 最初的提交包含项目的全部要点 。 通过分析它们 , 你可以了解该存储库的初始目标 。 这里是BentoML维护者在2019年4月2日做的第一次提交 。 README指出 , BentoML旨在实现三个目标——简化部署工作流 , 支持主要框架 , 以及内置DevOps实践 。 这与/example、/bentoml/artifacts和handlers一起构成了核心组件的主要部分 。 此外 , 在他们第48次提交时 , 文档得到了大幅的改进 。
测试用例、规范和从源代码构建
阅读测试代码往往比阅读应用程序代码更容易 , 这可能是因为程序员不会在晚上8点匆忙编写测试 。
——arandr
从这个部分过渡到计划无疑是具有挑战性的 。 为了简化这种转换 , 从源代码构建、阅读测试用例以及理解规范都非常有帮助 。
测试被认为是最好的文档形式之一 。 通常 , 它能让你了解作者期望的工作方式 。 将测试作为示例参考对于理解任何项目都是一种很好的方式 。 如果你计划为开源项目编写测试 , MIT:6.005有一篇很好的测试说明 。 记住——测试的目的是让你可以信心十足地重构和更改代码 。