我在阿里巴巴的開源十年
這就是阿里那群嚷嚷要做開源的“趕集人”。
在圈內(nèi),開源一度被稱為“集市”。相對封閉嚴格的傳統(tǒng)企業(yè) IT 文化,開源更強調(diào)自由開放的社區(qū)文化。InfoQ 追蹤阿里巴巴多年,找到了阿里巴巴整個開源發(fā)展過程中的數(shù)位關(guān)鍵”趕集人“,試圖了解這一中國近十年極具代表性的科技公司的開源歷史。
過去十年,阿里巴巴經(jīng)歷了 淘寶的壯大,阿里云計算的成立,上市,雙 11 節(jié)節(jié)攀升的流量,每一個階段都有其存在的意義和目標(biāo),開源也隨著這些變化而在不同的時期表現(xiàn)出不一樣的狀態(tài)。不變的是,阿里這群“趕集人”探索出了一條自主開源的道路,一走就是十個年頭。
開源的拓荒者們
2008 年——2010 年:Dubbo 初出茅廬,F(xiàn)astjson 還在醞釀,一眾有著開源精神的開發(fā)者加入
2008 年對中國人來說是復(fù)雜的一年,冰災(zāi),大地震,奧運會接踵而至。這一年,Dubbo 項目誕生了,只是當(dāng)時還沒有叫 Dubbo 這個名字,還是阿里內(nèi)部的一個系統(tǒng),所有人恐怕都想象不到,這個項目日后可以成為阿里巴巴整個開源歷史最好的“見證者”,并在十年后得到了如此多開發(fā)者的歡迎。

Dubbo 初創(chuàng)團隊
這一年,Ant Design 項目的 核心推動者玉伯 趕在奧運會排查臨時人口之前,從北京中科院軟件所離開,憑著自己幾年來在程序開發(fā)上的經(jīng)歷和對新興前端行業(yè)的看好,來到杭州加入了淘寶 UED —— 彼時中國最好的前端團隊。
這一年,F(xiàn)astjson 和 Druid 項目的核心推動者高鐵還在金蝶用 Java 開發(fā)一些基礎(chǔ)組件;而如今 Flink 項目的核心推動者莫問早已因為馬云在校招宣講會上一場激情滿滿的演講而熱血沸騰,隨后選擇加入這家在北京還沒有多少人的公司;《Java 開發(fā)手冊》的主要作者孤盡也還不知道自己會在畢業(yè)之時依靠“霸面”進入阿里巴巴。
2009 年,Dubbo 團隊?的主要工作就是修復(fù) Bug。2010 年,整個團隊覺得這套架構(gòu)實在是不堪重負,于是決定重寫。
行業(yè)技術(shù)領(lǐng)袖章文嵩博士的到來,為阿里帶來了他深耕多年的開源理想。他認為開源不僅能讓技術(shù)本身受益,也會幫助讓技術(shù)人成長。在章文嵩博士的大力倡導(dǎo)和支持下,開源文化在阿里這片土壤上逐漸萌芽,并有了健壯的生命力。當(dāng)時的淘寶和阿里 B2B,已經(jīng)有很多團隊在推動開源。阿里 B2B 決定先將 Dubbo 項目開源出去,于是在 2011 年,整個團隊陸續(xù)對文檔做了系統(tǒng)化的梳理,但并沒有進行大規(guī)模的強推廣。
總體來看,這一時期,阿里巴巴的整個開源還處于朦朧狀態(tài),但已經(jīng)有了初步探索,一批有著開源精神的工程師陸續(xù)加入。?馬云也把王堅從微軟亞洲研究院常務(wù)副院長的位置挖來,開始計劃如何解決計算力的問題,這是當(dāng)時整個公司面臨的重大危機,而阿里云就在這個契機誕生了。
2009 年 9 月 10 日,阿里巴巴集團慶祝創(chuàng)立十周年,同時成立阿里云計算。這一年,還沒有多少人認為云計算可以搞得起來,更別提推動開源的發(fā)展了。
一眾開源項目涌現(xiàn)
2011 年——2012 年:Dubbo 的用戶越來越多,F(xiàn)astjson 正式開源,開始基于 Hadoop 和 HBase 構(gòu)建大數(shù)據(jù)體系
“阿里云成立之后,我感受最深的就是自研技術(shù)體系(飛天)的建立,這是我第一次強烈感覺到阿里非常重視技術(shù),這個階段也培養(yǎng)了很多技術(shù)實力很強的人才,也讓我感受到阿里的技術(shù)體系越來越開放”,大數(shù)據(jù)實時計算引擎 Flink 帶頭人的莫問如是說道。
玉伯、高鐵、孤盡、莫問...... 這群有著技術(shù)實力的開發(fā)者,同時有著強烈的開源情懷,他們的加入讓阿里巴巴內(nèi)部自發(fā)掀起了一波開源的高潮。這段時間,阿里巴巴內(nèi)部出現(xiàn)了一眾不錯的開源項目,F(xiàn)astjson、Druid、Sea.js、Arale 等。
“最開始進行軟件開發(fā)時,我沒有參與到太多的開源工作中,但一直對 Linux 有所接觸,受到開源精神的影響,當(dāng)時就覺得開源是一件非常偉大的事情,阿里內(nèi)部當(dāng)時的開源項目主要來自于淘寶系和 B2B 系。當(dāng)時的淘寶系選用 GPL 協(xié)議居多,而 B2B 系選用 Apache 協(xié)議的比較多,我當(dāng)時也就給 Fastjson 選了 Apache 的協(xié)議,而做 Druid 的時候其實沒想開源,剛好當(dāng)時 B2B 平臺有一個開源計劃,就一起開源出去了?!备哞F如是說。

