HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

专访偶数科技常雷:从商业走向开源,Apache HAWQ 适应得很好

  • 2019-06-18
  • 本文字数:3957 字

    阅读完需:约 13 分钟

专访偶数科技常雷:从商业走向开源,Apache HAWQ 适应得很好

根据 GitHub Octoverse 报告中的数据显示:2018 年 Github 上的代码仓库已达到 1 亿个。毫无疑问,开源迎来了它的高光时刻,但是如何开源和维护一个项目,对于国内大多数开发者来说还是一个黑盒。为了帮助大家更好的维护开源项目,所以,我们采访了一些开源项目的团队,请他们分享一下开源经验。


上一篇文章我们讲了 Apache Kylin 的开源故事,这篇文章我们来讲讲 Apache HAWQ。如果单从名字来看,相信很多人都发现了这两个项目的关联,那就是它们都是从 Apache 基金会毕业的顶级项目。既然是“同门师兄弟”,那么为什么我们写了 Apache Kylin,还要写 Apache HAWQ 呢?


这可能要从这两个项目开源之前的故事讲起。


Apache Kylin 是从 eBay 内部孵化出的开源项目,整个开源过程也比较简单,在 eBay 内部生产环境中上线的同时,就在 GitHub 开源出来,随后加入到了 Apache 基金会。相比之下,Apache HAWQ 的开源过程就比较复杂,颇具故事性。


HAWQ 的想法提出是在 2008 年左右,当时数据领域出现了两大流派,一个流派是经典的数据库领域出现的 MPP 架构,另一个流派是姑且称之为 Hadoop 派系,当时在互联网公司做数据管理技术的人们做了一些 Hadoop、MapReduce 的早期工作。


这两大技术流派各有优缺点,Hadoop 的缺点是很慢,但支持的节点规模要大一些。而 MPP 架构就比较快,兼容性也比较好,可以兼容老的数据库,比如 Oracle、Teredata。但它的节点规模只能支持到几百个节点,数千个节点就有点困难了。


而 Apache HAWQ 做的就是扬长避短,把存储构建在分布式文件系统 HDFS 之上,实现存储和计算的分离,不仅解决了 Hadoop 的性能问题,同时也解决了 MPP 架构的可扩展性瓶颈。


2010 年对于 HAWQ 来说是关键的一年,这一年发生的收购事件给予了 HAWQ 新的“生命”。


2010 年,EMC 收购了 Greenplum,两家公司的创始人决心要在中国建立一个研究中心。当时,常雷作为 HAWQ 的创始人向两位创始人演示了早期 DEMO,演示结束后,两位创始人表示“这太像是我们想要的下一代 Greenplum 了!”于是,常雷便加入到 Greenplum,把 HAWQ 从 IDEA 落地到产品化。


在产品化阶段,HAWQ 完成了从 1.0 Alpha 版本到 Beta 版本再到 GA 版本的演进。在 Alpha 版本时,HAWQ 团队找了当时拥有全球最大数据仓库的零售业巨头沃尔玛来做测试,当时沃尔玛的数据量已经达到 PB 级。除了沃尔玛,HAWQ 在全球已经有了很多大的企业用户,例如纽交所、GE、宝马、福特。


2013 年,一家新公司的成立促进了 HAWQ 的开源。


这一年,EMC 宣布成立一家全新的子公司——Pivotal,专门来做数据和 PaaS。这家公司做了一个雄心勃勃的决定就是“把所有的产品都开源”。2015 年初,Pivotal 把 HAWQ 的核心代码和知识产品(IP)捐赠给了 Apache 基金会。


2018 年 8 月 15 日,历经近三年的孵化,Apache HAWQ 正式毕业并成为 Apache 顶级项目。


InfoQ:基于什么样的原因,HAWQ 选择在 Apache 基金会开源?进入 Apache 基金会前后,Apache HAWQ 主要经历了哪些变化?


常雷:其实我们选择把 HAWQ 捐赠给 Apache 基金会并不是一时头脑发热,而是经过慎重考虑的。


首先,Apache 是一个非常出名的技术社区,对于整个技术品牌会有很好的宣传作用;其次,Apache License 很开放,给予了最终用户很多权限;第三,当时几乎所有大数据领域有名的项目都在 Apache 基金会,加入基金会更便于我们构建生态。


进入 Apache 基金会后,Apache HAWQ 主要经历了以下的变化:


在进入基金会孵化之前,为了满足 Apache Licence,我们做了大量的工作。从 Licence 角度来看,我们早期使用了一些和 Apache Licence 不兼容的组件,这在企业版中是完全没有问题的,但是如果我们要开源,那么就可能会出现问题。因为在 Apache 开源的项目必须完全遵循 Apache License,使用的开源组件也不例外。所以,在开源之前很重要的一点,同时也是我们花了很多精力在做的工作是重新梳理了 HAWQ 中所有的东西,确认哪些组件和技术是需要做出改变的。


