如何评价小米团队拥有4个hbase committer?

关注者
495
被浏览
87366

15 个回答

在小米干了快一年并刚被HBase社区邀请成为HBase Committer,所以想把对这个话题之前想说但没好意思说的想法说一下。然后再写篇博客更系统的说说完整想法:)

目前国内一共10个committer。4个在小米,4个在阿里,一个是小米前员工离职创业去了,一个在英特尔。

小米历史上的5个committer,四个是在小米当选的,一个是在豌豆荚当committer后过来的 @张铎 并且今年还成为国内第一个HBase PMC member。

阿里的话有国内第一个committer,有一个今年年初当选的,一个从猿题库跳过去的,一个在我之前一周刚当选的。所以实际上阿里在HBase这块做的也是不错的,大家不要太黑阿里。毕竟阿里的规模比小米还是大不少,不同部门用不同的技术很常见,用哪个也不完全是技术问题也没啥对错之分。这四个committer分别属于三个大部门。阿里内部用的HBase也有各种不同的版本,各自维护各自的。

所以可以看出,国内绝大多数committer都是在大公司做事情从而被社区认可,极少在小公司做的变成committer后也跳到大公司了。毕竟大公司对数据库的要求更高,需要改进的地方多,撞到bug的“机会”多,可以做的事情也更多。像阿里和小米都是有自己的HBase内部分支的,很多feature都是在自己的分支开发上线跑稳定了才提交给社区,这样提交给社区的patch无论数量还是质量都更高,也就更容易当上committer。

反过来大公司也需要有committer来进一步提升数据库的质量以及在社区的话语权,因而committer在大公司会更被认可,换句话说是给的钱更多。而且就算不是数据库,在整个码农领域,如果想拿到比较高的级别和工资又不太想做管理依然想把主要精力放在技术上的话,其实基本上也只能去大公司。这个和公司本身是否支持开源关系倒也不是那么大(应该也没有哪个公司会在用某个开源数据库的同时还禁止自己员工给社区提patch吧),其实很多国内committer在社区上的工作都是北京时间的晚上也就是下班后在家搞的,一方面白天可能有公司的工作没时间搞,一方面晚上和美帝那边的人交流也更方便。
开源社区和公司的商业利益之间的关系,是一个很有意思的话题。我现在是Cloudera的工程师,Hadoop的brach committer,根据我自己的经验谈一下。

首先,公司为什么会付出资源贡献到开源社区?主要的好处就是可以“让全世界的开发者支持我想要的feature”。举个具体的 ,有个公司需要HDFS支持文件截短/truncate(参见HDFS-3107下面热闹的讨论),因为有committer,他们就可以把这个feature推上去。然后一个关键的好处就是之后HDFS的所有代码都需要支持(最少要考虑支持)truncate。比如我正在开发的Erasure Coding(HDFS-7285)。试想如果阿里巴巴有2-3个Hadoop committer,也许就不会放弃云梯项目。

其次,committer的份量。先简单说一下Hadoop的committer系统结构。Apache每个项目有个委员会(PMC),然后有若干committer。除了可以直接提交代码,committer还可以一票否决任何一个patch。还有一些branch committer只能提交到特定的branch里的。任何一个公司不能有超过半数的committer。全职做的话,如果代码质量好,大部分patch能通过的话,大约1.5-3年可以成为committer。我觉得门槛就在于Hadoop作为“数据中心的操作系统”,对代码质量要求比较高。而且涉及到不少分布式计算里面相对复杂的概念,完全理解现有设计和代码就不是一件容易的事。HBase我没有太多涉及,但是应该比较相似。

最后,小米有3个HBase committer我觉得是一件值得骄傲的事情。中国公司里还没有先例。我在一个评论里也提到,华为曾经有两个Hadoop committer,但是马上被Intel挖走了。另:中国公司看上去在Spark社区有很好的势头。
为什么?