開源走向世界(上):開源構建全球化的舞臺丨BDTC 2021

PingCAP發表於2022-01-06

2021 年 12 月 25 日,2021 中國大資料技術大會暨 CCF 大資料與計算智慧大賽高峰論壇在中科院計算技術研究所隆重召開。PingCAP 高階副總裁範若晗受邀在主會場進行了以 “開源走向世界” 為主題的演講,結合 PingCAP 的實踐,從協作方式和技術演進兩個角度,分享了 “開源”和“全球化” 之間相互關聯,密不可分的關係。本文內容根據演講內容整理而成,分為上下兩篇,本篇主題為:開源構建全球化的舞臺。

“開源” 和 “全球化” 之間有著非常緊密的聯絡,二者並不是孤立的。2015 年,PingCAP 在成立的第一時間就用開源、做開源、投入開源,並對全球化做了佈局。

實際上,PingCAP 從第一行程式碼的提交就是在 GitHub 上完成的,我們非常重視這一領地。社群的小夥伴基於 TiDB Cloud,實現了一個用於記錄公共 GitHub 活動的公開資料存檔線上工具:GitHub Archive。對原始日誌資料(超過 40 億條)進行分析對比,選取國內典型的企業[1],我們可以看到過去 10 年,中國開源像洪流一樣發展,活躍倉庫[2]數大幅提升。在這數千個活躍的倉庫中,越來越多源自中國的開源專案受到國內外同行的認可與讚許,呈現出一種百花齊放的狀態。而 PingCAP 創始人的認知和決心都來自於這個洪流的滋養,在過往的六年裡也為這條曲線做出了小小的貢獻。我們做的這個 GitHub 分析工具,很快也將提供給大家線上訪問,根據自己的需求快速靈活的進行分析。

令人欣慰的是,基礎軟體這個賽道在開源這個舞臺上真正做到了長足進步:11 月底剛釋出的 “十四五” 軟體和資訊科技服務業發展規劃,明確了“開源重塑軟體發展新生態”,資料庫、人工智慧、作業系統領域的開源專案最為活躍。

中國目前處於開源高速發展的階段,開源軟體的發展從最底層的作業系統開始,已發展到資料庫、中介軟體,並嚮應用領域逐漸延展,近年來開始主導資訊科技領域的深度創新:如,大資料、雲端計算、人工智慧、區塊鏈、雲原生等,加速了國家核心技術的自主發展。《2021 中國開源發展藍皮書》對國內活躍開源社群進行了不完全統計,我們可以看到,在資料庫、人工智慧、作業系統領域的開源專案最為活躍,這跟中國網際網路行業的市場特點和當前技術發展也息息相關。

一系列的政策指導以及全球開源市場的趨勢變化,大大提升了資本市場對開源公司的認可度。而當我們研究近 3 年國內 ToB 技術行業,發現獲得數千萬乃至數十億投融資的眾多企業,在滿滿的科技範兒背後都有著一個共同的標籤,那就是開源。另一方面,在賽道選擇上也有著高度的匹配:作業系統、資料庫和人工智慧。

過去開源在商業化上的巨大能量是被嚴重低估的,現在大家對於真正利用好開源這個高槓杆的模式依然還在摸索階段。開源是真正幫助 PingCAP 走向全球化的一扇門。今天,我將和大家分享 PingCAP 的一些探索和經驗。

信任問題的解決是所有工作的前提

PingCAP 不僅程式碼開源開放、面向全球,文件也是一樣的。最早的 TiDB 沒有中文文件,所有的註釋甚至每一個提交記錄都必須是英文的,所有的設計文件都要放到 GitHub 上。早期使用者有問題,有時會直接微信或者郵件聯絡,但我們也建議他們把問題放到 GitHub。甚至有專人會幫早期提出 issue 的人把 issue 從中文翻譯成英文。之所以這樣做,其實是從 TiDB 專案發起和早期階段就立下了一個理念,我們要把專案的 why 和 how 都展示給全球社群的參與者。

大家看到的這個帥氣的小夥,是來自多明尼加共和國的一位 TiDB 社群貢獻者。開源天然地解決了彼此的信任問題,這也是開源的獨特魅力,讓全球社群的每個人都有機會來認識你、認可你、認同你。

在信任的基礎上,開源產品可以在全球化的舞臺上實現高效傳播

TiDB 的相關技術文件,被技術愛好者自發地翻譯成俄語、烏克蘭語、日語、西班牙語和葡萄牙語等,極大推動了產品的全球化。PingCAP 編撰的 NewSQL 相關課程還入選了威斯康辛、普渡、卡內基梅隆大學資料庫課程。

開源的生態大大加快了迭代速度

這張圖是 TiDB 每年程式碼的變化情況。紅色是 TiDB 2015 年的程式碼,藍色是 2016 年的,大家可以看到,TiDB 每年會進行超過 40% 的程式碼更新,而這些程式碼的 40% 是由外部貢獻者貢獻的,產品的快速迭代才能保證其持續領先性。國內外多家機構共同參與開發 TiDB,既有國內的小米、美團、知乎、一點資訊等,也有國外的 Databricks、Facebook(現在的 Meta)、韓國三星研究院等等。

最厲害的產品一定是全球在用的。堅持全球化的技術視野、堅持開源這一戰略,攜全球的人才和全球的場景去競爭,讓 TiDB 在新一代分散式資料庫領域全面領先。接下來,我將給大家分享兩個故事,讓大家對開源帶來的全球化社群共建有一個更深刻的體感。

