開源路上的酸甜苦辣

多年前決定開源時,咱們挺興奮的:做爲典型碼農,「用」開源是平常,而全力投入「作」開源,對咱們絕大部分人都是頭一遭。git

咱們也曾天真地覺得:「開源」能有多難呢?!不就是把代碼放出去,你們一塊兒用,一塊兒寫嘛。程序員

可是,「開源」這事兒真的是這樣子麼?仍是先看幾個靈魂拷問吧:github

目前區塊鏈領域的開源社區處於什麼發展階段?
開源社區的參與者是「用戶」(user)爲主仍是「貢獻者」(contributor)爲主?
項目的star數和contributor數究竟有多重要?算法

徐徐幾年,衆多社區夥伴圍繞FISCO BCOS開源了諸多項目,覆蓋了區塊鏈核心技術、應用開發到運營運維治理的全領域。社區彙集了4萬多名開發者關注者,2000多個機構,數以百計的應用已經在生產環境穩定運行,社區和產業生態活躍度在圈子裏也得到了諸多好評。sql

2021年3月,國家「十四五」規劃綱要發佈,「開源」首次列入其中,指出要支持數字技術開源社區等創新聯合體發展,完善開源知識產權和法律體系,鼓勵企業開放軟件源代碼、硬件設計和應用服務。json

今年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」。開源項目大抵也如此,若能再有一點極客氣質,那就更讚了!

圖片

授人以漁

在解決了使用門檻的問題後,咱們觀察到社區問題在變化。

圖片

首先,「簡陋、用不起來、運行出錯」這些可用性方面的問題明顯減小了。

部署搭建等問題增長了,咱們分析,這是由於有更多人在實操搭鏈了。搭建過程當中,難免還有一些小的磕磕碰碰,又或者遇到一些概念性和體驗感上的問題,須要諮詢交流。固然,這也說明軟件使用流程,仍是文檔都還有提高空間。

功能性問題的大幅增加,佐證着咱們的技術、組件確實是被更普遍地用起來了。許多人在規劃網絡拓撲、寫合約調接口,在分配權限、分析數據,又或者是在不一樣的應用場景探索着更多區塊鏈能力。

最使人欣喜的是,你們對區塊鏈原理、架構、算法的探討更多了、更深了。交流中不時迸發出火花,觸發靈感。這對明確後續的優化方向,規劃版本,增長特性,以及共同建設都有很是好的參考價值。

社區就像一面鏡子,種種變化明晰可見,映出技術的完善,也見證社區的成長。

對於這個階段,咱們也有一些思考:

一、不要期望聊天羣能解決全部問題

咱們有「社區答疑」排班,若是值班的同窗遇到解答不上的難題,將請小組智囊團分析,總之,咱們的要求是儘快答覆解決,「當日問題當日畢」;尤爲是線上產生的問題,要優先跟進。

我曾經花了一個晚上翻看幾個月的羣記錄,算了下咱們開源團隊每人跟進過的問題數,量仍是比較大的(以下是其中一頁)。更難能難得的是,團隊成員的態度和積極性都很是到位,往往及時解決問題,並找到了優化點,他們本身也挺開心。

言無不盡地順暢交流,聚焦解決痛點的社區答疑體系,確實在業內爲咱們樹立了很是不錯的口碑。

圖片

聊天羣的好處在於交流無比便捷,其不足也顯而易見,羣聊會吸引很多注意力,聊天記錄難以被其餘人翻查,不利於積累和複用。隨着新人的不斷加入,很多常見問題的重複率極高。技術論壇應該是不錯的互補。固然技術論壇的搭建和維護,也是須要投入的。

而隨着社區人數和領域覆蓋面爆發式擴張,單憑開源工做組來在線答疑,是不是最佳解呢?咱們思考之餘,以爲這也算是「幸福的煩惱」吧。

二、不要期望文檔解決全部問題

軟件質量基本穩定後,每當看到問題,個人第一反應經常是,「是否是文檔沒寫清楚?!」

開源項目文檔包括使用手冊、開發教程、術語和概念、架構原理、FAQ等等,可謂「汗牛充棟」。好在線上文檔支持關鍵字檢索,基本上能想到的知識點,均可以檢索出來。

同時,在公衆號、合做媒體上,咱們也發佈了多角度的文章,嘗試跳出技術細節,去澄清區塊鏈思惟,科普區塊鏈學習方法,把經驗和教訓傳承起來。咱們真心的但願這些文章能給不一樣階段的讀者一些啓發,從技術的「第一性原理」出發,觸類旁通,直達區塊鏈知識內核。

圖片

但咱們發現,理想和現實是有差距的:文檔怎麼寫都會掛一漏萬;用戶的操做路徑、思考模式和咱們預期的不同;以及環境不同,出的問題也會不同……

此外,受傳播渠道、曝光率等諸多緣由的影響,文檔並無傳播到全部用戶;或者由於文檔目錄結構太深,用戶確實沒看到特定知識點;即便是看到了文檔,面對上百萬字的浩瀚篇幅,不少人會表示:「nice,先收藏慢慢看」……種種因素均可能致使文檔的有效閱讀吸取率並不樂觀。

其實,用戶根本不太想去看長篇大論,他只想趕忙解決手頭上的問題。

整體來看,文檔必定要有,還要好。但文檔就像寶藏,適合慢慢挖掘,難解燃眉之急。

三、不要期望本身就能解決全部問題

日拱一卒,遇到一個問題解決一個問題,就萬事大吉了麼?

用戶問題確實是最好的方向標,若是一個問題一個星期內出現了兩次以上,並且仍是由不一樣的用戶問到的,那麼能夠確定,是個須要優先解決的問題。

對不一樣的問題有不一樣的解法:能夠迭代新版本把問題修掉,讓它再也不出現;也能夠是修訂文檔,並給出顯眼的文檔入口供參考;甚至能夠是跟用戶聊聊,對齊了概念和思路,有的問題就消解了。解法不少,但關鍵是要快、要準、要閉環。

實踐也證實,開源工做組不可能包辦一切,好比有些用戶的需求比較場景化,不適合放到主版本里,由開發者拉分支定製開發更爲合理。有些問題跟不一樣環境、不一樣業務領域有關。事實上,開源工做組對不少領域也並不是專家,只能是根據本身的理解,從技術角度切入和你們交流探討,指望能互相啓發。

本質上,若是隻有開源工做組在作單向輸出,用戶是沉默的大多數,這樣的社區勢必會變得沉悶、無聊,也很快會遇到天花板。理想的模式是在整個社區造成正循環發展:老手幫助新手,新手成爲老手,老手直接上手寫代碼,分佈式解決問題和知足需求。整個過程你們都有貢獻、有創新、有積累、有提高。

咱們有時候會想,開源工做組是否是要稍微日後退一小步?咱們更多的作好服務和佈道的角色,以科普引導、激發鼓勵爲主,給社區小夥伴們更大的舞臺,這樣效果是否是更好?因此,咱們除了寫代碼,還寫文檔、寫教材,參與國家人才標準編寫,組織線上線下的沙龍、培訓、黑客鬆,這都是「授人以魚,不如授人以漁」。

在行業發展的爬坡期,咱們但願幫助更多的人學起來,用起來,讓人才多起來。邁過了技術門檻的用戶一旦成爲嫺熟的開發者,那麼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

相關文章
相關標籤/搜索