阿里第一代開源人、FastJson&Druid 創(chuàng)始人高鐵
這個時期,另一邊的支付寶也在試圖逃離閉門造輪子的怪圈。技術(shù)環(huán)境的割裂造就了前端基礎(chǔ)技術(shù)的風(fēng)潮和大量崗位,與當(dāng)時國內(nèi)大多數(shù)的前端團隊一樣,支付寶也在閉門造自己的前端輪子,大量借鑒了 YUI 的組件架構(gòu)體系,底層使用了 Java 生態(tài)里的 MVN 進行依賴管理和構(gòu)建,所有的輪子和釘子都要內(nèi)部自造,和前端社區(qū)越來越遠,而解決方法就是開源。
2012 年 4 月 29 日,玉伯發(fā)了條微博,宣布要用開源的方式打造支付寶下一代前端框架,這在當(dāng)時是非常激進的。

后來,Sea.js/Arale/spm 套件開始在支付寶內(nèi)部和國內(nèi)開源界發(fā)展起來。
與此同時,Dubbo 也迎來了發(fā)展的小高峰,用戶越來越多,包括做汽車的、做證券的、搞水泥、電器,甚至有公司愿意為 Dubbo 付錢,希望出現(xiàn)問題可以請團隊的開發(fā)人員幫忙。
這一時期不僅出現(xiàn)了很多優(yōu)秀的開源項目,阿里巴巴的開發(fā)者也開始積極貢獻開源。莫問回憶道:“最開始,我們整個團隊做開源并不是從 Flink 才開始的,早在 2010 年,我們就開始用開源的 Hadoop 和 HBase 搭建大數(shù)據(jù)體系,用于處理搜索場景中的數(shù)據(jù),并把我們實踐成果貢獻給社區(qū)?!?/p>
相較于開源事業(yè)進展得如火如荼,阿里云 的進展卻并不順利。從 2010 年到 2012 年,阿里云經(jīng)過了最艱苦的三年。由于沒有成績進展,阿里云整個部門連續(xù)幾年都在集團拿最低分,辭職信和轉(zhuǎn)崗書陸續(xù)出現(xiàn)在王堅的郵箱里,幾乎所有人都認定阿里云不可能做出一套云計算系統(tǒng)。
整個國內(nèi)此時對云計算都沒有太多感覺,對移動互聯(lián)網(wǎng)的發(fā)展倒是頗為上心。
2012 年的雙 11,天貓?zhí)詫毜目偨灰最~從 2011 年的 52 億人民幣上升到 191 億,打破了全球網(wǎng)購單日交易額記錄,阿里坐穩(wěn)了中國電商時代的霸主位置。
這時,移動化的浪潮來了。
在很多人還沒有回過神的時候,微信在 2013 年 3 月份實現(xiàn)了用戶過億。當(dāng)時的淘寶也做了手機端,但定位更多是“多端”,意思是主要在電腦上,只是附加了手機端可以實現(xiàn)一些簡單的功能。所有人都感受到了移動化將帶來的巨變,阿里也開始尋求改變。
2013 年,整個支付寶乃至阿里的所有業(yè)務(wù)平臺都走到了十字路口,集團宣布:ALL IN 無線。
一場變革就此拉開序幕......
巨變來臨
2013 年——2016 年 :支付寶前端解體,集團強化 One Company 開始進行架構(gòu)調(diào)整,不少項目合并,開源進展緩慢。
在“ALL IN 無線”戰(zhàn)略宣布之前,前端和業(yè)務(wù)的結(jié)合非常緊密,UED 和設(shè)計在公司擁有很高的話語權(quán),每半年搞一次前端性能優(yōu)化戰(zhàn)役。在《那些年的體驗設(shè)計部》系列文章中對這一時期的描述是:
這是個一行 JS 代碼的錯誤就可以造成全站交易下跌的時代,也是 PC 前端們最后的黃金時代。
在“ALL IN 無線”戰(zhàn)略宣布之后,很多人被從原有部門放到戰(zhàn)場最前線,有人不適應(yīng)走掉了,后續(xù)的再補上。60 個人左右的支付寶前端開發(fā)部面臨解體,一半以上的人被抽調(diào)支持支付寶無線業(yè)務(wù)。面對巨大的變化,整個團隊人心渙散,所有人都面對非常艱難的抉擇:留下還是離開?