还有一点就是工作方式的转变,Apache 有自己的工作方式——Apache Way,其中包括了如何达成一致意见,如何做 Release,如何吸收 Committer、如何扩大市场影响力等等内容。类似于从商业转向开源的项目,可能之前它们在公司中有一套比较完善的自身体系,但是进入 Apache 基金会之后,则需要适应整个社区的规则,我们早期的几个 Release 基本也都是在适应 Apache Way。


InfoQ:对于开源项目来说,贡献者招募都是很重要的事情,我们有哪些好的方法来招募贡献者吗?


常雷:招募贡献者最好的方法就是有大量的用户,这样才会吸引大量的贡献者。当然,项目自身也要具备“硬核”实力,即技术领先性,要真的能够解决业界痛点。


在这两点的基础上,再辅以一定的市场活动,例如 Meetup。HAWQ 现在每月都会搞一场线下见面会,邀请一些国内的技术大咖、HAWQ 的粉丝和用户到现场分享,会议是纯交流性质,大家可以随时提问和讨论。


另外,在早期招募贡献者时,基金会也会发挥很大的作用。在项目开源的早期阶段,社区的宣传和运营是顶重要的,同时对于项目和社区来时是个双向良性互动的过程,社区是培养起来的,好的项目和产品对社区发展颇有助益,而借助社区的力量,开源项目也能在短时间内汇聚更多的关注人群。


InfoQ:开发者如何才能参与到开源项目的贡献中?


常雷:很多人对于开源项目的贡献可能有所误解,认为只有提交了代码才算是对开源项目有所贡献。但其实,改 Bug 是贡献,发现 Bug 也是贡献。


接下来,我为大家简单介绍几种为开源项目做贡献的方式:


第一,提问,这是一种比较容易的贡献方式,可以帮助做产品改进,帮助完善文档,一般贡献者可以在邮件列表里面进行发问。


第二,提出 Bug。如果你在开源项目的使用过程中,碰到了 Bug,那么可以在相关系统(HAWQ 是在 JIRA 系统)中描述 Bug 出现的场景,之后开发者会就该 Bug 展开讨论;


第三,修复 Bug。有些贡献者会修复用户提出的 Bug,并在 Github 上提交一个代码 pull request 供 Committer 审阅,如果有超过两个 Committer 同意,并且建议经过了充分的讨论且得到了结论,那么该代码就可以正式合并到主分支了。


第四,做一个功能。如果对于该开源项目很熟悉的贡献者可以尝试设计一个功能。功能设计往往需要在邮件列表里或者 JIRA 里进行充分的讨论。代码提交的流程和 Bug 修复代码提交流程一样。


第五,帮助组织 Meetup。有些开源项目会定期举办 Meetup,所以热心的贡献者可以积极参加到 Meetup 的组织中,例如 Meetup 选题设置、市场宣传等等。


InfoQ:很多人吐槽有些开源项目的文档不完全不规范,那么一个开源项目到底应该有哪些文档?


常雷:一个开源项目其实应该包括各种各样的文档。例如项目介绍文档、用户手册、管理手册、编程指南和功能详细参考等。


  • 项目介绍文档主要是表明该项目能给客户带来的价值是什么?与其它产品相比,优势是什么?

  • 用户手册,一般是从最终用户角度来看如何使用这个产品。

  • 管理手册,一般是从运维人员的角度来思考问题,例如介绍如何安装部署、升级、调优、扩容等。

  • 编程指南主要是指导程序员如何在自己的程序中调用产品的功能。

  • 功能详细参考主要是包含一些 API 等的详细说明。


InfoQ:Apache HAWQ 的开发者之间是如何进行交流的?


常雷:Apache 基金会有官方的交流方式,即邮件列表,基金会的所有开源项目都必须使用这一方式进行交流,HAWQ 也不例外。但是考虑到中国的环境,我们也尝试了本土化的沟通方式,例如微信群、QQ 群。有些团队可能认为在微信群中处理问题是一种比较低效的方式,但不可否认的是微信群这种方式更适合中国开发者。对此,我们的做法是安排 Committer 定期去微信群中整理大家的问题,然后翻译成英文放到邮件列表或者 JIRA 中。另外,我们也在思考是否要建个中文的邮件列表,让更多的中国技术人参与进来。


InfoQ:开源项目的管理者和贡献者扮演着什么角色?需要具备哪些能力?


常雷:开源项目的管理者不是一个“独裁者”,更多的时候是一个协调者。参与开源项目的开发者有很多,管理者需要组织所有开发者展开讨论,达成一致意见,并把项目带领到正确的方向上。


作为开源的贡献者有几个方面的能力是一定要提升的。第一肯定是技术能力,只有技术能力足够强才能成为一个开源项目的 Committer。大型的开源项目,尤其是像数据库、中间件这种底层项目,需要对代码有很深厚的理解,技术功底强是对 Committer 最基本的要求。第二是合作能力。与个人项目不同,在开源社区中共同开发项目最关键的就是合作,所以社交与合作能力也是 Committer 需要具备的能力。


InfoQ:您如何评价目前国内的开源现状?


