
200多人同場(chǎng)競(jìng)技,經(jīng)過(guò)一輪輪的答題淘汰,最終決出那位闖關(guān)成功的勝者。這是Apache RocketMQ Meetup 現(xiàn)場(chǎng)的暖場(chǎng)游戲 -?SuperCoder挑戰(zhàn)賽。
這種帶有顯著技術(shù)特征的游戲不僅是工程師文化的延伸,也是Apache RocketMQ Meetup 不同于其它開發(fā)者活動(dòng)的地方。Apache RocketMQ創(chuàng)始人馮嘉在這次Meetup上分享了Apache?RocketMQ社區(qū)成立兩年多時(shí)間里的一些感悟,以下整理自現(xiàn)場(chǎng)分享。
RocketMQ自進(jìn)入Apache基金會(huì)以來(lái),無(wú)論是技術(shù)研發(fā),還是社區(qū)生態(tài)都取得了飛速發(fā)展,這次是Apache RocketMQ中國(guó)行的第六站,非常高興能有這么多同學(xué)抽出寶貴的周末時(shí)間來(lái)參加我們這次的Meetup。今天,我和大家分享三個(gè)關(guān)鍵詞 –創(chuàng)新、變化與社區(qū)。在我看來(lái),這幾個(gè)關(guān)鍵詞一定意義上體現(xiàn)了Apache RocketMQ社區(qū)的極客文化,也是我們一直追求的有別于國(guó)際上其它開源項(xiàng)目的不同之處。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)新
第一個(gè)關(guān)鍵詞是創(chuàng)新。
Apache RocketMQ是在阿里巴巴雙十一的場(chǎng)景下沉淀出來(lái)的,是一款經(jīng)過(guò)大規(guī)模生產(chǎn)檢驗(yàn)的分布式消息引擎,相比于國(guó)際上同類的開源項(xiàng)目,我認(rèn)為它的最大特性就是穩(wěn)定和可靠,因此非常適合金融行業(yè)的場(chǎng)景。開源后,我們基于穩(wěn)定可靠,做了非常多的技術(shù)升級(jí)與創(chuàng)新,并把應(yīng)用場(chǎng)景從金融行業(yè)擴(kuò)展到面向整個(gè)基礎(chǔ)設(shè)施,包括云端、互聯(lián)網(wǎng)、流計(jì)算、數(shù)據(jù)處理和AI,這是RocketMQ社區(qū)未來(lái)技術(shù)演進(jìn)和創(chuàng)新的方向。
另一項(xiàng)創(chuàng)新體現(xiàn)在社區(qū)運(yùn)營(yíng)層面,自從RocketMQ捐獻(xiàn)給Apache基金會(huì)后,我們便開始采用?Apache Way來(lái)運(yùn)營(yíng)社區(qū),隨著社區(qū)理念的加深,RocketMQ也積累了自己的運(yùn)營(yíng)經(jīng)驗(yàn),并以RocketMQ?Way的形式反哺給社區(qū)。創(chuàng)新是開源項(xiàng)目能夠持續(xù)發(fā)展的原動(dòng)力。產(chǎn)品同質(zhì)化越來(lái)越嚴(yán)重的情況下,如何讓用戶選擇你,并且是堅(jiān)定不移的支持你,這是我們一直在思考的問(wèn)題。我認(rèn)為創(chuàng)新是其中最為關(guān)鍵的因素。因此,你會(huì)看到RocketMQ的新技術(shù),新特性以及新的生態(tài)產(chǎn)品都會(huì)有別于傳統(tǒng)做法,這些都是我們的工程師與用戶進(jìn)行不斷交流討論得來(lái)的最真實(shí)的需求與痛點(diǎn)。
同時(shí),這也是我們舉辦Meetup重要的使命之一,非常希望也歡迎大家和我們分享自己在使用RocketMQ時(shí)的心得,包括給我們提建議、需求等。為此,我們這次還特意組織了一個(gè)環(huán)節(jié),叫做“Meet with Apache RocketMQ Committers”,就是希望社區(qū)的專家能夠近距離傾聽(tīng)我們客戶的心聲,接受來(lái)自用戶的輸入。
創(chuàng)新一方面是來(lái)自客戶真實(shí)需求,另外一方面則來(lái)自學(xué)術(shù)圈。這是Apache RocketMQ社區(qū)一個(gè)重要的努力方向,也是我們團(tuán)隊(duì)重要的工作方向之一。比方說(shuō),最近我們?cè)诟死囊恍╉敿鈱?shí)驗(yàn)室進(jìn)行技術(shù)交流與合作,今年即將發(fā)布的Apache RocketMQ 5.0會(huì)是一個(gè)重量級(jí)的架構(gòu)演化,屆時(shí)我們會(huì)提供一些新穎的特性出來(lái),歡迎大家來(lái)玩,幫助我們不斷提升產(chǎn)品品質(zhì)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 社區(qū)變化
第二個(gè)關(guān)鍵詞是社區(qū)變化。
在創(chuàng)新理念的影響下,我們看到了社區(qū)的變化,變得更開放和更包容,社區(qū)的工程師也更具工匠精神。RocketMQ自進(jìn)入Apache 孵化以來(lái),社區(qū)對(duì)內(nèi)核代碼等做了大量的優(yōu)化,局部做了不少重構(gòu)。社區(qū)最近發(fā)起的RIP(RocketMQ Improvement Proposal)改進(jìn)計(jì)劃(點(diǎn)擊文末閱讀原文進(jìn)行了解),便體現(xiàn)了社區(qū)協(xié)作上的變化。
以前,開發(fā)者都是通過(guò)issue來(lái)提交疑似bug,同時(shí)也會(huì)將feature request提交到issue列表里,然后我們通過(guò)issue列表來(lái)跟蹤和管理feature request。但這種方式對(duì)于feature request的管理并不高效,所以我們開始把feature request的提交、跟進(jìn)和管理拆分出來(lái),以RIP項(xiàng)目的形式來(lái)運(yùn)營(yíng),開發(fā)者使用社區(qū)的template來(lái)提交feature request,經(jīng)過(guò)[DISCUSS]和?[VOTE] 的流程后,進(jìn)入社區(qū)開發(fā)流程,即將發(fā)布的4.4.0版本里面的ACL和軌跡消息的產(chǎn)品特性就是源自社區(qū)的RIP。
當(dāng)然還有我們最近非?;馃岬亩嗾Z(yǔ)言SDK(C++, Python, Go, NodeJs等)和Spring集成,講到Spring集成這塊,我們接下來(lái)會(huì)有專門的文章為大家介紹,尤其是與來(lái)自Spring國(guó)際社區(qū)的工程師一起review改進(jìn)代碼質(zhì)量的經(jīng)歷,這是一次非常深入的社區(qū)協(xié)作,對(duì)我們工程師的成長(zhǎng)來(lái)說(shuō)非常有價(jià)值。?
另外一個(gè)變化來(lái)自我們社區(qū)的組織形態(tài)。
前兩年我去美國(guó)參加Java One,和國(guó)外的同行也多次交流過(guò)社區(qū)的運(yùn)營(yíng)。大家知道,在Java領(lǐng)域有非常多的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)絕大多數(shù)是被稱之為JCP這樣的專家組織提出來(lái)的,但有一部分是由JUG這樣的民間開發(fā)者組織發(fā)起的,為此還有一個(gè)和它匹配的專有名詞。在美國(guó)被稱之為DevRel,翻譯過(guò)來(lái)就是開發(fā)者關(guān)系。這樣的組織對(duì)社區(qū)的發(fā)展至關(guān)重要,像一個(gè)JUG的組織者就來(lái)自巴西,每次Java One基本上都會(huì)來(lái)分享她們的經(jīng)驗(yàn),怎么維護(hù)這個(gè)組織,為JCP貢獻(xiàn)了哪些技術(shù)標(biāo)準(zhǔn)等等。
Java語(yǔ)言是我個(gè)人非常喜歡的語(yǔ)言之一,我也特別希望亞洲范圍內(nèi)有這樣一個(gè)JUG組織,推進(jìn)Java的發(fā)展與新標(biāo)準(zhǔn)的落地。另外,我們也都看到,早期很多開源項(xiàng)目的發(fā)展,都是依賴于某一家或某幾家企業(yè)。如Facebook和Twitter,我認(rèn)為是當(dāng)時(shí)最具開源極客文化的兩家公司。
拉回國(guó)內(nèi),今天我們大家有機(jī)會(huì)聚在一起,是因?yàn)锳pache軟件基金會(huì),因?yàn)楸澈笥衼?lái)自阿里巴巴、中國(guó)移動(dòng)、滴滴出行、平安銀行等上百家企業(yè)的真實(shí)案例與貢獻(xiàn)支持。當(dāng)然,我們也非常高興地看到社區(qū)在自發(fā)的組織一些線下活動(dòng),以更高的頻率下沉到更多的城市,讓國(guó)內(nèi)更多城市的開發(fā)者也可以參與線下互動(dòng)。這也是RocketMQ社區(qū)的一個(gè)巨大變化:現(xiàn)在有了更多的來(lái)自社區(qū)的自發(fā)組織,就像JUG這樣的組織一樣,后面我們也會(huì)邀請(qǐng)相關(guān)的同學(xué)來(lái)給大家分享社區(qū)里的一些趣聞。
最后一個(gè)變化,也是我重點(diǎn)想提的,人的變化。
開源是一個(gè)全球性的經(jīng)濟(jì)活動(dòng),在開源領(lǐng)域,我們有機(jī)會(huì)接觸到那些受人尊敬但距離看似遙遠(yuǎn)的技術(shù)大牛。但開源為我們提供了一個(gè)途徑,如果大家能夠參與到社區(qū),無(wú)論是使用開源項(xiàng)目,還是以contributor的身份參與社區(qū)貢獻(xiàn)(架構(gòu)演進(jìn)、功能完善、體驗(yàn)優(yōu)化和文檔建設(shè)),都有機(jī)會(huì)和技術(shù)大牛一起協(xié)作,進(jìn)行更多的交流。從中你會(huì)發(fā)現(xiàn),不僅僅自己的技術(shù)實(shí)力發(fā)生了變化,視野格局也會(huì)有很大的提升。
以我自己為例,在畢業(yè)那會(huì)兒,JavaEE和Spring 基本上是Java領(lǐng)域的一個(gè)技術(shù)標(biāo)配,那個(gè)時(shí)候給我留下深刻印象的兩個(gè)技術(shù)牛人,一個(gè)是Spring的締造者Rod Johnson,一個(gè)是Hibernate的作者Gavin King,不管是代碼,還是從他們?cè)谏鐓^(qū)的activity來(lái)看,都有很強(qiáng)的極客范,對(duì)我本人的技術(shù)發(fā)展也提供了很多學(xué)習(xí)借鑒的地方。
如今,在Messaging和Streaming領(lǐng)域,RocketMQ社區(qū)的同學(xué)在打交道的外國(guó)同行幾乎都是分布式領(lǐng)域深耕數(shù)十年、受人尊敬的“大胡子”,大家也都能很平和地在交流著圈內(nèi)技術(shù),探討領(lǐng)域的發(fā)展方向。
目前,我們也和包括微軟、Google、IBM以及K8S生態(tài)圈中的許多頂級(jí)開源項(xiàng)目都有很好的合作,這些合作經(jīng)歷對(duì)工程師的成長(zhǎng)幫助非常大。以前經(jīng)常有開發(fā)者問(wèn)參與開源項(xiàng)目有什么好處,我會(huì)講有一二三四五六,但其實(shí)第七點(diǎn)同樣非常關(guān)鍵,就是成長(zhǎng)。從團(tuán)隊(duì)周邊的小伙伴身上,我能清晰的感受到,開源對(duì)工程師成長(zhǎng)帶來(lái)的顯著提升,包括領(lǐng)域深度認(rèn)識(shí)、技術(shù)格局、溝通協(xié)作等方面,這些都會(huì)為大家日常工作帶來(lái)積極的變化。
另外,在這里,我特別希望向大家傳達(dá)的是做開源的態(tài)度 - 不亢不卑,這個(gè)也是我在團(tuán)隊(duì)里面經(jīng)常強(qiáng)調(diào)的。當(dāng)我們和來(lái)自微軟、伯克利等同學(xué)在做技術(shù)交流的時(shí)候,你會(huì)發(fā)現(xiàn)大家其實(shí)思考的問(wèn)題基本上是一致的,只是解決這些痛點(diǎn)的方式、維度有所不同。如果你的知識(shí)儲(chǔ)備不錯(cuò),可以通過(guò)橫向推演或者親自研究這些項(xiàng)目,這樣大家的交流會(huì)很對(duì)點(diǎn)。
但交流過(guò)程中確實(shí)會(huì)出現(xiàn)一些文化上的差異,例如老外會(huì)覺(jué)得你的技術(shù)只是在中國(guó)才流行,但隨著技術(shù)上的深入交流,以技術(shù)的方式去探討,也會(huì)逐步獲得對(duì)方的認(rèn)可,這個(gè)溝通過(guò)程將會(huì)帶給工程師很大的鼓舞。我也特別鼓勵(lì)大家能更多地以平和的心態(tài)去和國(guó)外的同學(xué)作深度交流,也希望大家能夠像這些同行一樣,非常nice地尊重每一位同學(xué),而不是那種冷冰冰地對(duì)待來(lái)自社區(qū)的友善提問(wèn)與合作請(qǐng)求。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 社區(qū)
最后,我們回歸社區(qū)
Apache?RocketMQ社區(qū)成立的兩年多里,除了給團(tuán)隊(duì)、社區(qū)和開發(fā)者個(gè)人帶來(lái)變化外,RocketMQ項(xiàng)目本身也經(jīng)歷著從本地化向多元化發(fā)展。
今天來(lái)看,容器、微服務(wù)、人工智能等目前國(guó)內(nèi)比較火的技術(shù)方向,像技術(shù)峰會(huì)或者M(jìn)eetup在國(guó)外舉辦的居多,因?yàn)檫@些技術(shù)的發(fā)源地或者說(shuō)概念的提出是在國(guó)外。這幾年,我們也慢慢看到一些國(guó)內(nèi)同學(xué)提出來(lái)的頂級(jí)項(xiàng)目或者說(shuō)標(biāo)準(zhǔn),開源以后,在中國(guó)也擁有非常多的國(guó)外用戶。就拿RocketMQ來(lái)說(shuō),例如在之前的北京Meetup上有來(lái)自于印度和中東地區(qū)的工程師詢問(wèn)。但因?yàn)槭芟抻贛eetup本地化行程,沒(méi)有機(jī)會(huì)提供英語(yǔ)的分享環(huán)境。
所以接下來(lái),我們會(huì)嘗試邀請(qǐng)社區(qū)里面在中國(guó)工作的外籍工程師,并提供一個(gè)英語(yǔ)分享環(huán)境,讓他們也來(lái)感受一下Apache RocketMQ社區(qū)線下活動(dòng)的氛圍,同時(shí)能夠幫助我們注入更多的國(guó)際化因素。今年,我們也在考慮計(jì)劃Apache RocketMQ?北美行,歡迎屆時(shí)大家推薦自己在國(guó)外的朋友來(lái)參加。

本文作者:馮嘉,社區(qū)昵稱vongosling?,Apache RocketMQ 創(chuàng)始人,Linux OpenMessaging 創(chuàng)始人,Google編程夏令營(yíng)導(dǎo)師,Apache孵化器導(dǎo)師,阿里巴巴 Messaging 開源技術(shù)負(fù)責(zé)人。