馮嘉
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不同于其它開(kāi)發(fā)者活動(dòng)的地方。
RocketMQ自進(jìn)入Apache基金會(huì)以來(lái),無(wú)論是技術(shù)研發(fā),還是社區(qū)生態(tài),都取得了飛速發(fā)展。今天,我和大家分享三個(gè)關(guān)鍵詞—?jiǎng)?chuàng)新、變化與社區(qū)。在我看來(lái),這幾個(gè)關(guān)鍵詞一定意義上體現(xiàn)了Apache RocketMQ社區(qū)的極客文化,也是我們一直追求的、有別于國(guó)際上其它開(kāi)源項(xiàng)目的不同之處。
創(chuàng)新
第一個(gè)關(guān)鍵詞是創(chuàng)新。
Apache RocketMQ是在阿里巴巴“雙11”的場(chǎng)景下沉淀出來(lái)的,是一款經(jīng)過(guò)大規(guī)模生產(chǎn)檢驗(yàn)的分布式消息引擎,相比于國(guó)際上同類的開(kāi)源項(xiàng)目,我認(rèn)為,它的最大特性是穩(wěn)定和可靠,因此非常適合金融行業(yè)的場(chǎng)景。開(kāi)源后,我們基于穩(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ì)后,我們便開(kāi)始采用Apache Way來(lái)運(yùn)營(yíng)社區(qū),隨著社區(qū)理念的加深,RocketMQ也積累了自己的運(yùn)營(yíng)經(jīng)驗(yàn),并以RocketMQ Way的形式反哺給社區(qū)。
創(chuàng)新是開(kāi)源項(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的重要使命之一。我們還特意組織了一個(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ì)重要的工作方向之一。比如,最近我們?cè)诟死囊恍╉敿鈱?shí)驗(yàn)室進(jìn)行技術(shù)交流與合作,今年即將發(fā)布的Apache RocketMQ 5.0會(huì)是一個(gè)重量級(jí)的架構(gòu)演化,屆時(shí)我們會(huì)提供一些新穎的特性出來(lái)。
社區(qū)變化
第二個(gè)關(guān)鍵詞是社區(qū)變化。
在創(chuàng)新理念的影響下,我們看到了社區(qū)的變化,變得更開(kāi)放和更包容,社區(qū)的工程師也更具工匠精神。
RocketMQ自進(jìn)入Apache孵化以來(lái),社區(qū)對(duì)內(nèi)核代碼等做了大量的優(yōu)化,局部做了不少重構(gòu)。社區(qū)最近發(fā)起的RIP(RocketMQ Improvement Proposal)改進(jìn)計(jì)劃,便體現(xiàn)了社區(qū)協(xié)作上的變化。
以前,開(kāi)發(fā)者都是通過(guò)issue來(lái)提交疑似bug,同時(shí)也會(huì)將feature request提交到issue列表里。然后,我們通過(guò)issue列表來(lái)跟蹤和管理feature request。但這種方式對(duì)于feature request的管理并不高效,所以我們開(kāi)始把feature request的提交、跟進(jìn)和管理拆分出來(lái),以RIP項(xiàng)目的形式來(lái)運(yùn)營(yíng),開(kāi)發(fā)者使用社區(qū)的template來(lái)提交feature request,經(jīng)過(guò)[DISCUSS]和[VOTE]的流程后,進(jìn)入社區(qū)開(kāi)發(fā)流程,即將發(fā)布的4.4.0版本里面的ACL和軌跡消息的產(chǎn)品特性就是源自社區(qū)的RIP。當(dāng)然,還有我們最近非?;馃岬亩嗾Z(yǔ)言SDK(C++、 Python、Go、NodeJs等)和Spring集成。
另外一個(gè)變化來(lái)自我們社區(qū)的組織形態(tài)。大家知道,在Java領(lǐng)域有非常多的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)絕大多數(shù)是被稱之為JCP這樣的專家組織提出來(lái)的,但有一部分是由JUG這樣的民間開(kāi)發(fā)者組織發(fā)起的,為此還有一個(gè)和它匹配的專有名詞。在美國(guó)被稱之為DevRel,翻譯過(guò)來(lái)就是開(kā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)的落地。另外,我們也都看到,早期很多開(kāi)源項(xiàng)目的發(fā)展,都是依賴于某一家或某幾家企業(yè)。如,F(xiàn)acebook和Twitter,我認(rèn)為是當(dāng)時(shí)最具開(kā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)更多城市的開(kā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)想提的,人的變化。
開(kāi)源是一個(gè)全球性的經(jīng)濟(jì)活動(dòng),在開(kāi)源領(lǐng)域,我們有機(jī)會(huì)接觸到那些受人尊敬但距離看似遙遠(yuǎn)的技術(shù)大牛。但開(kāi)源為我們提供了一個(gè)途徑,如果大家能夠參與到社區(qū),無(wú)論是使用開(kāi)源項(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í)借鑒的地方。