【大牛体验】HBase committer谈如何参与到开源项目的开发

先自我介绍一下,我是西七楼公众号创始人的大学ACM队友,现就职于小米云平台计算组.
自2012年参与到Hadoop相关开源项目的开发以来,主要参与过的项目包括HBase,Spark,Hadoop HDFS,Hadoop YARN和Zookeeper等等。在HBase社区,我总计贡献了大约60+补丁,并在2015年初成为HBase社区的committer。
基于Hadoop生态圈,我们搭建了小米内部的大数据平台,为业务部门提供了功能完善和高可用的分布式存储和计算服务。
今天主要和大家分享一下我们为什么参与开源项目开发,如何参与开源项目开发,以及企业使用开源项目的一些基本原则。
1 为什么参与?
鼓励工程师参与开源项目的开发,对企业、个人和开源社区是三方共赢的。
首先对企业而言,基于现有的开源项目做二次开发,不仅可以站在巨人的肩膀上,省去从零开发的人力成本,还可大大缩短开发周期,帮助产品快速上线。另外,成功的案例也可提高企业在开源社区的影响力,打造技术品牌,并吸引更多优秀人才的加入。
其次对个人而言,好的开源项目是全世界优秀工程师的智慧结晶,是非常好的学习和成长的机会。从好的开源项目中,我们不仅能学到优秀的架构设计,也能学到一些精妙优美的代码实现,这是我们提升技术水平的捷径。然后,使用开源系统、参与社区开发、贡献patch、参加技术会议等,除了能锻炼沟通和表达等软实力以外,还能塑造个人技术品牌。
对开源社区而言,很多开源项目,尤其是大数据相关的项目,缺乏真是的场景和案例,不能在细节上做的特别完善。企业的参与不仅能发现系统在实际应用中的问题,并促进开源项目的不断完善,还能发现新的需求,为项目发展提供方向。企业的成功案例也是对开源项目的检验,是在为开源项目背书,吸引更多企业和人才参与,扩大开源项目的影响力。
2 如何参与?
企业参与开源项目的出发点是为了解决业务的需求,最终与开源社区达成共赢,因此参与开源项目是从业务出发的一个循序渐进的过程。
调研阶段
首先,从实际需求出发,调研相关的开源项目。熟悉项目的整体架构和文档,搭建测试环境,运行功能和性能测试,验证该项目是否满足实际需求,以及是否达到其鼓吹的性能,特别是在极端场景下的数据一致性和安全性。
其次,从代码层面熟悉开源项目,从基本的数据流和控制流,到代码细节。如有任何疑问,可以向社区反馈,开源社区几乎都比较开放和热情,能积极响应用户的问题。
实际使用
如果调研没有问题,就可以开始在实际的业务场景下推广和使用。一般可以先部署在非核心业务上,待系统稳定且对系统的掌握力提升之后,再逐步扩展到核心业务上。在这个过程中,很少有一帆风顺的,会遇到各种bug,或系统不能完全满足业务需求。
这时候,需要认真分析问题,思考可能的解决办法,也可以求助于社区。对于系统bug,可以尝试修复,在测试和验证通过之后将修改反馈回社区。对于新的需求,可以积极和社区讨论,看是否可以转化为一个通用需求,并和社区一起实现。
在初期,发现的问题和提出的需求可能比较初级,如文档问题、配置问题、或是一些实现细节;随着使用深入,就会涉及到一些大的模块、核心架构、或者通信协议等等,逐步参与到系统核心的开发。所以,刚参与开源社区开发的同学要保持耐心。在真实使用场景中,总是可以发现很多系统原有的问题和新的需求,我们以这些问题和需求为出发点,积极参与社区的开发。
深度参与
在实际应用基础上,参与项目核心模块、特别是广为人知的疑难问题的开发,并贡献给社区。加入社区讨论,特别是在项目的发展方向和优先级上,贡献自己的想法和建议,让开源项目发展的更好。参加和组织开源项目聚会,分享自己的使用经验,吸引更多人参与。
3 使用开源系统的原则
明确使用场景
每个开源系统都不是万能的,都有要解决的目标问题和明确的使用场景,并对相应的使用场景做了优化。这就需要在系统调研阶段,搞清楚开源系统的内部原理,和业务需求做好匹配。如果把将一些需求放在不合适的开源系统上,结果往往适得其反。
明确责任
在使用开源系统的时候,如果开源系统出了问题,导致业务受损,首要责任是企业内开源项目的开发和维护者。 因此,对使用和维护开源系统,要有强烈的责任感和使命感,把握和熟悉系统的每个细节。
掌控力
企业核心业务,使用或者依赖开源系统,需要从源代码级别对开源项目有掌控能力,最好有专门负责开发和维护的团队,或者购买相应的服务。做到即使系统遇到一些非常棘手的问题,也可以从代码层去定位和解决。比较忌讳的是,对开源系统没有掌控力的情况下,盲目的在核心业务中使用开源系统,这样很容易导致业务被系统bug所伤害。
构建生态圈
围绕开源系统,搭建完善的开发、测试、部署、监控、报警和运营等流程和系统,构建完整的体系,保证服务品质。
以上就是我参与开源项目开发的一些想法和经验,欢迎对Hadoop生态圈等开源项目感兴趣的读者与我交流。

【大牛体验】HBase committer谈如何参与到开源项目的开发_第1张图片

长按二维码,关注公众号!
【大牛体验】HBase committer谈如何参与到开源项目的开发_第2张图片

你可能感兴趣的:(【大牛体验】HBase committer谈如何参与到开源项目的开发)