Ant Design、AntV、Egg 等前端開源項目帶頭人玉伯
最終,玉伯還是決定和剩下的 17 個人一起留在了這個團隊,支持主要迭代是給各種頁面加二維碼的 PC 端業(yè)務(wù)和進入死胡同的自研前端技術(shù)體系。調(diào)整完的第一次周會,所有人都很沉默,比起鼓起勇氣做抉擇離開的人,留下的人的心態(tài)更多是未知和擁抱變化。
除了人員調(diào)整,當(dāng)時的阿里巴巴集團要強化 One Company,開始進行架構(gòu)調(diào)整。技術(shù)層面,整個公司大統(tǒng)一,就希望不要重復(fù)建設(shè),但凡相同的項目都要合并。以 Dubbo 為例,當(dāng)時的淘寶有一個項目叫做 HSF,也是一個中間件服務(wù)框架,跟 Dubbo 做的事情高度重合。
HSF 項目的作者林昊(畢玄),也是當(dāng)時國內(nèi) Java 領(lǐng)域的知名技術(shù)領(lǐng)袖。在 OSGi 非常流行的時候,畢玄可能是國內(nèi)能夠把 OSGi 解釋的最清楚的人之一。HSF 和 Dubbo,雖然做的事情高度重合,但是設(shè)計理念不怎么一樣,雖然有些碰撞,但最終目的還是為了“強強聯(lián)合”。
不久之后,Dubbo 團隊調(diào)整,去到了各個地方。從外面看來,Dubbo 項目從 2014 年之后就再也沒有更新過。
整個公司的變動讓很多開源項目的維護人員發(fā)生變化,有些項目在這個過程中進展緩慢,有些則停滯不前。
在這些調(diào)整之后,阿里巴巴迎來了里程碑式的一年。
2014 年 9 月 19 日,阿里巴巴集團于紐約證券交易所正式掛牌上市,股票代碼“BABA”。
在這之后的幾年時間內(nèi),阿里巴巴的業(yè)務(wù)進入高速發(fā)展階段:與螞蟻金服集團完成重組,螞蟻金服成為支付寶的母公司;阿里健康成為阿里巴巴集團的子公司;阿里巴巴集團與螞蟻金融服務(wù)集團聯(lián)合宣布成立“口碑”;宣布成立阿里音樂集團;收購優(yōu)酷土豆集團;正式成立阿里大文娛...... 大量開發(fā)者開始將精力投入到業(yè)務(wù)發(fā)展中,很難有時間和精力來做開源,尤其是當(dāng)這個項目和個人的 KPI 毫無關(guān)系時。
與此同時,一直在北京辦公的莫問也遇到了問題,業(yè)務(wù)做得不甚理想,于是決定拉上另一個小伙伴一起研究 Flink。當(dāng)時,莫問身在阿里最核心的前線戰(zhàn)場——搜索團隊,因為覺得“快”是未來很重要的趨勢,所以堅定地投入到實時計算的研究中。如上文言,F(xiàn)link 項目最早啟動時,只有兩個人。
莫問說道:“一個項目肯定要有資源,也就是人,但那會兒想在阿里找?guī)讉€有實力還有時間的人實在太難了。阿里內(nèi)部的競爭也非常激烈,業(yè)務(wù)發(fā)展很快,從寫下 Blink(Flink 在阿里的內(nèi)部版本)第一行代碼開始算,也只有大半年的時間準(zhǔn)備,然后就需要支持第二年的雙 11?!?/p>
在 Flink 整個團隊逐漸迭代,慢慢發(fā)展的過程中,孤盡也開始了《Java 開發(fā)手冊》的漫漫推廣路。

