崔寶秋國際開源經驗在小米開花 | 開源英雄

【編者按】崔寶秋的開源人生,來源於內心的真正熱愛,和一路的升級打怪。從少時與計算機結緣到成爲自由軟件信徒,從IBM、雅虎、LinkedIn 到小米這一路走來,從一個開源的追隨者成長爲開源的推動者,小米的開源文化、豐碩的成果輸出、吸引開源創造者,他始終都是核心所在。本期《》,讓我們一起走進崔寶秋的人生。

採訪 | 劉韌

作者 | 谷磊、周揚 責編 | 唐小引

出品 | 《》編輯部

2012 年 6 月,北京,崔寶秋帶着簡單的行囊,落地首都機場,受到雷軍的召喚,他準備加入小米。

告別家人,他在望京租了間房子,落了腳。

大學與雷軍睡上下鋪的崔寶秋,是上世紀 90 年代赴美留學的計算機博士、早期自由軟件和開源軟件的信徒、GNU Emacs 的貢獻者……在美讀博和在 IBM、雅虎、LinkedIn 的工作經歷,讓他看到了開源在不同土壤落地的過程。重回北京,他除了想在小米幹出一番事業外,腦海裡還萌生了一個想法——讓純粹的開源在中國落地。

時間回到 1999 年,接入因特網不久的中國政府有意使用 Linux,可 Linux 重要貢獻者、開源運動旗手 Eric Raymond 對此公開表達了消極甚至反對的態度,他因剛發表的新書《大教堂與集市》而名聲大噪。此時,自由軟件信徒崔寶秋正在紐約州立大學石溪分校念博士,他發郵件與 Eric Raymond 爭論,指出開源應無國界,並認爲中國政府能夠採用 Linux 的話,會大大推動 Linux 的發展,爲社區帶來大量的開發者。這封郵件上了 Linux 每週新聞(Linux Weekly News)網站,參與討論的還有 Richard Stallman——自由軟件的精神領袖和 GNU 系統、自由軟件基金會的創立者。

崔寶秋對自由軟件的熱愛很大程度上來自 GNU,他喜歡 GNU 的程度甚至超過了 Linux,畢竟 Linux 是在 GNU 這塊土壤上成長起來的。他尤其喜歡 GNU Emacs,這是一個強大的編輯器和編程環境。1995 年,他就開始使用 GNU Emacs,並快速成爲高級用戶,做了大量的個人定製開發。若干年後,他在 Emacs Org Mode 中貢獻的 DocBook 格式導出工具被 GNU Emacs 正式接受,並在 2009 年把代碼捐獻給了自由軟件基金會。

“回饋社區的過程很有意思。”正是遵循了開源精神,崔寶秋的代碼進入到 GNU 裡,讓他實現了多年的夢想——讓自己的代碼跑在每個人的電腦上。

從自由軟件的信徒到貢獻者,崔寶秋愈發認識到開源對中國的重要性。尤其在基礎軟件領域,很多技術需要長期的積累和投入,是軟件行業的金字塔底座,但主導權仍掌握在國外少數公司手裡,開源則是幫助我們打破這個局面的最佳模式。“開源是卡不住的,它是自下而上的。”崔寶秋躍躍欲試,想把他在硅谷積累的經驗一步步移植到中國。

加入小米後,他主導了小米的 CBA(雲計算——大數據——人工智能)技術變革路線,全面擁抱開源。他從零開始打造小米的 HBase 團隊,培養出了一個又一個 HBase Committer,每位 Committer 的成長都有崔寶秋的呵護。“教這些年輕工程師如何快速融入社區,如何堅持自己正確的觀點,說服社區中的意見領袖,把先進的代碼回饋社區。同時,也要讓國外的開源項目負責人真正瞭解中國工程師的技術水平。”說起這套開源打法,崔寶秋語調升高。

他鼓勵小米工程師到硅谷參加國際開源技術會議,一字一句地教年輕程序員講英文 PPT,從寫演講腳本到英文單詞的重音等。團隊用一週做出來的代碼優化,要花數週甚至數月來向開源社區證明這個算法的正確性,要說服社區的技術大拿和負責人,是一個極耗精力的過程。

最終,大量來自小米 HBase 團隊的代碼放進了 HBase 代碼庫裡,其中包括一個將性能優化提升了近 5 倍的改進,這個改進讓全球所有的用戶受益。崔寶秋笑了,他帶來的開源種子終於在中國生根,在小米開花。

愛上計算機

對一個東西的好壞評價,最重要是看它有沒有創造性。

幼時的崔寶秋喜歡畫畫,夢想當個畫家。他總愛拿着粉筆在地上、牆上畫來畫去,照着小畫冊臨摹《西遊記》和《三國演義》裡的各種人物,成果時常得到大人的讚揚。

父親在高中教數學,對他影響很大,到了學齡階段,寶秋的愛好也慢慢轉向了數學。在老家的閣樓裡見到父親讀大學時的大部頭數學書,他非常崇拜,開始仰慕數學專業,可父親對他說:“今後考大學時,這個專業可以不考慮,重複性的事太多,很難有創造性。”

轉眼間到了高中,他在訂閱的《中學生》雜誌上看到了 Basic 語言寫的程序,覺得很新奇,“但也不知道是幹什麼用的。”縣城裡沒有計算機,這個新事物對他來說有點奇妙。

1987 年高考,出於對數學的熱愛和對計算機的好奇,他選了武漢大學計算機科學系。

大學時代的崔寶秋

武大校園很美,尤其是櫻花大道,崔寶秋的宿舍在櫻園,一個房間四個人,每天盡享美景。

