
多年前決定開源時,我們挺興奮的:作為典型碼農,“用”開源是日常,而全力投入“做”開源,對我們絕大部分人都是頭一遭,
我們也曾天真地以為:“開源”能有多難呢?!不就是把代碼放出去,大家一起用,一起寫嘛,
但是,“開源”這事兒真的是這樣子么?還是先看幾個靈魂拷問吧:
-
目前區塊鏈領域的開源社區處于什么發展階段?
-
開源社區的參與者是“用戶”(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的代碼完全開源且免費
下載地址↓↓↓
https://github.com/FISCO-BCOS/FISCO-BCOS
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/287787.html
標籤:區塊鏈
上一篇:山東大學軟體學院 區塊鏈技術