《JAVA 開發(fā)手冊》主要作者孤盡
“2016 年 3 月,我在 ATA(注:阿里內(nèi)部技術(shù)論壇)上發(fā)表了第一版《阿里巴巴集團 JAVA 技術(shù)規(guī)范》。覺得好的人有之,覺得不好的也很多。還有人覺得我膽子太大了,去知乎發(fā)帖,問孤盡是誰,怎么敢給整個阿里集團寫技術(shù)規(guī)范?每次被群嘲,晚飯我就讓食堂阿姨多給我打兩個雞腿,安慰一下自己。有批評,證明有關(guān)注,有關(guān)注,就有希望。那個時候,一個部門一個部門的去游說,失敗了一次,就試第二次。失敗了 99 次,那也還要再試一次,沒別的,湊個整數(shù)唄?!?br/>
在這個過程中,阿里巴巴將開源從最早期的個人行為逐漸發(fā)展成組織行為,但還未在集團層面推出統(tǒng)一的規(guī)劃。?很多開源項目也在與商業(yè)價值的碰撞中漸漸迷失,找不到繼續(xù)下去的動力。
與開源的低沉相對的,是阿里云的沸騰。2015 年,在計算界的奧運會 Sort Benchmark 中,阿里云計算 100TB 數(shù)據(jù)排序只用了不到 7 分鐘,把 ApacheSpark 之前創(chuàng)造的 23 分鐘世界紀錄縮短了一多半。結(jié)果很明顯,阿里云成為了國內(nèi)第一家擁有完整云計算能力的企業(yè)。
全面進擊
2017 年至今:開源所幸,云之爆發(fā)
2017 年,阿里巴巴雙 11 第一次啟用交易大屏,并面向全球直播,看著屏幕上不停滾動的數(shù)字,莫問整個團隊的工程師都緊張到不行,因為這是 Flink 第一次支撐阿里巴巴雙 11 幾乎所有的核心業(yè)務(wù)。

