如何熟悉一个开源项目?

参考来源:
http://www.lai18.com/content/436209.html

你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:

1、首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。

2、阅读项目的文档,重点关注类似Getting started、Example之类的文档,从中学习如何下载、安装、甚至基本使用该项目所需要的知识。

3、如果该项目有提供现成的example工程,首先尝试按照开始文档的介绍运行example,如果运行顺利,那么恭喜你顺利开了个好头;如果遇到问题,首先尝试在项目的FAQ等文档里查找答案,再次,可以将问题(例如异常信息)当成关键词去搜索,查找相关的解决办法,你遇到了,别人一般也会遇到,热心的朋友会记录下解决的过程;最后,可以将问题提交到项目的邮件列表,请大家帮你看看。在没有成功运行example之前,不要尝试修改example。

4、运行了第一个example之后,尝试根据你的理解和需要修改example,测试高级功能等。

5、在了解基本使用后,需要开始深入的了解该项目。例如项目的配置管理、高级功能以及最佳实践。通常一个运作良好的项目会提供一份从浅到深的用户指南,你并不需要从头到尾阅读这份指南,根据时间和兴趣,特别是你自己任务的需要,重点阅读部分章节并做笔记(推荐evernote)。

6、如果时间允许,尝试从源码构建该项目。通常开源项目都会提供一份构建指南,指导你如何搭建一个用于开发、调试和构建的环境。尝试构建一个版本。

7、如果时间允许并且有兴趣,可以尝试阅读源码:

(1)阅读源码之前,查看该项目是否提供架构和设计文档,阅读这些文档可以了解该项目的大体设计和结构,读源码的时候不会无从下手。

(2)阅读源码之前,一定要能构建并运行该项目,有个直观感受。

(3)阅读源码的第一步是抓主干,尝试理清一次正常运行的代码调用路径,这可以通过debug来观察运行时的变量和行为。修改源码加入日志和打印可以帮助你更好的理解源码。

(4)适当画图来帮助你理解源码,在理清主干后,可以将整个流程画成一张流程图或者标准的UML图,帮助记忆和下一步的阅读。

(5)挑选感兴趣的“枝干”代码来阅读,比如你对网络通讯感兴趣,就阅读网络层的代码,深入到实现细节,如它用了什么库,采用了什么设计模式,为什么这样做等。如果可以,debug细节代码。

(6)阅读源码的时候,重视单元测试,尝试去运行单元测试,基本上一个好的单元测试会将该代码的功能和边界描述清楚。

(7)在熟悉源码后,发现有可以改进的地方,有精力、有意愿可以向该项目的开发者提出改进的意见或者issue,甚至帮他修复和实现,参与该项目的发展。

8、通常在阅读文档和源码之后,你能对该项目有比较深入的了解了,但是该项目所在领域,你可能还想搜索相关的项目和资料,看看有没有其他的更好的项目或者解决方案。在广度和深度之间权衡。

以上是我个人的一些习惯,我自己也并没有完全按照这个来,但是按照这个顺序,基本上能让你比较高效地学习和使用某个开源项目。

时间: 2024-10-23 13:49:50

如何熟悉一个开源项目?的相关文章

www808888webcom基金的一个开源项目19908836661也是apache基金的一个开源

Flume也是apache基金的一个开源项目,由cloudera公司开发的一款分布式.高可靠.高可用的日志传输工具.其以agent为一个单位,agent由source.channel和sink构成.一个agent最少由一个source.channel和sink构成,数量可以自由组合 Source主要用来收集源数据,并对源数据进行反序列化.Source在读取数据文件时,会遍历日志文件中的每一行,并把这一行封装在一个event当中,一个event包含一个header和一个body,header是一个

如何参与一个开源项目!

1.首先在github上注册一个自己的账号 2.然后在左上部分搜索一个开源项目,比如说我的项目syj-ratelimit 3.进入项目之后,单击右上角的fork按钮,github就会在你的帐户下fork一个同样的项目. 4.此时点击右上角自己的头像,可以看到一个your repositories,点击进入就可以看到刚才的那个项目了 5.现在你就可以在这个项目里取发挥你的个人才智进行修改bug.开发新功能等各种方式的贡献了 6.当你贡献完毕后就可以把你的贡献推荐给这个项目的开发者了.再次打开git

给各位聚聚和大大介绍一个开源项目 Expression2Sql

一.Expression2Sql介绍 Expression2Sql是一个可以将Expression表达式树解析成Transact-SQL的开源项目.简单易用,几分钟即可上手使用,因为博主在设计Expression2Sql的时候就尽可能的按照Transact-SQL的语法语义风格来设计,只要调用者熟悉基本的Transact-SQL语法即可迅速开码,大大降低了学习Expression2Sql的成本,甚至零成本.对象化操作,链式编程,任意组装sql,自动生成表别名,参数化赋值,防止sql注入,支持多数

一个开源项目中用到的bash shell脚本

请看系统鸟瞰图: 因为笔者所在的地方并无可用的宽带和Wifi,所以暂且只能采用上图中的联网方法,使用ssh走手机GPRS流量的方法进行远程操作云风典藏官网的服务器,以完成所有任务.  关于云风典藏的更多信息,请看文章<四个月的隐居和一个新的开源项目——云风典藏>. 第一步:SSH安全设置  服务器现在由我们全部负责,远程登录的安全为重中之重.  1.创建一普通用户,以后只使用此用户来远程登录系统:  2.修改root密码:  3.修改sshd的配置: 1 #vim sshd_config fi

怎样在Github参与一个开源项目

转载:http://www.csdn.net/article/2014-04-14/2819293-Contributing-to-Open-Source-on-GitHub 最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能说你开源了

正式推荐我的一个开源项目2-自定义编译器

在项目里面有时有这样的场景,我们需要一个权限表来控制权限,当满足权限表条件时,阻止用户操作并返回错误信息,表的结构类似: 这时有一种传统方式是,我们用mybatis之类的工具,写一段sql,每次用这段sql校验权限: SELECT * from permission_test where `condition1` = #{condition1} and `condition2` = #{condition2} 另外一种方式是,我们将table编译为一段可执行代码,然后每次执行这段代码,这段代码类

IO Visor:又一个开源项目横空出世

日前,Linux组织宣布成立开源项目IO Visor,该项目主要针对Linux内核的输入/输出请求任务.这个项目听上去似乎很深奥,事实上该项目与网络有很大的相关性.IO Visor无需借助网络硬件就可以创建整个网络的拓扑. 在实际应用场景中,IO Visor通过增加Linux内核中运行的元件数量可以有效地提高虚拟交换机等网络元件的性能.在去年VMware主办的 Open vSwitch大会上就讨论过这个问题,当时围绕"将一些数据包处理移出Linux内核是否会更好?"展开讨论. 创建IO

一个开源项目的想法

最近因为受到工作上的启发,还有Konrad先生的框架的启发,想要自己动手写一个javascript的框架. 现在设想的框架是mvc模型,纯javascript,加上一些预定义css界面元素.面向Cordova端移动应用开发. 名字叫XJ框架 计划: 现在这里建立一个开源代码库 有空就进行初步架构的开发 稳定代码

拥抱开源——Linux C/C++程序猿必须熟悉的开源项目

作为一个经验丰富的Linux C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类. 封装过UI界面库等. 也在实际的项目中应用过, 可是回过头细致想想.事实上曾经自己写过的这些代码,仅仅能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 仅仅须要复制代码, 改改也就能够了, 由于自己写的代码自己非常熟悉. 问题是, 你封装的这些库, 在给别人使用的时候, 别人用起来是否非常方便. 跨