前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么一个开源项目这么难 No.124

为什么一个开源项目这么难 No.124

作者头像
大蕉
发布2018-12-25 17:04:48
5930
发布2018-12-25 17:04:48
举报
文章被收录于专栏:一名叫大蕉的程序员

今天刚好群里有朋友在问,你们为什么开源了 Apache Dubbo,你们内部是不是有更好的闭源的实现吖?看过《淘宝技术这十年》的小伙伴都知道,内部其实很多部门都在使用一个叫 HSF(High Speed Framework) 的 RPC 框架,江湖人称 "好舒服"。

那为什么内部在使用一个闭源的 HSF ,开源项目却是 Apache Dubbo 呢?

首先一个项目能不能开源,除了看公司的意愿外,还有一个很重要的一点,这个项目是不是依赖了很多内部的其他项目。打个比方说,如果一个项目,缓存中间件指定要使用 Tair ,配置中间件指定要使用 Diamond,这个项目一开源出来可能就得嗝屁。

为什么呢?

就两个最浅显的理由,第一Tair 外部搭建成本太高,其次Diamond 干脆就不是开源的。这就尴尬了,如果这样干的话,那么开源出来初始牛逼哄哄,但是所有人都没法自主搭建,因为只是开源了一小部分出来背后的很多依赖项外部都不满足。再举另外一个例子,Google 在写大数据三大马车的时候,也有一个一致性中间件 Chubby 是没有任何人知道如何实现的,而且在论文中完全没有出现任何容器技术的字眼,这在当年是故意还是偶然的就不得而知了。

想开源,从商业角度上全盘共享出来太亏,部分开源技术角度上拆分又太难。

反过来讲,那为什么内部不将已有业务迁移到开源的组件上呢?第一是历史包袱比较重,历史上每一项技术都有它产生的背景,要迁移古老的代码谈何容易,所以有一些公司即使技术落后,在能满足当前业务需求的情况下,不会轻易去进行技术架构变更。第二呢是开发熟悉程度,作为一个内部框架,它跟内部的很多中间件都配合得非常好,而且对于内部中间件也有很多的优化,内部开发人员如果要熟悉内外两套东西,从成本的角度来看无疑是非常高的。如果内部你用A组件 ,我用B组件,我们要怎么标准化通信呢?这无疑增加了开发的成本。

成本与收益,能解释很多事情为什么做,为什么不做。

Apache Dubbo 是一个 Apache 顶级项目,并不是每一个Apache 项目都是顶级项目。简单来说,就是有些顶级项目会包含一些子项目。每个顶级项目都有独立的委员会来管理。

Apache 开源项目的建立大致分为三个阶段,提案、孵化、毕业。提案阶段需要有委员会的三位导师联合提名,一旦提名成功会成立委员会保障这个项目的进行,这个阶段除了看项目还要看创始人的社交能力。孵化阶段就是开源项目代码,优化build方案,建立社区等等,构建社区参与度。毕业阶段就是Apache 委员会里绝大多数导师同意毕业,那就毕业了,成为一个顶级项目或者其他顶级项目的子项目。(参考自 Google)

难吗?难。看质量看关系还看耐心,有一堆听都没听过的项目好久都没毕业。

如果一不小心,啊真的开源成功了,有很多人很多公司都在使用这个项目,那么恭喜你,好日子来了,坏日子也来了。

会有很多人使用。

会有很多人吐槽。

会有很多的需求列表。

会有很多的update list。

会有很多的教程。

会有很多的code review。

当然,以上的我一个都没有。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名叫大蕉的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档