Flink 在中國的主要推動者莫問
“雙 11 之前,我們沒有大肆宣揚這件事情,因為不知道結(jié)果如何。雙 11 剛開始,各種戰(zhàn)報就出來了,到一百億用了多長時間,全球交易量是如何分布的,哪個類目排名第一等等,這些排名都是基于 Flink 做的,這就相當(dāng)于我們的第一次大考?!蹦獑柣貞浧甬?dāng)時的場景說道。
在雙 11 之前的那個國慶節(jié),整個團隊的工程師七天都沒有休假,自發(fā)來到公司,即便在家里也是各種調(diào)試,各種修改,這樣的狀態(tài)一直持續(xù)到雙 11 的倒計時開始,整個團隊才覺得已經(jīng)達到穩(wěn)定狀態(tài),不需要再調(diào)整了。
當(dāng)平穩(wěn)度過雙 11 時,那一刻覺得一切都值了?!獑?br/>
后面的故事,大家都知道了,阿里巴巴收購了 Flink 的母公司 Data Artisans,并決定將所有改動逐一推回到社區(qū)。
就在 Flink 整個團隊為了雙 11 奮戰(zhàn)的同時,出身江南卻自帶東北大漢氣質(zhì)的北緯帶著團隊決定重啟 Dubbo 項目,而 Dubbo 的轉(zhuǎn)機在于阿里云的爆發(fā)。
喚醒沉睡獅子“Dubbo”的北緯
2017 年,阿里云發(fā)現(xiàn)有一批客戶上云之后,想要用 Dubbo。因為他們 Dubbo 已經(jīng)用的很熟了,不想因為上云而被迫改變自己的使用習(xí)慣。真正的客戶提出要求了,提升客戶對 Dubbo 的信心,成為了一件在公司層面有價值的事情。
吸取了之前的教訓(xùn):開源這條路,一個人走得很好,一群人可以走的很遠,必須依靠社區(qū)的力量共同維護。北緯整個團隊下了一個重大決定:將 Dubbo 捐獻給 Apache 基金會。
理想是豐滿的,現(xiàn)實是骨感的。在孵化期間,整個團隊遇到了很多問題:以往,團隊成員習(xí)慣了通過釘釘溝通,而按照規(guī)定在基金會中需要通過郵件交流;對于新的功能和特性的加入,團隊成員需要考慮并詢問廣大社區(qū)參與者的意見,而不是自行決定。這背后,本質(zhì)上是從追求效率第一,轉(zhuǎn)為以共識、透明、公開為重。
所幸,這不是阿里與 Apache 基金會的第一次觸電。2016 年,分布式消息中間件 RocketMQ 首次順利從 Apache 畢業(yè),積累了豐富的經(jīng)驗。沿著”前輩“探出來的路,最終 Dubbo 僅僅用了 15 個月就成功畢業(yè)。
經(jīng)過長時間的人員調(diào)整,玉伯所在的團隊在 Ant Design 的推廣上也迎來了曙光。Ant Design 的中后臺設(shè)計語言的定位和推出時機是非常合適的,它開始在公司外部收獲大量關(guān)注,GitHub 的 Star 數(shù)直線上升,2017 年 3 月突破了一萬 Star,2018 年 3 月達到了兩萬的 Star 數(shù)。
玉伯回憶道,有次 Ant Design 團隊在西湖邊開了一場開發(fā)者沙龍,來了位高高帥帥的德國小哥,操著一口不甚流利的普通話。原來,在社區(qū)浸泡許久的他,不僅畢業(yè)論文選擇了 Ant Design 做主題,更吭哧吭哧學(xué)起中文,畢業(yè)后一口氣從德國跑到杭州來工作,愛上了這個千年古城。
另一方面,2017 年春天,《Java 開發(fā)手冊》?正式發(fā)布,已有超過 260 萬位工程師下載及查閱手冊,在數(shù)以千計的企業(yè)應(yīng)用中,手冊成為受業(yè)界認可的開發(fā)規(guī)范,配套的 P3C 插件在 GitHub 上的 Star 數(shù)接近兩萬。
今年初,InfoQ 統(tǒng)計了國內(nèi)在 GitHub 上較活躍的?7 家一線互聯(lián)網(wǎng)公司?的 2800 多個項目。在 Star 數(shù)最多的項目前十名中,六個項目均由阿里巴巴貢獻,所有項目的 Star 數(shù)更超過 66w,單從數(shù)字上來看,阿里也無愧是對開源貢獻最大的中國公司之一。即便已經(jīng)取得了很不錯的開源成果,但依舊是靠開發(fā)者的自驅(qū)動。幸運的是,這些開發(fā)者在開源和商業(yè)價值之間找到了平衡,就像 Dubbo、Ant Design 一樣。
2019 年 9 月 27 日,賈揚清正式成為 阿里巴巴開源技術(shù)委員會負責(zé)人。賈揚清在采訪中說表示,過去,這些開源項目的成長更多是依靠阿里巴巴內(nèi)部員工與開源社區(qū)的溝通和交流。如今,阿里巴巴意識到這不能僅僅依靠開發(fā)者的一腔熱血,而需要一套成熟的方法論幫助開發(fā)者更多地參與開源,貢獻開源,并從組織上提供一系列支持與保障,這就是阿里巴巴成立開源委員會的初心。