軍訓時,得知很多同學高中就開始接觸計算機,有的參加過競賽,好幾個同學都在練盲打,崔寶秋有些不安:自己連鍵盤都沒摸過。

人生第一次上機的時刻到了,他和同學來到機房,裡面乾乾淨淨,像個高科技空間,每次進出都要換拖鞋。

在這裡,他第一次見到了摩托羅拉 68000 處理器,一個顯示器,一個終端陪他開啓了專業之路。

崔寶秋很享受敲鍵盤的聲音,且愛上了編程,凡是有寫程序的專業課都很喜歡。操作之後打印出簡單的程序,“那就是我的創造性成果”,“你可以讓計算機做很多東西”。

同學們都在玩兒《生命遊戲》,一個細胞的下一刻生死,取決於相鄰八個方格中活着或死了的細胞數量,崔寶秋覺得很神奇,“我對計算機的第一好感是它讓你有了創造力。”

因爲愛好做出《繪星》

崔寶秋把 BGI(Borland Graphics Interface)全都吃透了,裡面的字體也被他逆向工程搞了出來。

武漢大學計算機科學系招了三個班,軟件專業兩個班,硬件專業一個班,每班 25 人,崔寶秋在軟件 2 班。班裡有個男生叫雷軍,聰明又勤奮,爲了學習,他戒掉了午睡的習慣。大二,崔寶秋和雷軍分到同一個宿舍,兩人上下鋪,經常交流專業知識,“雷軍在計算機領域的認知和探索,當時遠遠超過了我們這些同齡人。”

大二結束,雷軍修完了大學所有學分,去北京中關村電子一條街闖江湖。一次回來,他在宿舍跟崔寶秋說:“寶秋,我在做加密軟件‘黃玫瑰’,你幫我設計一個 Logo 吧。”

“好啊!”崔寶秋答應後就開始準備。

他想用計算機來設計,而不是用手畫,就從零開始寫了個繪圖程序,286 電腦沒有鼠標,他就寫程序用鍵盤模擬鼠標,一點一點完成了 Logo 的設計。

寫程序時,崔寶秋用到了 Borland 公司的 Turbo Pascal,他很喜歡裡面的 BGI(Borland Graphics Interface)圖形功能。

從小喜歡畫畫的崔寶秋對 BGI 自帶的字體很感興趣。他通過逆向工程弄明白了 BGI 矢量字體的數據結構,再從英文原版教科書中找到一個高速畫直線的算法並把它編寫了出來,就可以快速繪製出精美的字體。

接着要做動畫效果,他用異或(XOR)運算操作讓字體漂移、活動起來。一次偶然的機會,崔寶秋髮現 BGI 繪製後的字體和自己的繪製算法異或疊加後不能完全清除,讓他百思不得其解。

沒有 BGI 的源代碼,他只能通過反彙編找到 BGI 的圖形接口,一步步跟蹤下來,才發現 BGI 的畫直線算法和自己的畫直線算法有點不同,BGI 的算法只有 30 多條彙編指令,非常精美。“原來 BGI 的畫直線算法和教科書上的不一樣。”就這樣,崔寶秋用反彙編和逆向工程,解決了繪圖軟件中用異或操作消除直線的困擾。

不過 BGI 系統自帶的字體太少,只有 4 種,而 AutoCAD 裡的字體有幾十種,且都是矢量字體,崔寶秋就把它們逆向弄了出來,轉換爲 BGI 矢量字體的格式,放進繪圖程序裡。此刻,崔寶秋如獲至寶、喜出望外,隨即在《計算機世界》雜誌上發表了文章《將 AutoCAD 矢量字體轉換爲 BGI 矢量字體》。

雷軍一直沒來要 Logo,而崔寶秋卻做得很享受,他把這個繪圖程序取名爲“繪星”,不久便獲得了省級計算機競賽一等獎。這個繪圖程序也很受同學們的喜歡,最誇張時,機房十幾臺電腦中有一半以上都在運行着他的程序。

後來,他把這組字庫給了在電子一條街打拼的師兄,“他有沒有拿去賣我不清楚,但這個東西還是挺值錢的。”

《繪星》用來編輯圖片、圖形,能兼容很多繪圖軟件的東西,還是很超前。崔寶秋用了很多辦法,滿足了新需求。

成功完成計算機自動作曲項目

癡迷編程的崔寶秋,在學校過着“宿舍——教室——機房”三點一線的生活,並享受其中。

在諸多老師中,崔寶秋很喜歡教信息安全的張煥國老師(武漢大學計算機學院教授),他是北方人,和藹可親、又高又帥。張老師經常和學生聊軟件加解密、防病毒等有趣的話題,崔寶秋很愛和他交流。

崔寶秋(右一)及同學與張煥國老師(居中)的合影

張老師也很惜才,在崔寶秋畢業前跟他說:“你的本科論文可以做一個計算機自動作曲項目,很有意思。武漢音樂學院作曲系的一位研究生在做這方面的論文,你們可以合作完成。”“那邊的計算機是蘋果系統,上面全是圖形,你可以去看看。”

崔寶秋好奇地去了武漢音樂學院,見到蘋果的 Macintosh 計算機,上面不僅有圖形、圖像,還可以播放音樂,他深受吸引,不懂音樂,更不懂五線譜,可爲了這個這項目,崔寶秋開始學習掌握五線譜。

武漢音樂學院的研究生哥哥很有文藝範兒,才氣過人,“他聽一遍曲子就能記住並彈出來。”研究生哥哥在計算機方面的知識需要崔寶秋幫他提升,崔寶秋耐心地教他 if—then—else 指令,兩人一起推進項目研究。

崔寶秋想,依託軟件來作曲,怎麼產生曲子數據文件呢?他又想到了逆向工程。

