FISCO BCOS首席架構師分享:开源路上的酸甜苦辣
多年前決定开源時,我們挺興奮的:作為典型碼農,“用”开源是日常,而全力投入“做”开源,對我們絕大部分人都是頭一遭。
我們也曾天真地以為:“开源”能有多難呢?!不就是把代碼放出去,大家一起用,一起寫嘛。
但是,“开源”這事兒真的是這樣子么?還是先看幾個靈魂拷問吧:
目前區塊鏈領域的开源社區處於什么發展階段?
开源社區的參與者是“用戶”(user)為主還是“貢獻者”(contributor)為主?
項目的star數和contributor數究竟有多重要?
徐徐幾年,衆多社區夥伴圍繞FISCO BCOS开源了諸多項目,覆蓋了區塊鏈核心技術、應用开發到運營運維治理的全領域。社區聚集了4萬多名开發者關注者,2000多個機構,數以百計的應用已經在生產環境穩定運行,社區和產業生態活躍度在圈子裏也獲得了諸多好評。
2021年3月,國家“十四五”規劃綱要發布,“开源”首次列入其中,指出要支持數字技術开源社區等創新聯合體發展,完善开源知識產權和法律體系,鼓勵企業开放軟件源代碼、硬件設計和應用服務。
今年6月,工業和信息化部、中央網絡安全和信息化委員會辦公室聯合發布的《關於加快推動區塊鏈技術應用和產業發展的指導意見》進一步鼓勵开源並指出,要建立开源生態,加快建設區塊鏈开源社區,圍繞底層平臺、應用开發框架、測試工具等,培育一批高質量开源項目。
我們深受鼓舞,回望過去,在打造良性互動的开源社區新生態方面,我們已進行諸多探索,這其中的酸甜苦辣,仍然歷歷在目。
直面問題
這幾年來,每天早上我醒來的第一件事就是拿起手機,看技術群裏有什么問題。工作間隙看、开會間歇看、走在路上也看……活躍的社區群,有時消息猶如刷屏一般。
問題五花八門,從基本概念、安裝部署到代碼分析,再到從產業層面切入來找案例,或者聊區塊鏈和开源軟件,以及开源商業化的……在前沿技術領域,不同個體在不同的階段總是能碰到新的問題。
我其實挺享受在社區裏當“客服”的。在漫長的職業生涯中,我泡過技術論壇,也做過互聯網公司的客服系統,开源社區讓我找回了和網友打交道的感覺——親切、有趣、大家都在做有意思的事情。
為啥社區裏會湧現出這么多的問題,我們也有一些反思。是因為區塊鏈領域太新了,概念過於晦澀,導致开發者需要邁過的學習門檻較高?還是我們的出品沒做好,文檔沒寫清楚,確實難懂難用,BUG還多呢?
有一說一,2017年末开源的最初版本,光搭鏈組網就足有十幾個步驟。每一個步驟都有可能因為環境和網絡差異,以及軟件本身不完善的容錯能力而“跪掉”。
在那時候,能把鏈搭起來已經挺費勁了,運行起來偶爾會有“coredump”(進程崩潰),用戶把core文件(系統異常堆棧)發給我們以進行詳細分析時,看着異常堆棧,我們內心其實是略有苦澀的。
曾有行業專家當面吐槽:“你們代碼風格一般呀”。他們本來想引入的,但看了代碼風格,覺得還是等等吧。個中滋味,我們懂。
當時,整個行業幾乎沒有工業級可用的區塊鏈底層平臺,我們從0到1做出的第一個版本, “能用”就是一個小flag,也確實落地了一些應用,但整體離優秀开源項目的差距還挺明顯。
至於文檔,大家都知道,程序員寫代碼很high,寫注釋算是義務,但寫文檔簡直比趕鴨子上架還難。奮筆疾書憋出了好長的一個使用文檔,但相關的概念原理、異常處理方法不全面,撰文技巧和經驗更是欠奉,看起來很“硬”。
在人才方面,幾年前,圈子裏有個無法證實的說法,“在國內,能徒手擼出一條鏈的人,不會超過200個”。同時放眼整個中國的开源領域,深度參與到开源項目中的开發者,其整體規模也並不大。
區塊鏈行業熱潮掀起時,社區开發者們熱情都很高,踊躍參與开源項目,積極學習技術和开展應用。其中有不少是在校學生和學術研究人員,以及對企業級或互聯網軟件研發有一定經驗的开發者,還有從非技術角度切入的“文科”人士。總的來說,精通區塊鏈原理、通讀區塊鏈項目源代碼、能嫺熟开發區塊鏈應用的硬核區塊鏈开發者,可遇而不可求。
無論如何,我們不能指望一开始就有海量开發者天降神兵,踩着祥雲來共建社區。
我們沒有刻意去對比國內外其他區塊鏈項目的狀態和經驗,別人的模式不完全適用,畢竟开源內容不同、環境和文化不同,發展階段和發展模式都不同,可資借鑑的經驗也寥寥。
大體上,當時國內的區塊鏈开源社區屬於“起步”階段。
化繁為簡
那段時間,开源工作組有許多深入的討論:方向對不對、版本優先級怎么排、能不能讓內外上下遊都滿意……大家非常焦慮,常常討論到凌晨一兩點。
萬事不決,還是回到原點:“想讓別人滿意,首先得讓自己滿意”。我們不斷自問:好用的开源項目應該是什么樣子?
想想Linux/Apache/Mysql/PHP(合起來就是著名的LAMP)這些成熟的开源軟件,是不是down下來就能安裝?安裝了就能跑?用這些軟件,遇到問題的話,可以讀官方文檔學習原理和細節;再不行,論壇上問、網上搜,买書看,總能找到答案和案例。
團隊有位架構師,人稱“楠哥”,他用一句話終止糾結,“如果一個軟件用戶15分鐘還用不起來,他們一定會拋棄你!”
於是,碼農們掐着秒,數着命令行寫代碼:下載代碼和軟件要花多長時間?是不是一行命令就能把鏈搭起來?配置文件用json編輯起來是不是容易誤操作,用ini/toml格式是不是更簡單一些?
“多個進程多個鬼、多個步驟多個鬼。”,這是我們的口頭禪。極致的簡化,把代碼中的“玄學”變成確定性。“能用就行”肯定是不行的,還要好用、耐操!我們根據之前的經驗,適配各種操作系統和軟硬環境,預置默認組網模式和證書文件,讓使用者在整個過程中連“踩坑”的機會都沒有。萬一還是出錯,則高亮提示、FAQ直達,用多種策略自動檢測和恢復,應有盡有。
鏈搭起來了,接着就是打磨控制臺、瀏覽器,讓區塊鏈看得見摸得着,用戶一旦眼中見圖,心裏更有數。然後,內置應用模板,乃至壓測樣例,以使得开發者可以按圖索驥,一鍵構建應用。更進一步,區塊鏈上雲,雲上資源調配、部署交付、運維運營一站式搞定。
如果开發者有興趣繼續研究細節,我們還有詳細的使用手冊和技術文檔。足足有百萬字規模,趕上幾本書了,可以慢慢讀,還可以搜索直達知識點。
此外,軟件的核心能力也沒落下。大家都很熟悉的“wheat”,有技術潔癖和質量強迫症,對技術攻關、架構合理性、代碼風格和版本時間线毫不妥協,代碼必須經過幾個人(包括他自己)交叉review過,而且單元測試覆蓋率足夠高,才能commit。
讓人欣慰的是,2017年到2018年,开源工作組陸續加入了許多老司機和剛畢業的小鮮肉,他們都很生猛,大大地充實了开發力量,並隨着項目一起成長。這也是硬核技術創新的奧義:“21世紀,人才最可貴”。大家一起投入,性能、安全、穩定指標都達到了高水准,同時隱私保護、跨鏈、新型虛擬機、鏈治理等多種核心能力也逐步完善。
回首看,2019年初與社區共同打磨出來的FISCO BCOS 2.0版本可以說是一個裏程碑,用起來簡潔快捷,工具和文檔配套齊備,核心能力靠譜,怎么一個“爽”字了得。效果那是立竿見影,能把區塊鏈快速跑起來、用起來的开發者肉眼可見的迅猛增加,社區留存率明顯提升,同時社區提交的ISSUE、代碼和文檔更新也多起來了。
在此之前,社區朋友們可能會禮貌性地誇一下:“开源就是一種精神”、“开源已經是相當有勇氣了”……此刻,終於能聽到有人真心實意地說:“牛!挺好用!”。
現在我們嘗試回答第二個靈魂拷問:如果开源軟件沒有用戶,那么,也大概率不會有什么貢獻者。
軟件要吸引“用戶”,它本身至少要穩定可用,再則使用門檻要低,最好开箱即用,交互手感要如絲般順滑,無論是代碼還是界面都要清晰優雅。唯如此,用戶才不會步步驚心,甚至到處踩坑,不會迷失在繁雜的配置文件、天書一樣的日志和錯誤信息裏。
衆所周知,互聯網產品追求“Don’t make me think”。开源項目大抵也如此,若能再有一點極客氣質,那就更贊了!
授人以漁
在解決了使用門檻的問題後,我們觀察到社區問題在變化。
首先,“簡陋、用不起來、運行出錯”這些可用性方面的問題明顯減少了。
部署搭建等問題增加了,我們分析,這是因為有更多人在實操搭鏈了。搭建過程中,不免還有一些小的磕磕碰碰,又或者遇到一些概念性和體驗感上的問題,需要咨詢交流。當然,這也說明軟件使用流程,還是文檔都還有提升空間。
功能性問題的大幅增長,佐證着我們的技術、組件確實是被更廣泛地用起來了。許多人在規劃網絡拓撲、寫合約調接口,在分配權限、分析數據,又或者是在不同的應用場景探索着更多區塊鏈能力。
最令人欣喜的是,大家對區塊鏈原理、架構、算法的探討更多了、更深了。交流中不時迸發出火花,觸發靈感。這對明確後續的優化方向,規劃版本,增加特性,以及共同建設都有非常好的參考價值。
社區就像一面鏡子,種種變化明晰可見,映出技術的完善,也見證社區的成長。
對於這個階段,我們也有一些思考:
1、不要指望聊天群能解決所有問題
我們有“社區答疑”排班,如果值班的同學遇到解答不上的難題,將請小組智囊團分析,總之,我們的要求是盡快答復解決,“當日問題當日畢”;尤其是线上產生的問題,要優先跟進。
我曾經花了一個晚上翻看幾個月的群記錄,算了下我們开源團隊每人跟進過的問題數,量還是比較大的(如下是其中一頁)。更難能可貴的是,團隊成員的態度和積極性都非常到位,每每及時解決問題,並找到了優化點,他們自己也挺开心。
言無不盡地順暢交流,聚焦解決痛點的社區答疑體系,確實在業內為我們樹立了非常不錯的口碑。
聊天群的好處在於交流無比便捷,其不足也顯而易見,群聊會吸引不少注意力,聊天記錄難以被其他人翻查,不利於積累和復用。隨着新人的不斷加入,不少常見問題的重復率極高。技術論壇應該是不錯的互補。當然技術論壇的搭建和維護,也是需要投入的。
而隨着社區人數和領域覆蓋面爆發式擴張,單憑开源工作組來在线答疑,是否是最佳解呢?我們思考之余,覺得這也算是“幸福的煩惱”吧。
2、不要指望文檔解決所有問題
軟件質量基本穩定後,每當看到問題,我的第一反應常常是,“是不是文檔沒寫清楚?!”
开源項目文檔包括使用手冊、开發教程、術語和概念、架構原理、FAQ等等,可謂“汗牛充棟”。好在线上文檔支持關鍵字檢索,基本上能想到的知識點,都可以檢索出來。
同時,在公衆號、合作媒體上,我們也發布了多角度的文章,嘗試跳出技術細節,去澄清區塊鏈思維,科普區塊鏈學習方法,把經驗和教訓傳承起來。我們真心的希望這些文章能給不同階段的讀者一些啓發,從技術的“第一性原理”出發,舉一反三,直達區塊鏈知識內核。
但我們發現,理想和現實是有差距的:文檔怎么寫都會掛一漏萬;用戶的操作路徑、思考模式和我們預期的不一樣;以及環境不一樣,出的問題也會不一樣……
此外,受傳播渠道、曝光率等諸多原因的影響,文檔並沒有傳播到所有用戶;或者因為文檔目錄結構太深,用戶確實沒看到特定知識點;即使是看到了文檔,面對上百萬字的浩瀚篇幅,很多人會表示:“nice,先收藏慢慢看”……種種因素都可能導致文檔的有效閱讀吸收率並不樂觀。
其實,用戶根本不太想去看長篇大論,他只想趕緊解決手頭上的問題。
總體來看,文檔一定要有,還要好。但文檔就像寶藏,適合慢慢挖掘,難解燃眉之急。
3、不要指望自己就能解決所有問題
日拱一卒,遇到一個問題解決一個問題,就萬事大吉了么?
用戶問題確實是最好的方向標,如果一個問題一個星期內出現了兩次以上,而且還是由不同的用戶問到的,那么可以肯定,是個需要優先解決的問題。
對不同的問題有不同的解法:可以迭代新版本把問題修掉,讓它不再出現;也可以是修訂文檔,並給出顯眼的文檔入口供參考;甚至可以是跟用戶聊聊,對齊了概念和思路,有的問題就消解了。解法很多,但關鍵是要快、要准、要閉環。
實踐也證明,开源工作組不可能包辦一切,比如有些用戶的需求比較場景化,不適合放到主版本裏,由开發者拉分支定制开發更為合理。有些問題跟不同環境、不同業務領域有關。事實上,开源工作組對很多領域也並非專家,只能是根據自己的理解,從技術角度切入和大家交流探討,期望能互相啓發。
本質上,如果只有开源工作組在做單向輸出,用戶是沉默的大多數,這樣的社區勢必會變得沉悶、無聊,也很快會遇到天花板。理想的模式是在整個社區形成正循環發展:老手幫助新手,新手成為老手,老手直接上手寫代碼,分布式解決問題和滿足需求。整個過程大家都有貢獻、有創新、有積累、有提升。
我們有時候會想,开源工作組是不是要稍微往後退一小步?我們更多的做好服務和布道的角色,以科普引導、激發鼓勵為主,給社區小夥伴們更大的舞臺,這樣效果是不是更好?所以,我們除了寫代碼,還寫文檔、寫教材,參與國家人才標准編寫,組織线上线下的沙龍、培訓、黑客松,這都是“授人以魚,不如授人以漁”。
在行業發展的爬坡期,我們希望幫助更多的人學起來,用起來,讓人才多起來。邁過了技術門檻的用戶一旦成為嫺熟的开發者,那么BUG一冒頭就會被修正,不同的需求快速得以滿足,軟件本身也將越來越優秀。
目前社區已經自發形成了諸多SIG(Special Interesting Group即興趣小組)。組員們從社區主動加入,根據自己感興趣和有所長的技術、應用主題,展开分布式合作。下圖是其中一位組長(群暱稱:李大狗)在小組介紹裏的一頁。我覺得“有趣、務實、激勵、貢獻”這幾個關鍵字歸納得非常棒!
开源工作組,社區SIG以及不斷湧現的开發者群體,構成了立體化社區技術力量。
我們持續聚焦軟件質量和提升體驗,減少重復問題,並引導和推動社區往自服務階段走,分工合作,有利於聚焦識別更前瞻性的特性、承擔更有挑战性的問題,廣大开發者能施展的空間也越來越大。
揚帆航海
逐步成熟的社區將會呈現“網絡效應”,良好的口碑是“自來水”,產業人士聚集得越來越多,生態和商業模型自然會長出來。
剛开源的時候,我們全國到處飛,去宣講理念和技術,邀請大家關注我們的社區。最早的社區群就是這么一個一個人的“拉” 起來的。
我有個朋友一直默默地關注开源社區,把區塊鏈融合到他們的行業產品中去,直到產品成功上线後才告訴我。
我問他:“你們完全不需要支持的么”?
他說:“开源軟件就挺好用的,我們自己的技術團隊實現業務邏輯,做一下運維配置就可以上线了”。
現在他們已經是“社區認證合作夥伴”,持續地用區塊鏈技術去落地應用,他們的成果也以代碼、工具、案例等方式回饋給社區。
這樣的社區夥伴還有許多。他們在各自的垂直行業領域裏有着深刻造詣,與开源社區形成了互補。在區塊鏈方面,他們只需引入开源技術,而不用重復造輪子,效率大增,成本猛降。同時,他們在行業實踐中,持續挖掘出許多非常接地氣的需求,貢獻了大量技術成果,其落地的實踐更是對區塊鏈技術價值的驗證,他們的案例已經成為了產業地圖上的標杆。
更有意義的是,我們發現不少企業在社區裏發掘並招募到自己需要的人才;也有的在社區遇到產業鏈或技術棧互補、理念又相近的產業夥伴,然後愉快地建立合作關系。總之,社區搭起跨越行業和地域的橋梁,是實現精神物質雙收獲的平臺,自發的形成志同道合、共建共贏的开放聯盟。
這裏必須介紹下, FISCO BCOS开源工作組是由“FISCO金鏈盟”發起的,金鏈盟目前已經聚合150多家機構,分別來自金融、證券、地方性交易所、科技公司、科研機構等。作為开放的技術社區,聚集的2000多家企業,更是覆蓋了工業、農業、版權等廣泛的行業領域。
值得一提的是,有多個培訓機構已經成為社區的“培訓合作認證夥伴”。大家共同撰寫科普資料,並聯合工信部人才交流中心等國家權威機構撰寫了多套區塊鏈教材,供全國各地的高等院校和培訓機構使用。培訓布道工作任重道遠,獨木難成林,衆人澆灌,來日桃李滿天下。
在數字化的風口中,各領域的企業猶如一艘艘船,紛紛开闢航道。开源技術就像風帆,能幫助企業順應風勢,帶來巨大動力,去探索更大的世界。开源代碼本身是否商業化,其實並不那么重要,开源的產業化模式更多是融合服務、拓展邊界,推動應用落地。可想而知,如果大量的船只揚帆起航,實體經濟來往活躍,整個生態蓬勃發展,所有人都必然得以獲益。
大家好,才是真的好。我認為這是开源开放的真諦。
有容乃大
經歷過开源的興奮、焦慮、欣喜,現在我們已經淡定多了。
每天的工作依舊很充實。曾經,剛進入團隊的小夥伴們以為來了就是寫代碼,然後發現並非如此,不但要當“客服”,還要當“寫手”,時不時出去當“網紅”直播“帶貨”解析开源技術,或者去當“老師”,站在講臺上一講就是幾個小時。
在不同的角色之間切換,對時間管理和注意力分配確實是一種挑战, 不習慣的時候可能會有一點點“分裂”感。尤其,對普遍有點“社恐”的碼農而言,各種“拋頭露面”,心理壓力有點大。但是換一個視角,從長時間的職業發展來看,經此十八般武藝輪番上陣,技術寫作水准、交流陳述能力,以及眼界的廣度深度都能得到鍛煉;最重要的是,自己寫的代碼,立刻就會有人用,有人切磋,對自己的技術能力和成就感也有所提升。如此於公於私,都無疑受益匪淺。
在技術團隊身旁,我們運營團隊還有專業的“社區小助手”,活躍於线上线下沙龍、展會,組織課程,即時推送熱點內容,以及和社區开發者互動,協助开發者走上开源之路。在產業合作中穿針引线,如同小蜜蜂穿梭在花叢中。當然,如果群裏有人發廣告,擾亂技術氛圍,也很快就會被小助手請出去的。
小助手也翻過車。記得幾年前有一次社區活動,對在github給項目點過star支持的社區小夥伴,小助手會寄送小紀念品。本來是善意的,但被有的开發者誤認為是用禮物換star,並在群裏直率地反饋。我們虛心接受並整改,此後自覺避嫌,再也不去做和star相關的活動。我們非常理解star是皇冠上的寶石,絕不是用來“兌換”的,應該是由真心支持、喜愛項目的开發者自發自愿的star。
相應的,對那些為开源項目做出貢獻的开發者,社區也會表示感謝,並激勵更多开發者持續共建共享,我們會公布項目貢獻者列表和季度貢獻者榜。他們會獲得別致的、值得在朋友圈曬出來的社區紀念品。這主要是精神激勵,搞起氛圍吧。我們相信帶着感恩之心攜手同行,可以讓我們走得更遠。
在开源路上,碰到一些小小的波折、誤會和挑战,都很正常。誠如人和人之間,本身也有信任建立的過程。开源社區教會我們要“換位思考”,要有“用戶思維”,因為我們已經不是自己在做事了; 我們要時刻保持謙遜,因為任何一點進步,都是來自社區的共同努力;更要保持开放和透明,無論是代碼還是運營,都會被社區多方檢視、評判和優化,畢竟“talk is cheap,show me the code”(注:code同時有“代碼”和“行為規範”的涵義)。
從這個層面看,开源項目的“star”重要,但更重要的是大家打star的理由,以及是否持續有人star。理想的境界是,大家都是社區的开發者,然後大家點的star,都是給自己,給共同的社區點贊!
躬身入局
我們再次回顧开篇的三個問題:
目前區塊鏈領域的开源社區處於什么發展階段?
开源社區參與者是“用戶”(user)為主還是“貢獻者”(contributor)為主?
項目的star數,contributor數究竟有多重要?
我給出個人答案,僅供參考。
首先,我認為區塊鏈的开源社區尚在起步階段。這跟發展時間、技術成熟度、人才梯度,以及應用的廣度和深度,都有着必然的聯系。
第二,我們不能枉顧自然規律,揠苗助長。我們首先要躬身入局,把技術和體驗做好,讓大家先能“用起來”。同時聚攏更多的人才,共同學習進步。地基扎實了,共建的人多了,user群體裏自然會湧現contributor。
第三,开源社區的理念是“授人以漁”不是“竭澤而漁”。在收獲方面,無論是項目的star還是商業化,我覺得都是順其自然,水到渠成的事情。我們已經看到,不少參與到社區的夥伴們,已然在產業中逐步开花結果。
感謝你看到了這裏。經過這幾年的酸甜苦辣,我們已經看到开源的未來篇章在徐徐展开。因為看見,所以相信;共信共建,我們將攜手不凡。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
FISCO BCOS开源社區
文章數量
3粉絲數
0