在上一届OpenStack Summit报道中,我们有提过,OpenStack已得到IBM、HP、RedHat等公司的鼎力支持,而截至2013年底,
在短短不到4年的时间,其社区已遍及全球132个国家,13504人参与,开发者人数更接近6000人,298家的支持场上和机构,拥有8个白金会员、19个黄金会员、54个赞助公司、217个支持机构,北京更成为OpenStack开发者最多的城市。
毫无疑问,在得到了广泛的支持后,OpenStack在飞快的成熟。然而,作为1个内容丰富、涉及众多技术的开源IaaS平台,就像【CSDN在线培训】第三期中张小斌的分享:
开源技术的学习和采用确实存在着一定门槛,然而坐拥宝山绝无空手而归的道理,这里我们为大家分享 张宇的技术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) 英语
很遗憾,目前为止真正流行的开源项目大部分不是起源于国内。因此,除了学习个别极其流行、文档完备的项目之外,大家还是需要自行搜集阅读英文资料参考。学好英语很重要。
当然,到底需要准备多少知识基础,完全取决于学习的目的和层次。如果只是想科普一下,也就不必太过麻烦了。
|