開源思考
在2021年的年終總結中,我把參與開源比做給果園的果樹澆水。
大家參與開源專案更像是一起在給一個果園的果樹澆水,參與了這個開源專案的人都是屬於這個果園的。不同之處在於有些田主負責這一片果樹,另一些田主負責那一片果樹,有時我沒時間,你可能會給我的果樹澆澆水,我同樣也會幫助你,這樣大家一起維護一片果園。果樹結了果實,大家也是一起收穫和分享的。
這是從貢獻者的角度看開源,有一定的道理,但這個觀點不夠成熟。
首先,大家都喜歡香甜可口的水果,但他怎麼知道在你的果園給果樹澆水,果樹就會結出豐碩的果實呢?
其次,只是澆水,果樹是很難結出碩果的,還需要除草、施肥、除蟲等,大家都喜歡澆水,除草、施肥、除蟲的事情誰來做?
再次,大家守著自己的果樹就好,為什麼要給別人的果樹澆水?為什麼要一起維護同一片果園?
最後,經過大家一起漫長的培育,果樹最終碩果累累,大家如何一起分享收穫的喜悅?
這些是我這半年一直在思考的問題,總結起來就是:
運營一個開源社群究竟意味著什麼?
本文將從一個開源社群運營者的角度,嘗試做出一些粗淺的解答,如有不當之處,希望大家在評論區指正,非常感謝!
參與開源的動機
先看第一個問題,社群開發者為什麼會參與開源貢獻?
貢獻者對於開源社群來說是最關鍵的,有貢獻者參與到開源專案中來,不斷地為開源社群的繁榮和開源專案的成功做貢獻,這就是開源社群存在的意義,沒有開發者參與的社群就像一潭沒有生氣的死水。
但是開發者為什麼要參與社群,而不是做別的事情?他們為什麼要參與這個社群,而不是那個社群?
參與社群貢獻是一種行為,它和別的行為發生的原因沒有本質上的區別,受三個因素的影響:
- 動機
- 能力
- 提示
能力是可以培養的,提示可以通過技術社群進行傳遞,動機才是最關鍵的。
我覺得開發者參與開源貢獻主要有以下動機:
- 實踐:將開源社群當成一個實踐的舞臺,用來磨練自己某方面的技能,以方便未來找工作或解決現在工作中遇到的難題。
- 社交:將開源社群當成一個結識朋友的機會,向社群優秀的開發者學習,以幫助自己快速成長。
- 歸屬感:通過參與開源社群,獲得成就感、自信心、榮譽感和歸屬感,增強自己的影響力,希望得到同行的認可和尊敬。
- 商業合作:通過開源社群獲得商業合作的機會,推廣自己的品牌或者降低產品研發的成本。
實踐
為了給簡歷添彩,為了找到更好的工作,這是一個最直接的目的,可能也是大部分開發者最初接觸開源的動機。
很多公司在招聘時都會將參與開源專案當作加分項,在競爭激烈的市場環境下,求職者怎麼才能夠脫穎而出,除了紮實的技術基礎之外,參與過知名開源專案的貢獻,成為Contributor或Committer,這絕對會讓面試官眼前一亮。
為了學習新技術,比如Vue3、TypeScript、元件庫建設等,有些開發者想學某種新技術,但公司又沒有類似的專案可以實踐,參與開源專案是一個非常不錯的選擇,你可以任意選擇自己想學的開源專案,參與其中,從修復一些文件書寫錯誤,到慢慢修復一些簡單的bug,再到成為核心特性的貢獻者,這絕對是一個很好的實踐機會。
以上動機確實能吸引很大一部分貢獻者,但是這是不長久的,找到工作之後,貢獻者很可能就會離開這個開源社群,新技術學會之後,他們也會選擇離開,除非有別的東西吸引他們。
社交
我覺得社交是一個很重要的因素。
大部分開發者在公司做業務,只能接觸到有限的同事,社交的圈子一般都很小。
他們希望與人分享自己的見解,希望遇到問題有人能夠幫忙解答,希望得到前輩的指導,人都有社交需求,有討論和交流的慾望,不一定跟技術相關。
雖然在公司也能與同事交流,在技術社群(比如掘金)和各種論壇也能與別人交流,但開源社群是一個通過程式碼和實踐跟人交流技術的近乎完美的平臺。
遇到問題或者有好的想法?,你可以通過issue與別人討論;通過檢視別人的程式碼,可以學到別人做得好的地方,發現別人做得不好的地方,並通過提出檢視意見,讓對方獲得改進機會;自己寫的程式碼也會被別人檢視,並以同樣是方式讓雙方都受益。
一般有一定規模的開源社群會組織一些線上線下活動,讓開發者之間有更多的連線,促進彼此之間的瞭解。
DevUI開源社群之前就組織過田主大會,每次都會邀請一些田主一起討論元件設計的思路,或者是DevUI元件庫後續的一些規劃,或者是分享一些新技術。
這一塊後續需要繼續保持和深化,讓大家有更多交流和學習的機會,有機會也會約一些線下的沙龍和麵基,請大家喝喝咖啡,“一杯咖啡吸收宇宙能量”。
歸屬感
實踐和社交,吸引開發者加入社群,並感覺良好,但讓開發者長久留在社群的,一定是別的東西。
隨著開發者逐漸融入社群,彼此之間不斷產生連線,參與社群的互動,會形成這個社群獨特的文化氛圍,這個氛圍對於凝聚開發者至關重要。
在社群中實踐、貢獻、成長、與人互動,除了讓人產生成就感、榮譽感之外,也能讓人獲得自信,當你的想法獲得社群的認可,你的優點被看見和被鼓勵,你的善意得到回饋,這種感覺會讓人對社群產生歸屬感,這種歸屬感會讓人想要留下來。
歸屬感讓人覺得自己是屬於這個社群的,是其中的一員,在社群,自己的價值和潛力能得到最大程度的發揮,為社群做貢獻,讓社群變得更好,幫助其他人成長,這是社群的使命,也是社群成員的使命。
商業合作
前面的動機都是針對個人開發者的,商業合作則是針對企業開發者,有些企業會通過參與和自己業務息息相關的開源專案的貢獻,為的是通過開源共建,降低內部研發成本,或者提升自己企業的產品競爭力。
貢獻的另一面
程式碼是一個開源專案的核心,既然參與開源有那麼多好處,開發者會不會只想做核心的事情,即提交程式碼?
這是開源社群要面臨的很常見的問題。
開發了多少特性,提交了多少程式碼,似乎只有這些才是真正有價值的事情。
我覺得這就像是果實?和葉子?的關係。
對於一棵樹?來說,每一個組成部分都是至關重要的,樹根要扎得深才能汲取更多水分和養料,樹皮起保護和輸送養分的作用,葉子進行光合作用和呼吸作用為樹提供能量,果實為樹提供繁育下一代的種子,只有每一個部分都健康,樹才能不斷成長、不斷繁榮。
開源社群也是一樣的。
- 程式碼是產品提供服務的基礎
- 單元測試為產品提供質量防護網
- CICD等基礎設施提升產品開發和釋出的效率
- 程式碼檢視讓社群成員之間產生更多連線,讓大家可以相互學習和成長
- 文件讓產品更能被使用者接受和使用
- 推廣文章讓產品得到傳播,讓更多使用者接觸到產品
每個環節都為開源專案的成功和開源社群的繁榮提供助力,開源社群不能只有程式碼。
協作為什麼是可能的
參與開源也可以像在公司開發業務一樣,每個人負責自己的模組,有自己的一畝三分地,但這樣其實削弱了開源的力量。
開源的本質是通過協作達到思想的交流和碰撞,從而啟發創意和創新,但是大家為什麼要協作呢?
我覺得原因在於開放性,開源專案的幾乎一切都是透明公開的,我們可以看到別人的程式碼,能看到哪些地方做得好,哪些地方做得不好,正是因為有做得不好或不完善的地方,我們才有貢獻的機會。
自己有時很難看到自己的問題,你優化一點,我改進一點,集思廣益,通力協作,才能讓開源專案變得更好。
另外就是開源社群的文化氛圍,如果開源社群是鼓勵協作和交流的,大家都會願意一起協作。
收穫和貢獻成正比
在開源社群,每個人都是平等的,不管你的國籍、膚色、性別、年齡、背景、宗教信仰如何。
在開源社群只看貢獻,誰貢獻大,誰的話語權高。
這裡的貢獻不僅僅是程式碼,包含很多方面,任何有益於專案成功、有益於社群繁榮的事情,都是貢獻。
貢獻不是一簇而成的,而是經過時間的積累,慢慢形成的,貢獻會隨著時間的積累慢慢形成社群的影響力。
開源總結
接下來給大家同步下 DevUI 開源社群近半年取得的一些成果吧。
最讓人驚喜的是:
- Vue DevUI 實現
Table
/Tree
/DatePicker
/Form
等複雜元件突破,達到v1.0
版本釋出要求 - React DevUI 完成從0到1的突破,目前已有
32
個元件 - Ng DevUI 周下載量突破
1000
掘金
上半年釋出15篇文章,掘力值從 6975 增加到 9507
,快升級Lv5
啦,衝鴨!
指標項 | 指標值 |
---|---|
等級 | Lv4 |
文章數 | 113 |
掘力值 | 9,507 |
關注者 | 2,446 |
點贊數 | 5,020 |
閱讀數 | 448,803 |
以下是掘金內容資料:
Ng DevUI
由於國內 Angular 生態不佳,Ng DevUI 從2019年開源到現在,3年多時間,資料一直都不行,雖然我們已經很努力地在社群進行推廣,也為Ng佈道:
Ng很好用,很規範,上手門檻也沒有那麼高,順便還可以學習下 TypeScript 和 RxJS 這些流行和先進的技術。
不過參與貢獻的開發者寥寥無幾,貢獻者的數量一直未超過20,周下載量也是常年100的量級。
Ng DevUI 作為整個華為雲DevCloud商用業務、以及眾多內部服務的體驗基座,已經被廣泛使用五六年了,是一個經過時間和大量使用者考驗的相對比較成熟的Ng元件庫,為什麼那麼少人用呢?
今年上半年終於實現了一個小小的突破:
npm 周下載量超過 1000
雖然和material-ui
/ng-zorro-antd
這些業界優秀的Ng元件庫相比,還有很大的差距,不過也算是這三年來最大的一次鼓勵啦!
我們還專門寫了一篇文章表達喜悅之情:
以下是 Ng DevUI 下載量趨勢圖:
Vue DevUI
Vue DevUI 從2021年開源到現在,一直比較受歡迎,社群活躍度也很高。
這半年來:
- Contributor 數量從 54 增加到
72
- Star 數從 110 增加到
361
- PR 數從 411 到
1102
- Commit 數從 1712 到
2587
- Download 數從 1366 到
3989
v1.0
正式版本近期也將釋出,盡請期待!
好不好用,試了才知道哦,覺得好用可以給我們點個星星Star?
Vue DevUI:100多位貢獻者持續530多天,寫了近60000行程式碼,這個新鮮出爐的 Vue3 元件庫你不想嘗試下嗎?
不好用,也歡迎給我們提issues。
更歡迎你加入進來一起共建:
https://vue-devui.github.io/contributing/
React DevUI
React DevUI 是由 DevUI 開源組織 PMC 成員 Xie Jay 發起的開源專案,目前已經有32個元件啦!
歡迎大家體驗和參與共建,以下是React DevUI
官網:
想了解更多 React DevUI 的資訊,可以參考我們之前釋出的文章:
React DevUI:React 18 還沒正式釋出,我們已經開發了一個基於 React 18 的元件庫
也可以新增 DevUI 小助手微信:devui-official,拉你進我們的技術交流群。
種子終會破土而出
給大家分享一個小故事,我是一個綠植愛好者,2017年我家有一位新的綠植?成員加入,它剛來的時候是這樣的:
這些年來我們不斷地有添置新綠植,有很多都枯萎了,唯有這一株,經歷了起起伏伏,不斷地有葉子枯萎凋謝,又不斷地在來年綠葉成蔭。
今年對它來說似乎是最困難,我不斷地看到它的葉子在枯萎,一片、兩片,從最初的20多片葉子?,到最後只剩半片葉子。
中間也嘗試搶救過很多次,澆水、施肥、搬位置、換土、移花盆,依然不見好轉,葉子依然一片一片地凋零?。
當我摘除它的最後一片金黃色的枯葉?時,我自己都對它失去信心,放在陽臺不再去管它。
我只記得過了很久很久,我最後一次看它的時候,它只剩最後半片葉子(真的是半片葉子,有圖為證)。
直到前兩天我去給別的植物澆水的時候,突然發現這株綠植竟然神奇地長出了新芽!
驚喜之餘,我給它拍了張照片,它現在長這樣(拍攝於2022年7月9日):
不知道這株植物的種子在黑暗潮溼的土壤中經歷了什麼,等待了多久,只知道它最終突破而出了,而且堅信它最終又將會綠葉成蔭?。
我們有時和這株綠植其實是很相似的,有些事情很困難、模糊、未知,也不知道有沒有結果,有時甚至不知道該做什麼才能有結果,我們會想放棄。
我們知道放棄是很容易的,我們不能輕易放棄,我們想到了自己的初心,我們為此付出了很多,我們必須堅持到底,我們知道:
種子終會破土而出,迎接它的是溫暖的陽光、溼潤的雨露和成長的喜悅!
最後,給大家分享一個非常硬核的荒野求生系列視訊:女生無工具求生東南亞叢林100天,來自B站Up主麻雀喳喳野行記。
除了渣爺真實的、硬核的100天荒野求生過程本身之外,還有以下幾點非常打動我:
- 脫口而出的詩經、經典的唐詩宋詞、現代詩,關鍵這些詩句都非常應景
- 豐富的中草藥知識,每種草藥的形態特性、作用如數家珍,彈幕都說渣爺是“行走的本草綱目”
- 對大自然和生命的敬畏,在荒野求生過程中抓到蛇、鳥等動物都會放生,自己只吃魚蝦蟹、野果等
- 最關鍵的是堅定的信念、驚人的毅力和強大的心理素質,以及在絕望中表現出來的樂觀、自信