他用最短路徑破解了蘋果電腦上音樂軟件的樂曲編碼,知道了五線譜音樂是如何存放的,“這樣我就可以寫東西了”,“給我兩小節五線譜,討論各種邏輯算法後,就可以自動產生若干節音樂。”讓旋律不斷重複,而且能有些規律性的變化。

崔寶秋根據編碼數據生成音樂格式,開始演奏,電腦連接着 MIDI 設備,叮叮噹噹的音樂聲就出來了,研究生哥哥興奮得不得了。這對崔寶秋來說只是一個基本程序,可在他看來卻是作曲領域的一個很大的創新。他們要模擬不同風格的曲子,經過兩人的鑽研探索,圓滿完成研究任務。

1991 年,崔寶秋被保送讀本校的研究生,師從黃俊杰和張煥國兩位老師,研究計算機安全和公開密鑰密碼體制。

中科院計算所短暫讀博

電子郵件和 Mosaic 瀏覽器讓崔寶秋興奮不已。

崔寶秋本考慮研究生畢業後直接出國留學,可研二的暑期發現 GRE 考試準備晚了,來不及申請,只好暫時放棄。

此時他們做的加密軟件在加密卡上用得很廣,崔寶秋要經常跑武漢三鎮推銷加密卡,酷暑難耐,而舍友在考博,經常泡圖書館,他很羨慕,就跟張老師說自己也想讀博,張老師建議他報考中科院計算所,師從魏道政老師(計算機科學家),並幫他寫了推薦信。魏老師對崔寶秋的碩士研究內容以及曾經獲得過全國挑戰杯一等獎的經歷非常感興趣,很快就答應收他讀博,還全免了博士入學考試。

1994 年研究生畢業,崔寶秋開始了在計算所的博士生涯。

1994 年,中科院計算所,崔寶秋突然發現以前去圖書館查國外大學的資料、寄航空信來申請學校等方式,現在都可以用瀏覽器和電子郵件來完成了。計算所有工作站,有 Unix 機器,“我每天早上最興奮的就是先到機房,輸入用戶名和口令,打開電子郵箱看郵件。”

崔寶秋還經常用 Mosaic 瀏覽器看美國大學排名和教師簡介,在互聯網上查詢各種留學信息。Unix 工作站上的 Mosaic 已經能高速訪問非常多信息,比單色顯示器的 PC 機先進很多。他很興奮,“圖形界面太好玩了,傳遞的信息極其豐富,真是太舒服了!”

癡迷於開源的 GNU Emacs

“這裡有太多先進的東西,得趕快學起來。”

在計算所學習期間,崔寶秋一直放不下留學的事,就跟魏老師說:“我還是想出國。”魏老師的兒子跟他碰巧是同齡人,在美國讀書,所以魏老師非常理解和支持崔寶秋的想法,就批准了。

經過一番細心地準備和努力,崔寶秋收到了幾所美國大學的全額獎學金,權衡之後,他選擇了紐約州立大學石溪分校(現石溪大學),“計算機專業在美國排名不錯,關鍵是楊振寧教授在這裡任教,我們都很熟悉這所學校。”

在美國讀博時期的崔寶秋

留美前的崔寶秋常去計算所籃球場跟同學打球,休息時,喝冰鎮粒粒橙和可樂解暑,他說:“得好好享受一下,到美國就沒機會喝這麼爽的可樂了。”

等到了美國發現,可樂到處都是,吃飯都喝橙汁,物質上的差距還是挺明顯的。計算機水平跟國內更有着天壤之別。

這一年系裡共招了兩位中國留學生,崔寶秋拿的助教(TA)獎學金,做操作系統這門課的助教,授課老師是 Eugene Stark 教授,號稱 MIT 神童,也是 FreeBSD 的貢獻者,“據說 20 多歲就從 MIT 拿到計算機博士學位,一直在這裡任教。”

操作系統這門課和本科時的內容很不一樣,課本厚了很多,且上來就是讓學生們分組,用 FreeBSD、CVS 和 GNU Emacs 編輯器,真刀真槍地幹一個操作系統項目。

Stark 教授對學生要求非常高,要求他們分組合作完成作業項目,同時也要求兩個助教寫程序自動批改學生的作業。這讓崔寶秋有點傻眼,要學很多新東西,Unix 接觸得也少,幸好一個俄羅斯助教會寫 Unix 腳本,完成了批改作業的程序。雖不是很複雜的操作,卻讓崔寶秋有種井底之蛙的感覺。

“專業課方面沒什麼壓力,很容易拿到 A,主要在語言和溝通上,我得趕快適應英語口語。”

教授讓學生都用 GNU Emacs 做家庭作業和 OS 項目,崔寶秋很快被開源的 GNU Emacs 深深吸引。他在這裡最先接觸了 GNU,也很喜歡裡面的 GCC 和 GBD。

開源的代碼量非常大,裡面有操作系統內核、編譯器、數據庫、網絡、圖形等各方面的資源共享,還有免費的經典教材可以看。

“相比之下,國內的計算機教育和軟件資源太封閉了”,崔寶秋就像個窮苦的孩子,突然搬進一個輝煌的宮殿,所有東西都有源代碼,代碼質量也非常高,有了這些,他再也不用去做各種逆向工程了。他感到幸福而富有,在裡面讀大量的優質代碼,“這些代碼水平遠超一般人。”

本科時,他曾用圖形方法做的編譯器運行界面驚豔了大學同學,“但我們沒有真正去實現一個可生成代碼的編譯器,像 GNU 裡面的 GCC 這種真正完整的 C/C+語言的編譯器,還有 GDB 這種調試器等代碼都可以免費學。”