第一個故事,是關於寫書

在我們的印象中,通常的書籍編寫是一個常年累月的細活,少則半年,多則數年,初稿完成後接著是多人的審閱然後再出版。但在技術發展瞬息萬變的今天,產品迭代速度比較快,技術類的書籍能否有一個更快捷更高效的方式。在去年 TiDB 4.0 GA 版釋出前夕, TiDB Master 分支社群一片熱火朝天。為了給這個里程碑版本留下點不同的內容,我們的 CTO 產生了一個「瘋狂」的念頭,約一波 TiDB 社群夥伴,以 “分散式” 的方式,在 48 小時之內寫完一本關於 TiDB 的技術書籍。希望系統且簡要地介紹一下整個 TiDB 和周邊工具生態,能手把手地指導使用者 “把 TiDB 用起來且用好”。

說幹就幹,從 3 月 3 號在網上釋出 TiDB Book Rush 這個創意,3 月 6 號週五晚 21:00 開始,歷時 48 小時,共有 102 位來自社群的作者參與,截止週日 21:00,總計產生了 421 次 Commit,199 個 PR,最終開源電子書 《TiDB in Action》 第一版誕生,涵蓋了 TiDB 基本架構原理,最佳實踐及案例,TiDB 開源社群及周邊生態發展歷程等。

訪問地址:https://book.tidb.io/

第二個故事是關於開源加速產品迭代的

“4.0 捉蟲競賽”是由 TiDB 社群發起的挑戰賽,選手可以通過為 TiDB 尋找 bug 或提交測試報告的方式獲得相應積分,積分可以兌換獎品。這次競賽共有 40 位社群小夥伴組成 23 支隊伍進行參賽。通過大家共同不懈的努力,一共為 TiDB 4.0 GA 找出 51 個 P1 級別的 bug 和 8 個 P0 級別 bug。

本次捉 “蟲” 競賽第一名的獲獎者 Manuel Rigger (還給自己起了箇中文名字叫李曼努), 是一位專攻資料庫測試方向的博士後,來自蘇黎世聯邦理工學院,他的測試框架也幫助 MySQL、PostgreSQL、MariaDB 等資料庫找到了 400 多個 bug。

剛才的兩個故事,讓我們看到了一個開放的開源社群有多麼大的吸引力,可以激發全球社群的眾多貢獻者共創共建,加速產品的快速迭代。

這樣的貢獻並不是單向的,開源通過激發工程師在社群中的創造力,也使得大量的開發者、機構和企業,無門檻地使用質量優良的軟體產品,貢獻巨大的社會價值,形成一個良好的迴圈。

大家看到的這兩位男士是來自於瓜地馬拉一所大學的教授和學生,圖上他們穿著 PingCAP 創立的一個開源混沌工程專案 Chaos Mesh 的衛衣,這個教授和學生在 GitHub 上面做了一個非常有意思的專案,通過構建一個分散式系統,來實時記錄分析世界各地的新冠疫苗接種的資訊。Chaos Mesh 保障了這個系統的穩定。在看到這個專案之前,我們可能完全無法想象,中國的一群工程師做的一個專案能被中美洲的一個國家關注到,同樣我們也不知道自己建立的混沌測試工具還能以這種方式參與到全人類都關注到的新冠疫情的工作中。與此同時,我們的 TiDB 產品也在中國的疾病預防控制管理、群體免疫監測等領域默默地發光發熱。這些真實的故事體現的正是 PingCAP 社群使用者的全球性,這張世界地圖上的一個個圓圈,代表了參與 PingCAP 開源專案的社群使用者數。正是這些來自全球的開發者讓我們能夠第一時間接觸到更多的使用者,獲得更多關注,打下早期的客戶基礎。

作為先進的生產模式,開源讓 PingCAP 獲取到了非常多來自社群的幫助,同時把開源的智慧貢獻給全球,實現了巨大的社會價值。現在 PingCAP 在開源到商業的道路上越走越好,也是從這些社會價值的貢獻中萃取出商業價值,幫助公司和專案茁壯成長,為企業和產品的成功形成源源不斷的價值閉環。

當我們從自己的產品跳脫出來,去看全球範圍整個資料技術行業,會發現近十年湧現出來的資料技術創新, 95% 都是開源的。這張圖顯示的是截至 2021 年12 月初,我們的 GitHub Archive 資料分析得出的年度 PR Top 10 的資料技術專案,PR 即 Pull Request,就是使用者修改了程式碼,希望合併到主幹倉庫中,它體現的是開源專案的創新迭代能力。

可以說最近十年資料技術創新進入了前所未有的蓬勃發展階段,動力來源於哪裡?選擇困難該怎麼辦?在下一篇文章中,我將與大家分享 PingCAP 從資料庫近半個世紀的發展歷程裡,學到了什麼,技術發展對 PingCAP 的架構選擇和產品方向產生了什麼影響。

[1]國內典型的企業:包括阿里、百度、騰訊、位元組、美團、滴滴、華為、京東、小米、網易、Bilibili、微眾、攜程、PingCAP 等 40 多家公司
[2]活躍倉庫:指在一年中有發生過至少一項事件的倉庫,如 PushEvent、IssueCommentEvent、ReleaseEvent、PullRequestEvent等(總計有21 類事件)

相關文章