常雷:国内的开源还是刚刚起步,其实远没有想象中那么繁荣,很多出名的项目基本都是从国外引进来的。不过,国内现在已经有了一个比较好的开源苗头和早期市场,之前,我们去参加一个中日韩三国的开源活动,明显感觉到国内开源虽然比不上美国,但还是要比日本、韩国等其它一些国家要先进很多。


国内开源的发展其实和人民的富裕程度有很大关系,只有当大家有了基本的物质财富之后,才能有更多的时间和精力来做开源。欧美有很多自由职业者专门来为开源项目来做贡献,但是国内很少有专职做开源项目的,不过这是个发展阶段的问题,迈过这个阶段,未来会越来越好的。

写在最后:

很早以前,人们一提到“商业”和“开源”,就认为这是两个对立的状态。但现在,开源和商业有了更多的交集,例如大家都比较熟悉的两种模式,支持开源项目的商业公司和商业运作的开源项目。在商业的加持下,开源项目也变得越来越规范、广阔。


而 Apache HAWQ 就是一个从商业项目转向开源项目的典型案例,与其它开源项目苦苦寻找商业路径不同,这种类型开源项目的天然优势就是它们的商业模式已经相对成熟,原始用户也有一定的积累。在和常雷的交流中,我发现它们面临的开源难点是如何从原有的公司体系转变成 Apache Way,如何管理整个开源社区。


2019-06-18 10:426501
用户头像

发布了 497 篇内容, 共 322.8 次阅读, 收获喜欢 1920 次。

关注

评论

发布
暂无评论
发现更多内容

JAVA concurrency -- ReentrantLock 源码详解

骑牛上青山

Java 源码

数据中台选型必读(五):中台建设本质就是构建企业的公共数据层

雨果

数据中台

[力扣] 剑指 Offer 第三天 - 替换空格

陈明勇

Go 数据结构与算法 力扣 11月月更

JAVA concurrency -- ThreadLocal 源码详解

骑牛上青山

Java 源码

助力车路云一体化,EMQ在车路协同领域的应用实践

EMQ映云科技

物联网 IoT emq 11月月更 车路协同

Redis LRU 内存淘汰算法大有玄机

码哥字节

LRU Redis 6.0

jvm(二)内存管理与虚拟机执行子系统

想要飞的猪

java对象内存布局 jvm加载子系统

基于 MQ 的分布式 Serverless 多租任务处理系统架构演进

Apache RocketMQ

消息队列 异步调度 #Serverless 任务

脑机直播 x 赛博驱魔!瑞云专访揭秘胶囊计划国风科幻神作《终极体验》制作幕后...

Renderbus瑞云渲染农场

3D动画 动画制作 瑞云专访

这家公司的码农有多牛,用C++重写Kafka,还能与其API兼容

雨果

Kafk

用户体验成为继MAU后,手机银行竞争分化的下一分水岭,易观千帆重磅发布手机银行APP用户体验GX评测

易观分析

App 手机银行

重塑感知,荣耀金洋!金洋奖两项用户体验奖项公布

易观分析

App 手机银行

OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略

阿里巴巴云原生

阿里云 开源 云原生 openyurt

数字化开采|AIRIOT智慧矿山自动化生产解决方案

AIRIOT

低代码 物联网 智慧矿山

数据中台选型必读(四):要想中台建的好,数据模型得做好

雨果

数据中台

国企数字化转型全是坑?看这几个成功案例,减少90%损失

雨果

数字化转型

一次zuul版本升级产生的问题排查记录

骑牛上青山

Java spring 源码 Zuul 生产环境

分布式系统中的哈希算法

骑牛上青山

数据结构 分布式 算法 哈希

2022年互联网主要技术方向招聘需求变化:人工智能岗位需求增加87.7%;SQL在就业语言需求中位列第一

雨果

sql

图文实录|UIE:基于统一结构生成的通用信息抽取

澜舟孟子开源社区

HIFIVE音加加:多场景音乐版权解决方案,让「用音乐」更便捷

HIFIVE音加加

版权保护 视频后期 数字版权保护

JAVA concurrency -- CyclicBarrier 与 CountDownLatch 源码详解

骑牛上青山

Java 源码

使用gitflow时如何合并hotfix

Geek_pwdeic

什么是“数字孪生”?有什么价值?

雨果

数字孪生

一场算力集结令,国产芯片如何开启冲刺跑?

脑极体

JAVA concurrency -- ArrayBlockingQueue源码详解

骑牛上青山

Java 源码

L1、L2范数理解--Ridge以及Lasso回归

Studying_swz

深度学习 11月月更

20个值得收藏的实用JavaScript技巧

千锋IT教育

爬虫基本原理介绍、实现以及问题解决

石臻臻的杂货铺

爬虫

OSPF路由协议一

初学者

11月月更

通过阅读源码解决项目难题:GToken替换JWT实现SSO单点登录

王中阳Go

Go golang 高效工作 学习方法 11月月更

专访偶数科技常雷:从商业走向开源,Apache HAWQ 适应得很好_文化 & 方法_田晓旭_InfoQ精选文章