馮嘉
200多人同場競技,經(jīng)過一輪輪的答題淘汰,最終決出闖關成功的勝者。這是Apache RocketMQ Meetup現(xiàn)場的暖場游戲SuperCoder挑戰(zhàn)賽。這種帶有顯著技術特征的游戲,不僅是工程師文化的延伸,也是Apache RocketMQ Meetup不同于其它開發(fā)者活動的地方。
RocketMQ自進入Apache基金會以來,無論是技術研發(fā),還是社區(qū)生態(tài),都取得了飛速發(fā)展。今天,我和大家分享三個關鍵詞—創(chuàng)新、變化與社區(qū)。在我看來,這幾個關鍵詞一定意義上體現(xiàn)了Apache RocketMQ社區(qū)的極客文化,也是我們一直追求的、有別于國際上其它開源項目的不同之處。
創(chuàng)新
第一個關鍵詞是創(chuàng)新。
Apache RocketMQ是在阿里巴巴“雙11”的場景下沉淀出來的,是一款經(jīng)過大規(guī)模生產(chǎn)檢驗的分布式消息引擎,相比于國際上同類的開源項目,我認為,它的最大特性是穩(wěn)定和可靠,因此非常適合金融行業(yè)的場景。開源后,我們基于穩(wěn)定可靠,做了非常多的技術升級與創(chuàng)新,并把應用場景從金融行業(yè)擴展到面向整個基礎設施,包括云端、互聯(lián)網(wǎng)、流計算、數(shù)據(jù)處理和AI,這是RocketMQ社區(qū)未來技術演進和創(chuàng)新的方向。
另一項創(chuàng)新體現(xiàn)在社區(qū)運營層面,自從RocketMQ捐獻給Apache基金會后,我們便開始采用Apache Way來運營社區(qū),隨著社區(qū)理念的加深,RocketMQ也積累了自己的運營經(jīng)驗,并以RocketMQ Way的形式反哺給社區(qū)。
創(chuàng)新是開源項目能夠持續(xù)發(fā)展的原動力。在產(chǎn)品同質(zhì)化越來越嚴重的情況下,如何讓用戶選擇你,并且是堅定不移的支持你,是我們一直在思考的問題。我認為,創(chuàng)新是其中最為關鍵的因素。因此,你會看到RocketMQ的新技術、新特性以及新的生態(tài)產(chǎn)品都會有別于傳統(tǒng)做法,這些都是我們的工程師與用戶進行不斷交流討論得來的最真實的需求與痛點。
同時,這也是我們舉辦Meetup的重要使命之一。我們還特意組織了一個環(huán)節(jié),叫做“Meet with Apache RocketMQ Committers”,希望社區(qū)的專家能夠近距離傾聽我們客戶的心聲,接受來自用戶的輸入。
創(chuàng)新一方面來自客戶的真實需求,另外一方面則來自學術圈。這是Apache RocketMQ社區(qū)一個重要的努力方向,也是我們團隊重要的工作方向之一。比如,最近我們在跟伯克利的一些頂尖實驗室進行技術交流與合作,今年即將發(fā)布的Apache RocketMQ 5.0會是一個重量級的架構演化,屆時我們會提供一些新穎的特性出來。
社區(qū)變化
第二個關鍵詞是社區(qū)變化。
在創(chuàng)新理念的影響下,我們看到了社區(qū)的變化,變得更開放和更包容,社區(qū)的工程師也更具工匠精神。
RocketMQ自進入Apache孵化以來,社區(qū)對內(nèi)核代碼等做了大量的優(yōu)化,局部做了不少重構。社區(qū)最近發(fā)起的RIP(RocketMQ Improvement Proposal)改進計劃,便體現(xiàn)了社區(qū)協(xié)作上的變化。
以前,開發(fā)者都是通過issue來提交疑似bug,同時也會將feature request提交到issue列表里。然后,我們通過issue列表來跟蹤和管理feature request。但這種方式對于feature request的管理并不高效,所以我們開始把feature request的提交、跟進和管理拆分出來,以RIP項目的形式來運營,開發(fā)者使用社區(qū)的template來提交feature request,經(jīng)過[DISCUSS]和[VOTE]的流程后,進入社區(qū)開發(fā)流程,即將發(fā)布的4.4.0版本里面的ACL和軌跡消息的產(chǎn)品特性就是源自社區(qū)的RIP。當然,還有我們最近非?;馃岬亩嗾Z言SDK(C++、 Python、Go、NodeJs等)和Spring集成。
另外一個變化來自我們社區(qū)的組織形態(tài)。大家知道,在Java領域有非常多的標準,這些標準絕大多數(shù)是被稱之為JCP這樣的專家組織提出來的,但有一部分是由JUG這樣的民間開發(fā)者組織發(fā)起的,為此還有一個和它匹配的專有名詞。在美國被稱之為DevRel,翻譯過來就是開發(fā)者關系。這樣的組織對社區(qū)的發(fā)展至關重要,像一個JUG的組織者就來自巴西,每次Java One基本上都會來分享她們的經(jīng)驗,怎么維護這個組織,為JCP貢獻了哪些技術標準等。
Java語言是我個人非常喜歡的語言之一,我也特別希望亞洲范圍內(nèi)有這樣一個JUG組織,推進Java的發(fā)展與新標準的落地。另外,我們也都看到,早期很多開源項目的發(fā)展,都是依賴于某一家或某幾家企業(yè)。如,F(xiàn)acebook和Twitter,我認為是當時最具開源極客文化的兩家公司。
今天,大家有機會聚在一起,是因為Apache軟件基金會,因為背后有來自阿里巴巴、中國移動、滴滴出行、平安銀行等上百家企業(yè)的真實案例與貢獻支持。當然,我們也非常高興地看到,社區(qū)在自發(fā)的組織一些線下活動,以更高的頻率下沉到更多的城市,讓國內(nèi)更多城市的開發(fā)者也可以參與線下互動。這也是RocketMQ社區(qū)的一個巨大變化:現(xiàn)在有了更多的來自社區(qū)的自發(fā)組織,就像JUG這樣的組織一樣,后面我們也會邀請相關的同學來給大家分享社區(qū)里的一些趣聞。
最后一個變化,也是我重點想提的,人的變化。
開源是一個全球性的經(jīng)濟活動,在開源領域,我們有機會接觸到那些受人尊敬但距離看似遙遠的技術大牛。但開源為我們提供了一個途徑,如果大家能夠參與到社區(qū),無論是使用開源項目,還是以contributor的身份參與社區(qū)貢獻(架構演進、功能完善、體驗優(yōu)化和文檔建設),都有機會和技術大牛一起協(xié)作,進行更多的交流。從中你會發(fā)現(xiàn),不僅僅自己的技術實力發(fā)生了變化,視野格局也會有很大的提升。
以我自己為例,在畢業(yè)那會兒,JavaEE和Spring基本上是Java領域的一個技術標配,那個時候給我留下深刻印象的兩個技術牛人,一個是Spring的締造者Rod Johnson,一個是Hibernate的作者Gavin King,不管是代碼,還是從他們在社區(qū)的activity來看,都有很強的極客范,對我本人的技術發(fā)展也提供了很多學習借鑒的地方。