五年的博士生涯走得很順利,崔寶秋的博士論文研究了當時的人工智能領域的一個方面,主題叫 A System for Tabled Constraint Logic Programming(《列表的約束邏輯程序設計系統》),他的研究成果也都用開源代碼的形式集成到了他們實驗室開源的增強版 Prolog 系統裡,名字叫做 XSB。

讀博的五年中,崔寶秋花在 XSB 上的時間有足足四年,其中近兩年他都是這個系統的主力維護者之一。

XSB 是一個基於 GPL 許可證的自由軟件,崔寶秋的導師和師兄弟們是主要的貢獻者,還有不少貢獻者來自世界其他幾所大學。XSB 的重要用戶有 200 多家企業和高校,也分佈在不同國家。

如何與世界各地的貢獻者一起開發這個開源項目,如何滿足來自世界各地的用戶需求,是崔寶秋和師兄弟們經常討論的話題。四年的 XSB 開發經驗讓崔寶秋直觀、深度地感受到了開源的魅力,更讓他獲得了一些和社區共同打造一個開源項目的第一手經驗。

成爲 Emacs 貢獻者後收到 1 美元

Emacs 社區裡面流傳着這樣一句話——如果你教一個人使用一個新的 Emacs 命令,他就可以 hack 一晚上;如果你教他如何製作新的 Emacs 命令,他就能 hack 一輩子。

噠噠噠,崔寶秋在一旁看着 Stark 教授,像彈琴一樣在 Emacs 上寫程序,各種語法、顏色,熱鍵切換窗口,用 Shell 腳本語言打命令,還能快速修改。粗大的雙手,在 Emacs 的窗口上如彈鋼琴一般順滑地串起那些小動作,一下子激起了崔寶秋對 Emacs 的興趣。

“這個編輯器很酷炫啊,從來沒見過。”

崔寶秋評價自己“喜歡跟着水平高的人做事,也愛學習高手用的工具。”他對技術極客有一種傾慕之情。20 世紀 90 年代,Stark 教授就在家裡用電腦跟學生遠程對話、開會,這種行爲在崔寶秋看來是一種極客,而實現這一切的工具離不開開源的 FreeBSD。

“以前在中科院計算所接觸過 Vi(即後來的 Vim),但是和 Emacs 比起來差太多。”其實一直存在兩派觀點,支持 Emacs 的人認爲,可以在 Emacs 裡面完成所有事情,不像 Vim 還要找一個又一個插件;Emacs 是 Elisp(Lisp 的一個變種)的解釋器,Lisp 也是人工智能研究中最受歡迎的編程語言;Emacs 是適合硬核程序員的編輯器,最像操作系統的編輯器。支持 Vim 的則認爲,Vim 在各個服務器上是默認安裝的。

“Emacs 是開源的,裡面所有的東西,包括 Elisp 語言都是最自由的,任何東西都可以改。最重要的是,我身邊很多優秀的計算機科學家和編程高手都在用 Emacs。”崔寶秋承認自己被自由的力量折服,被榜樣牽引。

用 Emacs 不僅能寫程序、調試程序,還能管理日曆、讀郵件、讀新聞組、跟朋友聊天、玩遊戲、瀏覽網頁,甚至還能繪畫,崔寶秋被 Stark 教授影響後快速就沉浸在 Emacs 裡。

“Emacs 功能太強,只有想不到,沒有做不到。”崔寶秋不停地改寫程序,他愛上了這種高效率的體驗,中間遇到問題,就去讀源代碼,到社區裡去查找、詢問,慢慢對如何融入開源社區有了更多直接經驗。但早期他更多地是秉持着拿來就用的原則,有些代碼的改動沒有及時回饋到社區,在下一次版本升級中就被沖掉了,他不得不再返工、重做一遍。這件小事,讓他真切地感受到“回饋社區”的重要性,以及和開源巨人一起成長的重要性。不和開源巨人一起成長往往會加大軟件的維護成本。

2009 年崔寶秋在雅虎上班,閒暇時就會沉浸在 Emacs 的世界裡寫代碼。他發現了一個需求,Emacs Org Mode 缺少 DocBook 格式的導出,這種導出是他在 IBM 工作時經常用到的。這個需求很廣,他開始在源代碼上下功夫,進行了優化,並把整齊的代碼交給了社區。這讓崔寶秋的代碼最終進入到 GNU 裡。Richard Stallman 接受了這位中國程序員的代碼,還象徵性地付給了他 1 美元。

在 IBM 用開源,差點惹麻煩

“我們這代人就是想給別人創造價值”,當年寫的《繪星》就是免費給大家用的。

博士臨近畢業,崔寶秋最理想的工作是去 Research Lab(研究實驗室),可自己博士論文方向的研究比較窄的,AI 也不火,“當時,我們這個領域的師兄弟們都不會主動說自己是做 AI 的或者專家系統的,現在回頭來看,當時的 AI 已經進入寒冬。”最終,他去了 IBM,IBM 正要組建一個新一代數據庫技術的研究團隊,需要一些博士,可崔寶秋加入不久後這個新的團隊就被調整,被要求深度參與產品開發,崔寶秋開始負責 DB2 數據庫優化和內核等核心模塊的研發。

2000 年,IBM 公司,“萬一自由軟件傳染了 DB2 的代碼……”部門研發主管非常擔心,要公司的律師來評估風險,崔寶秋沒想到,就因爲用了自由軟件寫文檔,他差點惹上麻煩。

DB2 主要應用於大型應用系統,是一套關係型數據管理系統。崔寶秋進入 IBM 的 DB2 團隊,做查詢優化。這是一項要求很高的工作,他以博士的學術背景得以進入。

