來源: Alibaba F2E
作者: Alibaba F2E
在2021年527螞蟻技術日上,螞蟻内源社群舉辦了内源專場,在專場上玉伯給大家分享了《開源有帶給我什麼》,以下為演講的圖文整理。
我的開源之路

我從2009年到2018年,接近十年時間,一直在做開源的一些事情,在這個過程中收獲了很多東西。今天就和大家分享一下,回顧這十年,我的一些收獲和感觸。
我最開始注冊GitHub是09年的夏天,再之前,是在Google Code上面有一些個人項目。這張圖是10年7、8月之後,開始在GitHub上瘋狂送出代碼的時候,那時候整天沉浸在代碼裡面,現在回想起來還是很開心的。
這些年做過一些開源項目,最開始是子產品加載器Sea.js,在淘寶時期和别人一起開發了Kissy項目,來支付寶的早期做過一個不太成功的項目Arale,做了大概兩年覺得這個方面是不對的,馬上切換開始去做Ant Design,再後來又開啟了AntV資料可視化開源項目。當然,體驗技術部還有很多做的不錯的開源項目,比如egg.js和Chair,不過這些我參與不多。
我的收獲之一:高效工作
這些年我一直在思考,我在參與開源的過程中真正的收獲是什麼。
我總結了三點。其中第一個就是養成了高效工作的習慣。
高效工作裡面包括幾個小點,首先是文檔優先。
在文檔方面我印象最深的一件事,就是在2010年左右參與到CommonJS開放組織裡面,這是一個虛拟的組織,最主要的産出就是文檔,我在裡面感受到了業界這些頂尖的專家對于文檔的重視。
當時,大家通過一個wiki系統以及Google Group論壇在一起,讨論什麼叫子產品,以及拟定它的1.0、1.1等版本的規範細則,每個規範中都有很多分支,圍繞裡面的很多細節,大家吵的不可開交。正是通過大家的努力産出的這些規範文檔,對整個行業都起到很大的幫助。
經常參與開源的同學可能發現,在文檔優先這方面,老外比我們重視太多了,有點項目可能還隻是個空殼,但裡面已經讨論很多了,把很多想法思路、怎麼做、可能遇到什麼坑這些問題,通過文檔和讨論,想的比較清楚了才動手去寫代碼,這點和國内是很不一樣的。
當你真的深度參與開源,并且以文檔先行的方式去實踐的話,你的收獲會非常之大。
第二點就是,在開源社群非常強調異步協作。無論是GitHub上的issues,還是Google的Groups,都是異步協作的利器,後來語雀的讨論區也借鑒了這些思路,就是是因為我們發現,異步協作比線下會議高效很多。我也非常想在公司内去推行異步協作,在體驗技術部有句話,與其在釘釘上找我,不如發個issue給我,你可能會更快的得到回報。
人們通常進行交流的手段就是聽說讀寫,其中讀和寫是比聽和說更高次元的手段,需要更多邏輯和抽象能力,更有助于問題的及早解決。
最後一點是求同尊異。GitHub上有些項目參與人數衆多,大家參與讨論很激烈,如何在有分歧的情況下達成共識,以及不僅達成共識而是讓社群往前走一步,這是需要一些上司力,以及一些意見領袖做出一些犧牲的。比如當時在CommonJS社群裡有一位C語言大拿,他已經實作了一版子產品化代碼, 比已有的一些都更優雅,但為了讓社群意見保持一緻往前走,他把自己的代碼全删掉了。
在這裡,求同尊異不是很虛的詞,而是很實際的原則,影響你的很多取舍。
最後一點是挺有趣的,在早期GitHub做社群的可能很多都是技術,比較純粹,後來各種追求商業化以及個人影響力的都來了。是以我最後一點就是你要知人情世故,現在GitHub上很多開源類庫你一看就知道是來蹭名利的,這種情況下笑一笑就好了,不需要去較真,否則會耗費很多無謂的時間,最少也影響心情。但同時你自己不要去人情世故,保持純粹。開源社群也是個小社會,GitHub也沒有大家想象中那麼純潔,有很多故事在裡面。
這些習慣和認知一直延續到我現在的工作中,真的給我帶來了很多幫助。我相信在開源上,隻要你參與進去,你就會獲得一些感性的認識,知道它們對你的職業成長和習慣是非常有利的。
我的收獲之二:學做産品
我之前做Sea.js這些開源項目的時候,是把它當做一個産品去打造的,是以肯定會遇到産品的靈魂三問:
每一個開源項目在決定要不要去做的時候,都要問自己這幾個問題。這些問題其實和很多業務和産品遇到的問題很類似。你必須将這些問題回答清楚之後才能再往前走一步。
比如當初我們在做AntV的G2的時候,就要回答一個問題,當時國内外有higcharts、echarts等開源的可視化架構,也都非常成功,這時候你G2憑什麼去做另一個可視化類庫?後來和蕭慶關于這個問題想了很久,最終得出的答案是我們要做圖形文法,而不是以前業界通行的基于配置的可視化,這也正是G2的差異化競争優勢,真的做好了會帶來更多的可能性。
關于第二個問題,是因為很多你想做的項目,要麼在GitHub上已經有了,要麼已經在文檔中被人讨論過了,那為什麼是你做?為什麼你更有可能去做成?這個問題的一個“政治正确”的答案是和你的業務有相關性,更實際的可能是和你這個人更有關系,是你内心想不想做,願不願意去長期的投入。
比如Ant Design、AntV,其實當時是集團更有機會去做的,因為集團有資料産品技術部,他們有很多業務,在這些業務土壤下是更有機會去長出這些項目的,但是他們缺人。是以對這個問題我的回答是,很多情況下,人的要素是比業務更重要的。隻要你對事情是笃定想要去做的,大膽去做就好了。
第三個問題其實是更難回答的,就是你的邊界在哪。之前接觸過的一些開源項目越做越大,或者越做越複雜,這不一定是好的。我自己心目中理想的開源産品,是做到一定階段,就不需要再做了。比如一些指令行小工具,很多年都沒有更新了,但大家都在用,因為它們各種接口很完備,已經不需要更新了。做開源項目也一樣,當你花一些時間設計好了,然後寫完代碼,就可以對整個世界說,我做好了,你用吧。當然,這是一種理想狀态。
我的收獲之三:對事的熱愛
我的分享最後一點是熱愛。但凡你曾經經曆過為開源而瘋狂,你就會了解什麼叫熱愛。而如果你沒有瘋狂過,熱愛對你來說隻是兩個字而已。
最近袁老去世,舉國同悲,我也看了那個40多分鐘的紀錄片,看的過程中真的是非常感動。特别是裡面提到袁老的禾下乘涼夢:他有一個夢,希望稻谷長的像高粱一樣高,稻穗比掃把還長,結的谷粒和花生米一樣大,到時候他和他的助手可以躺在下面乘涼,睡個午覺。我覺得袁老說到這段話的時候整個人都升華了,看了這段視訊,你可以了解什麼叫做事業,什麼叫做熱愛。
當你把開源當做自己的事業的時候,感受其實是一樣的,即使生活上很樸素,你也可以過的很開心。當你寫代碼的時候想着怎麼寫的更好,某個記憶體占用怎麼降低一點點,某個性能怎麼提高一點點,當你滿腦子在想這些的時候,一些物欲得失也就沒那麼重要了。
我希望同學們通過開源,去參與和主導項目,能夠感受到這份熱愛。持續去感受過幾份熱愛之後,我覺得你整個人都會不一樣的,面對許多事情,你會活的更通透,更透徹。
另外前不久在推特上看到一句話讓我挺有感觸,他主要說的是,很多人說工作要跟對人,但其實沒什麼關系,跟你工作的地方和公司也沒關系,跟什麼人不如跟随自己的内心。真正一個人在職場生涯往前走,應該找到的是你的mission和calling,還有找到對你有意義和熱愛的一些事情。
總結一下,如果說開源帶給我什麼,首先第一個就是高效工作的習慣,讓我受益終身;第二個是在這個過程中,學會了怎麼去做産品;第三個是非常感謝自己有興趣參與一些開源項目之後,從中感受到什麼叫熱愛,進而改變了我對人生的很多看法。