8 月 16 日,ALC Beijing 的首次线下沙龙活动 —— 《开源到底有多难?》在微软大厦如期举行。本次沙龙主要是分享开源开发经验、探讨如何让开源项目更加茁壮成长,以及分享 ASF 管理和运作开源项目的成功之道。
Apache 软件基金会成员、Apache 软件基金孵化器导师、ALC Beijing 发起人姜宁;Apache Flink 社区 PMC member 李钰;Apache DolphinScheduler 项目负责人、易观 CTO 郭炜;ASF Member、阿里巴巴 Tech Lead 孙金城(花名:金竹);Apache APISIX PMC member、深圳支流科技创始人温铭;ALC Beijing member、开源布道师李建盛分别在本次活动中进行了分享与探讨。
Apache DolphinScheduler 项目负责人、易观 CTO 郭炜在活动中以《开源,不是天才的甜点,而是勤奋者的盛宴》为题进行了分享,以下为整理后的文字版本。
《开源,不是天才的甜点,而是勤奋者的盛宴》
我们的开源项目 Dolphin Scheduler 在去年的 8 月 29 日,正式加入的 Apache 孵化器。在加入的时候,中国一共有 16 个开源项目在 Apache 中,并且大部分都是 BAT 这样级别的大厂或者清华之类的名校项目。
我们这样一个以技术起家的中型公司是如何能够把一个开源项目申请进 Apache 的呢?今天我们就来讲一下这个“屡战屡败,屡败屡战”的故事。
Dolphin Scheduler 不是易观第一个开源的项目。易观第一个开源的项目叫 Backquarter,一个跨云的 Kafka 同步程序。
我们在完成了这个程序开源以后很得意,我还特意给它起了名字「Backquarter」—— 四分卫。寓意就是这个工具就像是橄榄球赛场上的四分卫,可以抢到球快速带着球稳定的传送给前锋。
我还专门的为了它去各种技术大会大肆宣传,“一顿宣传猛如虎“啊。别说,还真有效果,在几周时间带来了 13 个赞,12 个 fork!
因此我们开始反思,一腔热血、每行代码都付出努力,并且还进行了开源,为什么没人用呢?我也不知道问题出在哪,所以当时请教了无数的人。
有一次请几个大咖边吃火锅边探讨,一个产品大咖指着火锅和我说:
“你知道为什么火锅可以流传 1700 多年么?它就是一个产品,有自己的核心理念和调性,热气腾腾锅子,精髓的羊肉、麻酱,还方便易做。而你这东西只是一炉子碳,不是一个产品。你的产品理念是什么?没有明确的产品理念,谁会一直用你这个东西?虽然开源不付费,但是同样需要别人付出努力来使用你的产品,没有产品理念,你就用炭炉子烤个手就算啦。”
我恍然大悟:原来,开源不光是贡献代码,更需要具有产品的核心理念和“调性”。
GitHub 上有成千上万个开源项目,大家可以看一下他们的最终更新时间,大部分都烂尾了。开源不只是把代码放上去就可以了,开源要有产品的调性,才可以有生命力,像火锅一样有号召力。
就像 Clickhouse 社区的宣传语“Clickhouse 引擎就是快”,或者是像 Apache Dolphin Scheduler 的“工具选得好,下班回家早;调度用的对,半夜安心睡“一样,永远有一个有明确的产品核心理念和“调性”,让它可以一直传播,才能召唤同道者加入你的阵营。
所以说,开源,产品才是基础啊。汲取这次教训之后,半年后我们基于自己的使用场景,精心打磨了一个 API-Gateway 开源组件 Kong-plus。它是基于 Kong 进行二次开发,具有良好的功能和操作界面,可以帮助小白用户迅速的建立起一套高并发的 API Gateway。
立意很明确吧?调性也是更贴近小白用户,甚至连界面我们都专门找 UX 设计了一下。开源后我们也尝试自己传播了一下,但效果仍然很差。我很苦闷,用了公司这么多资源,什么都没做出来。
后来我找我好朋友 Apache Kylin 创始人 Luke 聊天,他跟我分享了一个观点:
“开源是什么?你没有开发者,怎么能叫开源呢?开发者是土壤,开源代码是小芽,没有土壤,芽也会枯萎的。你的代码别人是读不懂的,你需要做好文档,做好社群运营,有土壤了,你的芽长大了才可以长成参天大树。“
我再一次顿悟了:“开源,不是代码开源,真正的开源,是你找到你的第一个开发者。”
“Open Source Starts with your 1st Contributor“,这和 Apache 的宗旨“Community Over Code”一脉相承,代码烂了可以重写,而社区太差,再好代码的也会付之东流。
但我们从来没有运营过开发者,为了我们的芽有好的土壤,我开始带着 6 个“罗汉”,搞各种社群各种 Meetup,Clickhouse、Presto、Hbase 等等圈里的小伙伴都觉得我疯了,是不是要做个大数据峰会和业内的技术峰会分杯羹。
这一做就是3年,有些很成功,有些不成功。但我在一边给社区贡献的同时,也收获了3个重要认知:
第一个就是社区贡献。我们真的可以不懂代码,但是要持续贡献。以 Clickhouse 为例,我真的看不懂俄罗斯黑科技的 CPU 指令集中的那些代码,但并不妨碍我作为 Clickhouse 中国社区组织者的和推进人。现在连 Linus 大神,都说他已经不是程序猿而是激励他人开发的鼓励师了。
第二就是运营社区。你要尊重给你社区扔臭鸡蛋的人,他们正是因为需要你,才会在社区里有不同的意见和声音,爱和恨都是强烈的情感,而冷漠不是。开源社区最怕的是邮件列表和微信讨论群没有人说话,所有人都很冷漠。
第三,开源社区就像是土壤,需要产品经理、开发者持续加料,持续的贡献,开源的小树苗才可以长成参天大树,凝结出果实,让更多的人可以分享。
有人说“在中国只有免费,没有开源”。 中国只有 16 个项目可以上 Apache,而且背后都是大厂在支撑的,民间没有开源精神。很多人来了把树就锯走了而不去耕,所以,在中国做开源都只有“雾霾天”。
姜宁老师刚才分享了一张图片,我国作为全球最大开源消费国,ASF 在国内有广泛的群众基础,但全球的 300 多个项目中,只有 19 个项目来自中国。但他没分享另一张图,就是中国全球的贡献者里,我们下载的最多的但贡献是倒数的。
但“中国没有开源”这个观点我是不愿意相信的。我相信这一代年轻人,不仅仅是程序猿,而是越来越多的人,愿意参加到各行各业的非盈利团体当中去,贡献自己的想法、代码、知识,让这个世界变得更加美好。
我相信哪怕我们这一代人看不到开源的春天,我们的下一代人也不应该再看到开源的“雾霾天”。于是我们就积攒了更多的力量,筹备了一年,把我们自己内部使用的一个产品 —— Dolphin Scheduler 进行了开源。
Dolphin Scheduler 是“分布式易扩展的可视化的 DAG 工作流调度系统”,它的目标很简单,就是“高效、便捷、准确、可靠”的把这些数据和任务,直接到达它最终的目的地。我们自己的 slogan 叫做“工具用得好,下班回家早;调度用得对,半夜安心睡”。
它有很多很强大的功能,第一个功能可视化的 DAG 图,如果做过大数据的小伙伴知道,如果你要做一条复杂的调度系统时,很头疼的是怎么做这两个之间的 Dolphin,而我们提供的是可视化的方式,让你很容易的把这个依赖和触发做起来。
第二个是调度的高可用。现在目前有很多的调度工具,但很少有分布式的调度,能保证某台机器宕掉时不影响整个系统。现在大部分系统发生宕掉的情况时,半夜就会接到运维电话,然后起床去把东西修复好。所以我们的 slogan 里才提到了一句“安心睡”。
第三个,我们有各种各样的语言类型,自定义查检。第四个是任务自依赖。第五个是排错机制。
总体来讲,我们有八个比较大的功能。我们有全部的优先级,还有局部的优先级、参数,都可以使用。对于“安心睡”,有依赖、监控、报警这些功能。
做销售的小伙伴,最头疼的就是补数、重跑,我们也提供了各种各样的补数规则,可以通过各种方式进行察看,直接在界面上就可以把实验做好,操作也更方便,每天能支持非常多的数据量级的东西,稳定的跑起来,这是 Apache(S)的功能。
我们的开源项目目前在国内用得蛮多,像 IBM、美团、360,银行类的包括工行、平安、招行,也有各种各样的互联网公司在用,包括芒果TV、凤凰、E代驾等等。
我们在国内也有非常多的用户群,现在有 7 个微信群,三千多人,跟我们做互动,我们自己的贡献者,也分布在各种各样的公司里,有 BAT 的、有传统公司的、也有专业公司的人,一起贡献我们的代码。
现在从 GitHub 上看,其实大家都是参与者、贡献者,我们也欢迎在座的小伙伴加入到我们的Apache Dolphin Scheduler里面去。
关于未来的方向我们也做过一定的思考。未来 APache Dolphin Scheduler 能够做什么?
这其实又回到了开始,一个产品的调性是要做什么。未来的 Apache Dolphin Scheduler 是一个分布式易扩展、高效、便捷。此外我们也在做数据质量方面的事情,将我们原来的底层机制、分布式做得更加可靠,还有我们的 API 调用和一些分层的设计,这些大家可以到 GitHub 上详细了解。
我们的目标还是原来最开始的初心,就是希望大家真的能够晚上安心睡个觉。
回到最开始的故事,我想分享一下当时在这个项目里我印象最深刻的一天。
不知道大家是不是看过《美丽心灵》?电影中我印象特别深刻的有一个场景,当纳什获得诺贝尔奖的时候,在外面走廊里走着,有一个科学家请他走进了瑞典的皇家教堂,里面是全球顶级的科学家坐在那里,第一个科学家把自己的钢笔拿出来放到他面前,说“欢迎”;第二个科学家把自己的钢笔拿出来,说“欢迎”。
当时 Apache SkyWalking 的创始人吴晟老师把我们的 Proposal 放到到 Apache 讨论的时候,我们也是不停的看到全球顶级的架构师,不停的回复着“+1”、“+1”,这种感觉会让你觉得前面受了那么多苦、做了那么多开源项目,都值得了。
所以每当一个人加入到一个开源项目的时候,可能刚开始只是提一个小的 PR,到后面可能对这个开源项目提你的 Proposal。在这个过程中,你会发现这些无论是国内的还是国外的顶尖的架构师,在对你的 Proposal 回邮件最终“+1”的时候,你就是那个“纳什”,这些人不停的在给你投票。
所以对于 Apache Dolphin Scheduler 来讲,我们也算是拨开了一小片雾霾,见到了一小片蓝天。
当我们回顾 Apache Dolphin Scheduler 屡战屡败、屡败屡战的故事时,有哪些收获呢?
- 第一个,开源,产品是基础,你要像火锅一样,自己来凝聚你的开发者。
- 第二个,做开源,社区优先。
- 第三个,开源是一种精神,是一辈子的事儿,不需要你的灵光一现,今天写一个代码进去。而是需要你不断的坚持、不断的努力。
所以回到今天的主题,开源本身就不是天才的甜点,今天你吃一口,感觉很好,明天不吃了,不是这样的。它是一个勤奋者的盛宴,让你不停的去努力,去加油。
当然了,在中国,开源的时代正在觉醒,需要每一位小伙伴不懈的努力,最终的让开源精神在中国拨云见日,遍地生花。
DolphinScheduler 相关资源:在线DEMO: http://106.75.43.194:8888/
官网:https://dolphinscheduler.apac...
开源地址:https://github.com/apache/inc...
相关阅读: 活动回顾丨ALC Beijing 首场 Meetup:《开源到底有多难?》
活动中更多嘉宾的分享以及圆桌讨论内容,近期会于 SegmentFault 社区以及 ALC Beijing 官方渠道陆续进行发布,敬请期待。
SegmentFault 作为本次活动以及 ALC Beijing 的媒体合作伙伴,一直非常重视开源文化以及开源生态的传播与建设,并于今年 5 月份推出了「SFOSSP - 开源项目扶持计划」,目前已经助力数十余个开源项目进行宣传推广。
后续也将和 ALC Beijing 以及其他开源社区、开源项目团队、开源从业者共同打造开源生态,解决开源过程中的实际问题,敬请期待。