设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

章宇:如何学习开源项目及Ceph的浅析

2014-4-11 12:10| 发布者: joejoe0332| 查看: 8991| 评论: 0|原作者: 章宇|来自: csdn

摘要: 开源技术的学习和采用确实存在着一定门槛,然而坐拥宝山绝无空手而归的道理,这里我们为大家分享 张宇的技术Blog ,从开源项目学习到Ceph浅析。
  在上一届OpenStack Summit报道中,我们有提过,OpenStack已得到IBM、HP、RedHat等公司的鼎力支持,而截至2013年底, 在短短不到4年的时间,其社区已遍及全球132个国家,13504人参与,开发者人数更接近6000人,298家的支持场上和机构,拥有8个白金会员、19个黄金会员、54个赞助公司、217个支持机构,北京更成为OpenStack开发者最多的城市。


  毫无疑问,在得到了广泛的支持后,OpenStack在飞快的成熟。然而,作为1个内容丰富、涉及众多技术的开源IaaS平台,就像【CSDN在线培训】第三期中张小斌的分享:

开源并不意味着免费,丰富的插件并不一定最优。

OpenStack看似给我们提供了非常多的选项,但是如此多的选项往往让企业眼花缭乱。

人人DIY固然可以集思广益,但却无法避免踩入陷阱。不深入了解,总会有意想不到的惊喜,如网络不通,系统崩溃,性能低下,需求如何满足等。


  开源技术的学习和采用确实存在着一定门槛,然而坐拥宝山绝无空手而归的道理,这里我们为大家分享 张宇的技术Blog ,从开源项目学习到Ceph浅析。


博主资料:章宇于2002年及2007年分别于清华大学电子工程系获得学士及 博士学位,其后一直从事计算机系统领域的研究与开发工作,目前供职于华为技术有限公司云操作系统部门,从事OpenStack相关工作。出于工作原因和个 人兴趣,作者陆续关注了一些开源项目,主要包括:KVM/QEMU,libvirt,virt-mamager,OpenStack,Open vSwitch,Ceph,Zabbix等。


开源项目学习方法


  学习各种开源项目,已经成为很多朋友不可回避的工作内容了。笔者本人也是如此。在接触并学习了若干个开源项目之后,笔者试图对自己工作过程中的若干体会加以总结,以期对一些希望借鉴的朋友有所裨益。


  需要说明的是,笔者本人接触的开源项目大多属于计算机系统领域,例如Linux kernel,KVM,QEMU,OpenStack等。因此,此处介绍的经验必定也有些局限。请读者们自行分辨,区别对待。


1. 学习分层和目标管理

  对于一个开源项目,可以将与之相关的各种知识和技能的学习大致划分为如下五个层次:

第一层次:了解项目的基本概念、基本用途、逻辑结构、基本原理、产生背景、应用场景等基本知识。

  这个层次的基本定位其实就是“科普”。如果对于一个项目只需要有些基本了解,且短期内并不需要上手进行实际技术工作,则学习到这个层次也就可以先应付一下了。

第二层次:掌握项目的基本安装流程和使用方法。

  这个层次的基本定位是“入门”,以便对这个项目获得直观认识,对其安装和使用获得亲身体验。如果只是需要以as-is方式使用这个项目,则初步学习到这个层次即可。

第三层次:了解代码的组织,找到各个主要逻辑/功能模块与代码文件之间的对应关系,通过代码分析走通几个关键的、有代表性的执行流程。

  这个层次的基本定位是“深入”,开始理解这个项目的实际实现,能够真正将项目的功能、工作原理和代码实现对应起来,获得对这个项目工作过程的直观认 识。这个层次是学习开源项目代码的真正开始。如果希望基于这一项目进行应用开发,或者针对与这一项目密切相关的其他项目进行工作时,则对项目本身的代码进 行这一层次的理解,会很有帮助。

第四层次:了解该项目所有代码模块、程序文件的作用,走通所有主要执行流程。

  这个层次的基本定位是“掌握”,能够比较全面、系统地理解这个项目的设计和实现,并且熟悉项目各个部分的代码。如果希望对项目进行深度定制修改,或者对社区有所贡献,则应当以达到这个层次作为目标。

第五层次:钻研、领悟该项目的各种设计思想与代码实现细节。

  这个层次的基本定位是“精通”,精益求精,学无止境。这是大神们追求的境界。如果希望成为项目社区的重要贡献者乃至核心贡献者,则应当以这个层次作为努力的目标。

  综上,对于一个开源项目的学习过程可以大致分为五个层次。至于到底要学习到什么阶段,投入多少相关精力,则完全取决于学习的目的。


2. 知识基础

  学习一个开源项目需要的知识基础主要包括:

1)该项目涉及的技术领域的背景知识

举例而言,分析Linux Kenrel,则应该了解操作系统原理;学习OpenStack,则应该知道什么是云计算。如果没有这些背景知识作为基础,上来就死磕源代码,只能是事倍功半。

2) 该项目开发使用的语言及其各种开发调试工具

这个就无需多言了。

3) 英语

很遗憾,目前为止真正流行的开源项目大部分不是起源于国内。因此,除了学习个别极其流行、文档完备的项目之外,大家还是需要自行搜集阅读英文资料参考。学好英语很重要。

当然,到底需要准备多少知识基础,完全取决于学习的目的和层次。如果只是想科普一下,也就不必太过麻烦了。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部