一直醉心於自由軟件帶來的便利性,崔寶秋很快革新了一些“老掉牙”的東西,幹了些份外的活兒。

文字處理的命令行被他創造的新文檔寫作工具取代了。那些傳統的,一摞一摞的測試文檔、設計文檔,只要經過崔寶秋設計的寫作工具導出,都可以直接轉換成 O’Reilly 的 DocBook 模式,變成一本本圖文並茂的書。

這種創新之舉用到了一系列開源工具,包括 Emacs,形成了一個開源的文檔寫作工具集,功能很強大,但很快引起了部門主管的警覺,建議公司的律師來看看,評估一下開源軟件的許可證會不會影響 DB2 這個商用軟件。

崔寶秋回答:“不會,我們只是用來寫文檔。”

按照奠基人 Thomas Watson Sr. 的設想,IBM 是企業辦公設備的核心提供商。可在千禧年到來之時,有些部門還是不太理解開源軟件,而顯得不知所措。

在這裡,崔寶秋因爲技術能力出色,晉升爲管理者。他可以用 Emacs 完成工作中的大部分任務,包括團隊管理和技術研發,在這期間也見證了 Git 的誕生。可他切身地感受到,在 IBM 用開源是一種包袱,“我喜歡開源的技術,喜歡互聯網的技術,做這種傳統的數據庫,越來越沒意思。”

2005 年,他有了一種壓力,覺得身在硅谷,如果不去互聯網公司,就太可惜了。一年後,一個偶然的機會,他離開 IBM 加入了雅虎。

見證 Hadoop 在雅虎長大

一切來得太快了,圍繞在三個明星公司之間的搜索大戰,尚未戰鼓喧天,就已經有了結局。做門戶網站起家的雅虎,手握流量密碼,卻未能在搜索競爭中通關,慣於覆盤的崔寶秋指出——輸在了技術投入。

2006 年,從 IBM 跳槽到雅虎,崔寶秋摩拳擦掌,準備大幹一場。

雅虎已深度擁抱了自由軟件,成立了開源項目 Hadoop,搜索引擎技術也是崔寶秋非常喜歡的領域,加入雅虎讓他有了如魚得水的感覺,在開源的利用上更加自如。

Hadoop 框架最核心的設計爲 HDFS 和 MapReduce。HDFS 爲海量的數據提供了存儲,而 MapReduce 則爲海量的數據提供了計算。

遺憾的是,雅虎已經慢了一步。

谷歌儲備了大量科學家,專門從事研究工作,從來不涉及產品也沒關係。這樣的文化吸引着更多工程師,更多人才的加入,反哺着谷歌的工程師文化。當三篇論文出現在世人面前,雅虎的所有行爲都必然成爲“刻舟求劍”。

谷歌的三篇論文描述了 GFS、BigTable、MapReduce 三種技術,奠定了二十年後的技術熱詞——雲原生、雲計算和大數據,定位於技術公司,谷歌毫不掩飾地向同行輸出最新概念。

而微軟的 Bing,則從另一維度上異軍突起。2010 年 1 月,微軟宣佈要收購雅虎的搜索業務。

當微軟團隊來接管雅虎搜索團隊時,崔寶秋有種感覺:就像一個三十幾歲的壯漢,向一個十二歲的男孩跪倒在地。這場轟動一時的收購落地,雅虎每個模塊都派出了交接人員,作爲搜索團隊的代表之一,崔寶秋並不情願地參與了其中。

搜索,是所有互聯網產品中最考驗技術能力的。回想當初加入雅虎搜索團隊時的激動,崔寶秋有些失落地徘徊在自己的辦公桌前。這些漂亮的代碼,完善的壓力測試,上線前的各種測試,都是團隊一行一行敲出來的。爲了週末多些時間看代碼,他甚至戒掉了週末打籃球的習慣。

時間回到 2007 年,硅谷 DoubleTree 酒店,金山即將赴港上市,雷軍在美路演,在這期間,與崔寶秋進行了徹夜長談。“寶秋,你將來想幹嗎?”雷軍突然問他。

崔寶秋沒多想:“退休以後最想靜下心來寫自由軟件……”

於他而言,寫自由軟件和開源軟件,都有機會讓自己寫的代碼跑在每個人的電腦上,尤其是在雅虎見證了 Hadoop 的成長之後。

Hadoop 的誕生受到谷歌三篇論文的影響,在雅虎開花並得到廣大用戶的喜愛。讓崔寶秋感到可惜的是,他自己在雅虎工作時所寫的熱點搜索緩存方面的代碼本來是計劃開源的,卻因爲搜索業務被收購而擱淺。

LinkedIn 開源風正勁

LinkedIn 純粹的開源文化,孕育了多個開源產品。

2010 年,帶着未能開源熱點搜索緩存技術的遺憾,崔寶秋離開了雅虎,加入了 LinkedIn。

用戶數即將突破 1 億大關的 LinkedIn,遇到一個棘手的技術難題:全量用戶的二度關係算不出來。集羣資源有限,公司算力也有限,在這種情況下,用戶二度關係算了 24 小時仍然算不出來,計算任務不得不中斷,沒人知道算完所有用戶的二度關係到底需要多少時間。

這是崔寶秋第一次用 Hadoop 來處理一個超大計算量的任務,讓他覺得用 MapReduce 來解決一些問題不僅是一門技術,也需要一些藝術。最終,他通過各種算法優化、參數調整、GC(垃圾回收)的精益求精,把二度關係跑出來了,並且不斷地壓縮時間,從接近 24 小時,到 12 小時,再到 8 小時,最後優化到了不到 4 小時。

