如何熟悉一个开源项目?

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

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

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

作者:佚名

来源:51CTO

时间: 2024-10-30 12:01:10

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

如何快速学习一个开源项目源码?

你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西.怎么下手呢?如何开始呢?我的习惯是这样: 1.首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的.功能.基本使用有个大概的了解. 2.阅读项目的文档,重点关注类似Getting started.Example之类的文档,从中学习如何下载.安装.甚至基本使用该项目所需要的知识. 3.如果该项目有提供现成的example工程,首先尝试按照开始文档的介绍运行exa

如何加入一个开源项目?

原文地址:http://haineault.com/blog/120/                 如何加入一个开源项目? 这不是一篇权威的指南,只是一些你需要遵循的基本规则,这些规则可以让你对开源项目的贡献使得你和项目维护者都感到愉快! 为什么加入一个开源项目? 首先,有很多加入开源项目的动机.排在第一的可能是"酷":)当你告诉你的朋友"嘿,我在XYZ项目开发团队! 我很潮吧?" 但是这并不是一个很好的原因.加入一个开源项目的首先需求是你需要使用它.如果你自己

spring-怎么去看一个开源项目的源码?

问题描述 怎么去看一个开源项目的源码? 看了 两天Spring 的源码,从最基本的配置文件加载,DEBUG跟踪,然后获取bean实例,但是看了 两天完全没有头绪,求指点一二 解决方案 我的习惯是,先用起来,然后针对用到的对象逐步深入 解决方案二: 开源项目,源码

一个开源项目维护者的笔记 — 为什么我关闭 PRs

我在 GitHub 上和其他地方维护着许多的开源项目(截止本文写作时超过 160 个).在过去几年里,我已经合并 以及/或者 关闭了上千个 Pull Requests (PRs) 和补丁,现在想在这里总结一下我不合并许多 PRs 的原因. 我的几个项目都有协同维护者,但是大多数只有我一个人维护.因此巴士系数是很低的,但我通过授予非常开放的许可证和鼓励 fork 来抵消.我还花了一定的时间(平均为 5-10 小时/周)对我的 OSS 项目进行维护,并且有约 1000 美元/年的个人预算,用于支持项

做一个优秀的开源项目,需要注意哪些方面?

摘要 如果你想发布一个开源库,请确保它有以下特点: 清晰的依赖性和安装说明 至少有一个简要的文档指南 修改日志和仓库中的标签 关于支持的语言.运行时.工具版本的信息和项目的成熟度 一个可以让用户提问和交流的邮件列表 缺少任何一项都会造成一些用户的愤怒和沮丧,当然同时也浪费了时间. 怎样让你的开源项目更棒 每年,越来越多的人发布了自己开发的库并且它们开源.这里我们分享一些我们经验,以便你的用户对你的库满意. 这里有一个经验法则: 不要让你的用户生气! 也可以理解为: 不要让你的用户有想要砸电脑的冲

TensorFlow: 如何支持一个成功的开源项目

Google TensorFlow移动项目负责人Pete Warden写到,围绕一个开源项目来创建一个社区需要一系列活动,涉及到支持.pull requests handling.许可使用和更多其他的东西. Warden解释到,新项目在初始阶段的一个大挑战就是为使用者们提供支持.最开始,开发人员们是唯一的专家,他们得想办法把自己的日常工作与其他支持任务相结合.这项工作并不简单,因为它可能将开发人员们带出自己的舒适区,很可能让他们无法专心完成主要任务.TensorFlow团队采用软件工程师轮流的方

使用开源项目的正确姿势,都是血和泪的总结!

软件开发领域有一个流行的原则:DRY,Don't repeat yourself,我们翻译过来更形象通俗:不要重复造轮子.开源项目主要目的是共享,其实就是为了让大家不要重复造轮子,尤其是在互联网这样一个快速发展的领域,速度就是生命,引入开源项目,可以节省大量的人力和时间,大大加快业务的发展速度,何乐而不为呢?   然而现实往往没有那么美好,开源项目虽然节省了大量的人力和时间,但带来的问题也不少,相信绝大部分同学都踩过开源软件的坑,小的影响可能是宕机半小时,大的问题可能是丢失几十万数据,甚至灾难性

[转]开源项目学习方法ABC

学习各种开源项目,已经成为很多朋友不可回避的工作内容了.笔者本人也是如此.在接触并学习了若干个开源项目之后,笔者试图对自己工作过程中的若干体会加以总结,以期对一些希望借鉴的朋友有所裨益.         需要说明的是,笔者本人接触的开源项目大多属于计算机系统领域,例如Linux kernel,KVM,QEMU,OpenStack等.因此,此处介绍的经验必定也有些局限.请读者们自行分辨,区别对待. 1. 学习分层和目标管理         对于一个开源项目,可以将与之相关的各种知识和技能的学习大致

技术流|使用开源项目的正确姿势:如果没有你要的轮子,那就重新造吧!

软件开发领域有一个流行的原则:DRY,Don't  repeat  yourself.   我们翻译过来更形象通俗:不要重复造轮子.   开源项目主要目的是共享,其实就是为了让大家不要重复造轮子,尤其是在互联网这样一个快速发展的领域,速度就是生命,引入开源项目,可以节省大量的人力和时间,大大加快业务的发展速度,何乐而不为呢?   然而现实往往没有那么美好,开源项目虽然节省了大量的人力和时间,但带来的问题也不少,相信绝大部分同学都踩过开源软件的坑,小的影响可能是宕机半小时,大的问题可能是丢失几十万