200多人同场竞技,经过一轮轮的答题淘汰,最终决出那位闯关成功的胜者。这是Apache RocketMQ Meetup 现场的暖场游戏 - SuperCoder挑战赛。
这种带有显著技术特征的游戏不仅是工程师文化的延伸,也是Apache RocketMQ Meetup 不同于其它开发者活动的地方。Apache RocketMQ创始人冯嘉在这次Meetup上分享了Apache RocketMQ社区成立两年多时间里的一些感悟,以下整理自现场分享。
RocketMQ自进入Apache基金会以来,无论是技术研发,还是社区生态都取得了飞速发展,这次是Apache RocketMQ中国行的第六站,非常高兴能有这么多同学抽出宝贵的周末时间来参加我们这次的Meetup。今天,我和大家分享三个关键词 –创新、变化与社区。在我看来,这几个关键词一定意义上体现了Apache RocketMQ社区的极客文化,也是我们一直追求的有别于国际上其它开源项目的不同之处。
创新
第一个关键词是创新。
Apache RocketMQ是在阿里巴巴双十一的场景下沉淀出来的,是一款经过大规模生产检验的分布式消息引擎,相比于国际上同类的开源项目,我认为它的最大特性就是稳定和可靠,因此非常适合金融行业的场景。开源后,我们基于稳定可靠,做了非常多的技术升级与创新,并把应用场景从金融行业扩展到面向整个基础设施,包括云端、互联网、流计算、数据处理和AI,这是RocketMQ社区未来技术演进和创新的方向。
另一项创新体现在社区运营层面,自从RocketMQ捐献给Apache基金会后,我们便开始采用 Apache Way来运营社区,随着社区理念的加深,RocketMQ也积累了自己的运营经验,并以RocketMQ Way的形式反哺给社区。创新是开源项目能够持续发展的原动力。产品同质化越来越严重的情况下,如何让用户选择你,并且是坚定不移的支持你,这是我们一直在思考的问题。我认为创新是其中最为关键的因素。因此,你会看到RocketMQ的新技术,新特性以及新的生态产品都会有别于传统做法,这些都是我们的工程师与用户进行不断交流讨论得来的最真实的需求与痛点。
同时,这也是我们举办Meetup重要的使命之一,非常希望也欢迎大家和我们分享自己在使用RocketMQ时的心得,包括给我们提建议、需求等。为此,我们这次还特意组织了一个环节,叫做“Meet with Apache RocketMQ Committers”,就是希望社区的专家能够近距离倾听我们客户的心声,接受来自用户的输入。
创新一方面是来自客户真实需求,另外一方面则来自学术圈。这是Apache RocketMQ社区一个重要的努力方向,也是我们团队重要的工作方向之一。比方说,最近我们在跟伯克利的一些顶尖实验室进行技术交流与合作,今年即将发布的Apache RocketMQ 5.0会是一个重量级的架构演化,届时我们会提供一些新颖的特性出来,欢迎大家来玩,帮助我们不断提升产品品质。
社区变化
第二个关键词是社区变化。
在创新理念的影响下,我们看到了社区的变化,变得更开放和更包容,社区的工程师也更具工匠精神。RocketMQ自进入Apache 孵化以来,社区对内核代码等做了大量的优化,局部做了不少重构。社区最近发起的RIP(RocketMQ Improvement Proposal)改进计划(点击文末阅读原文进行了解),便体现了社区协作上的变化。
以前,开发者都是通过issue来提交疑似bug,同时也会将feature request提交到issue列表里,然后我们通过issue列表来跟踪和管理feature request。但这种方式对于feature request的管理并不高效,所以我们开始把feature request的提交、跟进和管理拆分出来,以RIP项目的形式来运营,开发者使用社区的template来提交feature request,经过[DISCUSS]和 [VOTE] 的流程后,进入社区开发流程,即将发布的4.4.0版本里面的ACL和轨迹消息的产品特性就是源自社区的RIP。
当然还有我们最近非常火热的多语言SDK(C++, Python, Go, NodeJs等)和Spring集成,讲到Spring集成这块,我们接下来会有专门的文章为大家介绍,尤其是与来自Spring国际社区的工程师一起review改进代码质量的经历,这是一次非常深入的社区协作,对我们工程师的成长来说非常有价值。
另外一个变化来自我们社区的组织形态。
前两年我去美国参加Java One,和国外的同行也多次交流过社区的运营。大家知道,在Java领域有非常多的标准,这些标准绝大多数是被称之为JCP这样的专家组织提出来的,但有一部分是由JUG这样的民间开发者组织发起的,为此还有一个和它匹配的专有名词。在美国被称之为DevRel,翻译过来就是开发者关系。这样的组织对社区的发展至关重要,像一个JUG的组织者就来自巴西,每次Java One基本上都会来分享她们的经验,怎么维护这个组织,为JCP贡献了哪些技术标准等等。
Java语言是我个人非常喜欢的语言之一,我也特别希望亚洲范围内有这样一个JUG组织,推进Java的发展与新标准的落地。另外,我们也都看到,早期很多开源项目的发展,都是依赖于某一家或某几家企业。如Facebook和Twitter,我认为是当时最具开源极客文化的两家公司。
拉回国内,今天我们大家有机会聚在一起,是因为Apache软件基金会,因为背后有来自阿里巴巴、中国移动、滴滴出行、平安银行等上百家企业的真实案例与贡献支持。当然,我们也非常高兴地看到社区在自发的组织一些线下活动,以更高的频率下沉到更多的城市,让国内更多城市的开发者也可以参与线下互动。这也是RocketMQ社区的一个巨大变化:现在有了更多的来自社区的自发组织,就像JUG这样的组织一样,后面我们也会邀请相关的同学来给大家分享社区里的一些趣闻。
最后一个变化,也是我重点想提的,人的变化。
开源是一个全球性的经济活动,在开源领域,我们有机会接触到那些受人尊敬但距离看似遥远的技术大牛。但开源为我们提供了一个途径,如果大家能够参与到社区,无论是使用开源项目,还是以contributor的身份参与社区贡献(架构演进、功能完善、体验优化和文档建设),都有机会和技术大牛一起协作,进行更多的交流。从中你会发现,不仅仅自己的技术实力发生了变化,视野格局也会有很大的提升。
以我自己为例,在毕业那会儿,JavaEE和Spring 基本上是Java领域的一个技术标配,那个时候给我留下深刻印象的两个技术牛人,一个是Spring的缔造者Rod Johnson,一个是Hibernate的作者Gavin King,不管是代码,还是从他们在社区的activity来看,都有很强的极客范,对我本人的技术发展也提供了很多学习借鉴的地方。
如今,在Messaging和Streaming领域,RocketMQ社区的同学在打交道的外国同行几乎都是分布式领域深耕数十年、受人尊敬的“大胡子”,大家也都能很平和地在交流着圈内技术,探讨领域的发展方向。
目前,我们也和包括微软、Google、IBM以及K8S生态圈中的许多顶级开源项目都有很好的合作,这些合作经历对工程师的成长帮助非常大。以前经常有开发者问参与开源项目有什么好处,我会讲有一二三四五六,但其实第七点同样非常关键,就是成长。从团队周边的小伙伴身上,我能清晰的感受到,开源对工程师成长带来的显著提升,包括领域深度认识、技术格局、沟通协作等方面,这些都会为大家日常工作带来积极的变化。
另外,在这里,我特别希望向大家传达的是做开源的态度 - 不亢不卑,这个也是我在团队里面经常强调的。当我们和来自微软、伯克利等同学在做技术交流的时候,你会发现大家其实思考的问题基本上是一致的,只是解决这些痛点的方式、维度有所不同。如果你的知识储备不错,可以通过横向推演或者亲自研究这些项目,这样大家的交流会很对点。
但交流过程中确实会出现一些文化上的差异,例如老外会觉得你的技术只是在中国才流行,但随着技术上的深入交流,以技术的方式去探讨,也会逐步获得对方的认可,这个沟通过程将会带给工程师很大的鼓舞。我也特别鼓励大家能更多地以平和的心态去和国外的同学作深度交流,也希望大家能够像这些同行一样,非常nice地尊重每一位同学,而不是那种冷冰冰地对待来自社区的友善提问与合作请求。
社区
最后,我们回归社区
Apache RocketMQ社区成立的两年多里,除了给团队、社区和开发者个人带来变化外,RocketMQ项目本身也经历着从本地化向多元化发展。
今天来看,容器、微服务、人工智能等目前国内比较火的技术方向,像技术峰会或者Meetup在国外举办的居多,因为这些技术的发源地或者说概念的提出是在国外。这几年,我们也慢慢看到一些国内同学提出来的顶级项目或者说标准,开源以后,在中国也拥有非常多的国外用户。就拿RocketMQ来说,例如在之前的北京Meetup上有来自于印度和中东地区的工程师询问。但因为受限于Meetup本地化行程,没有机会提供英语的分享环境。
所以接下来,我们会尝试邀请社区里面在中国工作的外籍工程师,并提供一个英语分享环境,让他们也来感受一下Apache RocketMQ社区线下活动的氛围,同时能够帮助我们注入更多的国际化因素。今年,我们也在考虑计划Apache RocketMQ 北美行,欢迎届时大家推荐自己在国外的朋友来参加。
本文作者:冯嘉,社区昵称vongosling ,Apache RocketMQ 创始人,Linux OpenMessaging 创始人,Google编程夏令营导师,Apache孵化器导师,阿里巴巴 Messaging 开源技术负责人。