用 Hadoop 解決這個大規模分佈式計算的難題,給了崔寶秋久違的成就感,更讓他又一次感受到開源的魅力與強大。

基於雅虎時期的大搜索經驗,崔寶秋在 LinkedIn 做起內容搜索比較輕鬆。在 LinkedIn 開放的開源氛圍中,他還和團隊一起推出了開源搜索系統 SenseiDB。

“不是 Baoqiu Query Language,是 Browsing Query Language。”崔寶秋急忙解釋。他利用一個週末的時間,用 Python 寫出來的類 SQL 瀏覽查詢語言 BQL 原型,可以用類 SQL 語言進行查詢、聚合、排序等搜索操作,讓團隊的小夥伴們非常興奮。當崔寶秋加入小米後,SenseiDB 和 BQL 也很快就直接用到了小米的業務中。

成長於 LinkedIn 的開源項目中,最受矚目的 Kafka,是爲把 LinkedIn 社交網站和內部各業務系統中的數據存儲整合到一個系統時建的項目。2021 年,Kafka 商業化公司 Confluent 獨立上市。

在硅谷,人人爲我,我爲人人,已經成爲一種普遍現象。“Facebook 有些人在爲 Hadoop 做貢獻,LinkedIn 的 Kafka,Voldemort 和 Azkaban 都是開源的。”

LinkedIn 的純粹開源文化吸引着崔寶秋。Kafka 也好,SenseiDB 也好,隨着開源項目的壯大,越來越多公司會參與進來,LinkedIn 會讓所有外部參與者都儘量把版權交給 LinkedIn,爲的是未來更容易地把這些代碼乾乾淨淨地捐給 Apache 基金會。

從 2010 年到 2012 年,這種方式影響着崔寶秋,堅信開源無國界的他,從此有了一個念頭——這樣純粹的開源,若能影響更多的中國工程師就好了。

打造小米“HBase 黃埔軍校”

不僅要站在巨人的肩膀上,還要爲巨人指方向。

2012 年,北京小米總部,崔寶秋從零開始組建小米的 HBase 團隊,召集幾位工程師,給予充分自由的時間和空間,在 HBase 社區裡讀代碼,參與社區討論,主動認領社區“任務”:解答社區問題,在代碼中做自己力所能及的貢獻。出發點很簡單:在社區時間夠長,纔會足夠了解其架構,代碼質量也自然會提高,同時在社區也能“混個臉熟”,便於未來更快地融入社區、回饋社區。

HBase 是一套基於 Hadoop 的分佈式、可伸縮、面向列的非關係型數據庫,是全球最大的開源項目之一,也是崔寶秋在硅谷工作時就一直關注的項目。

他首先向團隊明確自己的想法:小米作爲互聯網公司需要什麼服務、小米生態是什麼樣子、HBase 將如何作用於各個業務線,而後又找朋友引薦了 HBase 當時的項目管理委員會主席 Michael Stack,同後者分享自己的計劃,崔寶秋坦承講述自己對開源的認知、奉獻的意願、投入的決心:“小米對 HBase 的貢獻絕不是一兩個人,也不會是曇花一現,而是長期的戰略。”

2014 年,崔寶秋帶着謝良、馮宏華兩位工程師第一次去硅谷參加 HBaseCon 大會——此時,謝良剛剛成爲小米在 HBase 的第一位 Committer。駕車行駛在 101 公路上,崔寶秋不忘回頭和他們調侃:“做了 Committer,以後你們在社區有名了,其他公司可能要用高薪來挖你們了。”

2014 年,崔寶秋與謝良、馮宏華在 HBaseCon,一起與 Michael Stack 合影

在重大項目上極力推出自己的 Committer,是崔寶秋制定的開源戰略,主要目的是要贏得一定的話語權、讓團隊更好地融入並回饋社區,即使這些 Committer 被競爭對手挖走崔寶秋也不焦慮:“人才是水庫,流水不腐。”繼續堅持開源的打法,維持好的技術氛圍,給團隊成長空間,他相信會有更多的工程師源源不斷地加入小米。如果小米能成爲中國開源界的黃埔軍校,他也樂見其成。

2012 年,崔寶秋就在小米正式明確了“不僅要站在巨人的肩膀上,還要爲巨人指方向”的開源理念,推動着小米開源了一個又一個開源項目:2013 年,在 Hadoop 基礎上推出自動化監控部署系統 Minos;2017 年,開源支持 BQL 的搜索系統 Linden,同年又開源用 C++實現的分佈式存儲系統 Pegasus;2018 年,開源移動端深度學習框架 ……

2018 年,小米貢獻了 HBase 社區接近 1/4 的補丁。從 2013 年 12 月在 HBase 有了第一位 Committer,小米已培養出了 9 名 Committer,包括三位 PMC 成員。2019 年,小米工程師張鐸被 Apache 軟件基金會任命爲 HBase 項目主席。一切在按照崔寶秋的最初計劃一步步實現,甚至慢慢超出設想。

用開源平衡中美差距

崔寶秋把一套堅實的互聯網底層基礎設施帶給小米,“咱吃過豬肉,看過豬跑。”他深知硅谷的企業如何重視開源與大數據。

2012 年,崔寶秋決定把他負責的米聊服務器團隊正式更名爲“小米雲平臺”,“這個平臺必須支持未來小米所有的業務,它是底座。”2016 年,小米雲平臺升級爲“人工智能與雲平臺”。AlphaGo 戰勝李世石,自稱“老 AI 人”的崔寶秋對團隊說:“咱們雲平臺的春天到了。”