Caffe 之父,TensorFlow、Pytorch 作者之一賈揚清
如今,阿里巴巴已經(jīng)明確將開源升級為集團的技術(shù)戰(zhàn)略之一,從擁抱開源、貢獻開源、自主開源升級為持續(xù)賦能開源。開源所幸,云之爆發(fā),開源的這波高潮也得益于云計算的全面發(fā)展。就像當(dāng)初沒有幾個人堅信阿里云可以成功一樣,也沒有多少人想到了云計算會對開源有何影響。
云計算的爆發(fā),讓科技公司意識到生態(tài)和開發(fā)者的重要性,而與開發(fā)者打交道最好的方式也許就是開源,一個優(yōu)秀的開源項目必然會存在一個優(yōu)秀的社區(qū),而社區(qū)可以輕易地將優(yōu)秀的開發(fā)者聚集在一起;此外,開源也會增加開發(fā)者對項目的信任度...... 種種原因讓開源成為現(xiàn)階段各大云計算公司想做的事情。
這些科技公司的加入也讓開源項目有了最好的落地場景,像雙 11 這樣的交易量和流量峰值是很難遇到的,經(jīng)歷了雙 11 場景洗禮愈加成熟可靠的 Flink 充分驗證了科技公司在推動開源上的重要作用。
但是,將一批真正有開源情懷并愿意為之堅持的開發(fā)者聚到一起是不容易的。高鐵在采訪最后說道:“我經(jīng)常在晚上和周末花時間在解決社區(qū) issue。Fastjson 和 Druid 就像我的兩個小孩,養(yǎng)了快 10 年,有幸得到很多人的支持和使用,這是大家對我的信任,我必須維護好?!?/p>
走到現(xiàn)在,開源陪伴著阿里這群工程師度過了十年之久。想到當(dāng)初霸面進入阿里,孤盡還記得當(dāng)時說了一句:“你們錯過了我,就錯過了一個時代?!惫卤M特別感激那個笑得好看的 HR 大哥,并沒有因為他的不知天高地厚而生氣,相反,他破例給了一次面試的機會?!半m然到現(xiàn)在,我還是沒能改變一個時代,但我很開心,我給世界帶來了一點點改變?!?/p>
是啊,一個“趕集人”給世界帶來了一點點改變,一群“趕集人”又會給世界帶來多大的能量呢?這是阿里開源史的重要縮影,這也是中國開源史不可或缺的一筆。幸運的是,一切正在進行中,結(jié)局還值得期待。
??