快速熟悉开源项目
《Docker-容器与容器云》中的一篇文章,觉得挺不错,所以从网上转载了一份过来。原文:快速熟悉开源项目
查阅文档
查阅文档包括查阅文档与博客,最好是带着问题去阅读。
1.查阅文档与博客
一个好的开源项目未必会火,但是一个火的开源项目一定有其可取之处,而从众心理又会让更多人去研究它。所以,要熟悉你想研究的开源项目,第一步就是在搜索引擎中查找该项目的博客和资料。通过快速阅读介绍开源项目架构,使用方法等这类文章,你就能大体了解该项目的意义,功能和基本使用方法。
通过搜索到的资料,如果你觉得该项目就是你想要的,那么便可以很耐心的阅读项目提供的官方文档,从中学习一些具体的下载,安装和使用方法,以便了解项目全貌。
2.带着问题去阅读
阅读文档过程中不能盲目,需要带着如下问题去阅读。
- 这个项目解决了什麽问题?
- 这个项目涉及了哪些成熟的技术?
- 这个项目是否符合我的要求(用户规模,使用场景,性能,安全性等)?
- 当阅读完文档后,能否尝试画出大致的架构图?
动手实践
实践是最好的老师,在阅读文档过程中,按照文档的操作指南亲手实践,不但有助于加深理解,同时还会注意到很多细节,可以更清楚的感受到项目是否符合自己的需求。
1.搭建项目
实践过程一般都遵循项目的README文件,进行部署安装和尝试。如果有现成使用项目的事例代码,那么也可以按照示例代码进行尝试。此时若是运行顺利,则可以尝试着根据自己的理解对事例代码进行修改。若是出现问题也无需慌张,只需要将问题的异常信息当作关键词在搜索引擎中查找即可。如果实在找不到解决方案,那么就可以提交到开源项目的邮件列表中,开源社区的人们一般都比较热心,相信很快就可以解决问题。
基本尝试过后,我们可以使用项目的一些高级功能,如一些高级配置项,较为复杂的API等。相信一个运作良好的开源项目,为了方便社区的贡献者们可以快速加入,必然会提供一份较为详尽的指南,你只需挑选你感兴趣的部分阅读即可。
基本尝试过后,我们可以使用项目的一些高级功能,如一些高级配置项,较为复杂的API等。相信一个运作良好的开源项目,为了方便社区的贡献者们可以快速加入,必然会提供一份较为详尽的指南,你只需挑选你感兴趣的部分阅读即可。
下面推荐几个解决疑惑的好网站
- Google搜索引擎: google.com
- Stackoverflow: stackoverflow.com
- 项目相关的Google讨论组: groups.google.com
- 对GitHub的项目提Issues: github.com
2.深层次改动
有趣的是,很多开源项目一般都会为了方便用户使用,提供release的版本。如果基本的部署和使用已经成功的话,强烈建议你从源码构建和部署该项目。这样你就能从开发,调试到发布整个一体化的全部过程,由此全方位的感受项目的优缺点。
基本尝试过后,我们可以使用项目的一些高级功能,如一些高级配置项,较为复杂的API等。相信一个运作良好的开源项目,为了方便社区的贡献者们可以快速加入,必然会提供一份较为详尽的指南,你只需挑选你感兴趣的部分阅读即可。
阅读源码
经过以上两步之后,你必然对项目的大致情况了然于胸,想更深入的了解自然非阅读源码莫属了。
一般阅读源码有两种习惯方式,一是根据命令行的代码调用过程阅读;二是根据架构分模块阅读。
1.跟着运行过程阅读
刚上手的过程可以使用的一种方式。通过实践过程中对对某个命令或参数的理解,从主干开始,一步一步理清这个命令在运行过程中代码调用的路径。通过debug工具观察变量和函数,修改源码打印日志,可以更好的帮你理解源码。
当理清这个过程后可以将这个过程用流程图的形式记录下来,从而加深印象,方便下次阅读的时候快速会议和对比。
2.分模块阅读
在理清了程序运行的基本流程后,可以根据架构上各个模块的作用,挑选你有兴趣的部分阅读,如网络,存储,通信,用户接口,界面等,选择一个模块深入到实现细节中。
此时也可以带着如下几个问题帮助自己理解。
- 调用了什麽底层库?
- 采用了什麽设计模式?
- 这麽写有什麽好处?
如果在阅读源码的过程中出现瓶颈,你一时无法理解代码的用意,不妨去阅读一下相关的单元测试。一个好的单元测试通常都描述了要测试代码的主要功能和数据边界,通过运行和理解单元测试,可以有效的帮助理解源码。
相信经过以上三步,你必然已经对这个开源项目非常熟悉了。此时如果你感兴趣,也可以加入其中为开源社区做出一定贡献。