崔寶秋把硅谷的技術氛圍、開源文化、互聯網技術積累和團隊佈局方法,結合國內的最佳實踐慢慢移植進中國的土壤,陪伴着小米從 C(雲計算)到 B(大數據)到 A(人工智能)的技術路線升級。

在這個路線中,深度、全面地擁抱開源。他帶着小米工程師們做了很多打通數據孤島、制定開源戰略的事情,並鼓勵工程師努力回饋開源社區,也讓開源成了小米工程文化的一個重要組成部分。

2017 年,北京小愛同學慶功會上,崔寶秋難掩激動:“我們團隊的研發力量今非昔比。”他提出所有小米人工智能與雲平臺的工程師,甚至集團的一些研發力量,都要來呵護小愛同學、支持小愛同學團隊。

“開源的真正精神應該是利他主義和長期主義,過去這在中國的土壤是有些欠缺的,然而開源這個模式,讓我們的雲計算、大數據、AI 技術,通過開源這個連通器,平衡了和美國之間的差距。”崔寶秋迫切地想讓社會各階層的人和各種企業都能真正吃透開源,讓開源成爲中國提升國力的東西。

主導開源戰略,引入 NuttX,贏得 Daniel Povey

堅持開源,讓小米的開源之路越走越寬。

2019 年 10 月 12 日,北京,崔寶秋正與實時操作系統 NuttX 的創造者 Gregory Nutt 探討着 NuttX 和小米生態深度融合的方式與空間,近兩個小時後,積極聲音傳出,雙方達成共識,從此,開啓了 Xiaomi Vela 的誕生之路。

2019 年,Gregory Nutt(居中)拜訪小米,與崔寶秋一起進行了深入的交流

崔寶秋認爲,在小米的生態版圖中,越來越需要加大投入構建開源的物聯網操作系統,而擁有一個成熟的實時操作系統是實現這個目標的關鍵。NuttX 系統功能豐富、性能穩定、商業成熟度高,其主要管理標準又遵循 POSIX 和 ANSI 標準,所以 NuttX 是小米的不二之選。

他把 NuttX 系統與小米現有的硬件生態基礎結合,未來所創造出廣闊的 AIoT 生態講給 Gregory Nutt,同時小米也會秉承純粹的開源理念,努力推動 NuttX 進入 Apache 基金會。坦誠交流之後,雙方一拍即合,小米的第一個物聯網軟件平臺開始萌芽。

無獨有偶,重要事件總是接連到來。

2019 年 10 月,前約翰·霍普金斯大學教授、語音識別開源工具 Kaldi 之父 Daniel Povey,在個人推特上宣佈,他年底將來中國工作,這是一個重要消息。

6 月,Daniel 在霍普金斯大學因被動介入學生抗議活動,被校方解僱。隨後,他的動向就一直受到學界和業界關注。

中國的頂尖高校和互聯網頭部公司蜂擁而上,希望把 Daniel 招致麾下,以小愛同學作爲 AIoT 戰略核心的小米也在積極爭取中。

崔寶秋要求人力資源團隊和語音團隊:“竭盡全力把 Daniel 吸引過來”,至少也要讓他成爲小米的技術顧問。

崔寶秋親自統籌了負責接洽的人力資源團隊,並直接與 Daniel 的中國獵頭 Joy 溝通,希望通過 Joy 傳達小米的能力與誠意。“和中國公司一起打造健康的社區,走向世界。”這是崔寶秋一直向 Daniel 重點表達的開源願景。

崔寶秋和 Daniel 之前有過簡單的郵件溝通,在收到小米的基礎信息並感受到其誠意後,Daniel 便主動提出希望通過電話更深入地討論。8 月下旬,崔寶秋第一次撥通西雅圖的電話。

在這通午夜電話裡,崔寶秋向 Daniel 介紹了小米,更主要的是自己從 2012 年加入小米後就一直力推的開源戰略,聽到 Daniel 下月將在中國停留兩個星期的計劃後,崔寶秋馬上向其發出參觀小米公司的邀請。

來京第二天,Daniel 突然更改行程,要先來西二旗小米新園區看看,小米集團技術委員會給予了最高規格的接待:崔寶秋和技術委員會成員依次向 Daniel 介紹了小米的“手機+AIoT”雙引擎戰略和生態、公司的開源工程、AI 實驗室、以小愛同學爲中心的語音技術。

Daniel 還仔細看了小米的工作環境,包括編程環境,GPU 使用率的高低等。他的到訪給了崔寶秋更多信心。不過,隨後幾天,Daniel 又在上海、深圳陸續拜訪了多個高校和互聯網企業,這又給志在必得的崔寶秋增加了些不確定性。

Joy 告訴崔寶秋,Daniel 對高校工作更感興趣,崔寶秋聽後有些灰心,但仍盡力爭取機會,他立即通過 Joy 給 Daniel 發去自己過去幾年對外講過的 3 份有關小米開源的英文 PPT 和 3 篇外媒報道,告訴 Daniel,小米希望和他一起把中國的開源力量推向世界。

9 月 11 日,崔寶秋覺得時機有些成熟了,就給 Daniel 直接打去了電話,意料之外的是,電話接通沒幾分鐘,Daniel 便告知,小米已是自己的首選(Top Choice)。

國內高校的做事程序相對繁瑣,互聯網公司對優秀工程師明顯有着更強的吸引力,而這之中小米在開源上的努力和成績又尤爲突出,更重要的是,管理小米工程師團隊又一直把開源作爲戰略核心的崔寶秋,對公司的開源策略和技術佈局有直接決策權,可爲 Daniel 提供更有力的工作支持。

Daniel 想要崔寶秋保證 Kaldi 系統百分之百開源,崔寶秋說:“這條要求對我來說根本不是個問題。”

接下來幾天,Daniel 在以色列、歐洲輾轉時,小米向 Daniel 發出了 Offer——Offer 最後的修改仍由崔寶秋直接參與。

11 月 18 日,Daniel 正式加入小米。

崔寶秋成功地吸引到 Daniel 的加入,一起於小米大廈前合影留念

開源戰略不僅是爲小米贏得 Daniel 的重要砝碼之一,也是崔寶秋加入小米之初力推的戰略。“我們要感謝開源,認可開源。”他不斷向外發出聲音,併成爲中國技術領域一位重要的開源推動者。

問答實錄

劉韌:你一直在努力學習,這麼多年,你的學習動力來自哪裡?

崔寶秋:來自對計算機編程的興趣。我從來不覺得寫程序辛苦,我和雷總讀本科時在機房待三天兩夜的時候都有,那時機房的時間很寶貴,我們餓了就啃方便麪,都不會覺得累。

作爲一個理工男,讓計算機做一件難度很大的事,它最終能按我設計的要求完美地幹出來,就很有成就感,而且這東西很有價值,是我爲大家創造的,還能不停地優化迭代,接近完美。

比如劉老師寫文章時,每一稿修改都會有新的提高,本來要把它做到十分,做到七八分時還不能滿足,得等它按我的要求幹成了才行。十分以後把文檔再優化一下,代碼再做漂亮些,再加些註釋,加些測試。哪天又發現這東西不過癮,整個架構再重新設計一下,性能再提升一下,算法再優化一下,當你今天一個版本,明天一個版本的時候,它會越來越精彩,這種成就感只有工程師享受得到。

劉韌:谷歌把三篇文章開放給大家的目的是什麼?

崔寶秋:在雅虎我領悟了一個道理 —— 一個技術公司不該或者不需要單純地用領先別人一年、半年的技術來佔據領先優勢、贏得市場,而更多要靠自己的商業模式、產品和服務。

技術領先只是一個比較低段位的競爭,你降龍十八掌,別人是十六掌,你比別人多兩掌,這有那麼重要嗎?我認爲谷歌當年的搜索已經佔領了市場,它把這些技術分享出來,已經對它沒有任何損傷了。

這樣做的好處在於能推動行業的技術進步。我不知道谷歌會不會這麼想,我認爲開源是人類技術進步的最佳平臺與模式。開源是無國界的,很多技術分享出來是對的,要不然大家都不會去寫科研論文了,我們做博士生有時爲了零點幾秒的提升、百分之幾的進步都在努力地往前啃。

我當年做了很多這樣的工作,這都是一種無私的技術分享。當年我把這三篇文章看得非常重,我在很多演講裡都會介紹這三篇文章。

我認爲谷歌最大的一個技術貢獻,就是通過這三篇文章奠定了新時代的雲計算,大數據和 AI 技術的一些基礎。

劉韌:一個開源項目開發和以前封閉式的開發相比,差別在哪裡?

崔寶秋:開源出來以後會有很多人用,很多人給你提反饋,如果項目很成熟的話,會有很多參與者一起來做貢獻。在 LinkedIn 我們開源的 SenseiDB 其實貢獻者不多,而 Kafka 項目的外部貢獻者比較多,但我們也有一些外面的用戶,包括我來小米之前,有的小米工程師已經在用 SenseiDB 了。人人爲我,我爲人人,就是這樣的。

劉韌:每個人對開源的認識都不一樣,你覺得國內造成目前這個尷尬局面的原因是什麼?

崔寶秋:過去的拿來主義只是想用,對開源的認識是完全錯誤的。有一種認識是模糊的,還有一種認識是片面的,真正懂得開源理念,又願意做,且又能科學地推動這件事的人太少了,這是非常可惜的地方。如果不能真正理解開源理念,就很難迴歸到開源的本質,也難以真正掌握它,或者你願意用什麼心態來做這件事。就算懂了以後,又不知道怎麼正確地做這個東西,也會栽大跟頭。

所以我覺得問題太大了,需要一些洗腦式的教育,尤其在國內,有些人太浮躁,有點急功近利。開源是主張利他主義和長期主義,這在今天我國的土壤中還比較欠缺,我們首先應該感謝開源和互聯網,因爲有了互聯網媒介、開源的模式,才讓我國互聯網的相關技術,尤其是雲計算、大數據、AI 技術等得以提升,實現中美之間的平衡。

近 30 年前,當我出國以後看到那些落差,在今天正是開源才讓它平衡了。我們有些東西在產品和應用層面是很有創新性的,微信、支付寶做得很好,但你要感謝開源帶來的一些技術提升,要認可這一點。

今天很多人對開源的理解還停留在比較淺的層面,因爲無法看透一些本質,我總結了 5 點:開放、共享、平等、協作、創新。一些人沒有完全吃透,做開源有時會急功近利,片面地追逐名利,你做得好,我也做,有些是盲目在做。

很多人想做開源,但不知道爲什麼要做,不是所有軟件都需要開源的。開源是要大家共建,協同創新、協作創新,一起打造東西,是普惠大衆的,利他的。大家不應該封閉,不能總想着控制,想着本集團、本公司的利益。生態的把控,有的利用開源賣自己的服務、硬件設備,這些局部看應該還做得不錯,但長期看實際上它是封閉的,是有私利的,過度強調私利,這個開源就做不大,沒人去跟你合作。有些項目我一眼看上去就知道它做不大,因爲發起者根本沒做到那種利他,那種長期投入。

《2022-2023 中國開發者大調查》重磅啓動,歡迎掃描下方二維碼,參與問卷調研,更有 iPad 等精美大禮等你拿!