铁头乔:开源社区那些事
?
本文字數(shù):2948 字
閱讀時間:8 分鐘
目
錄
舉個例子
開源社區(qū)如何起步
起步后的困難在哪
是什么激勵我們
舉個例子
大家經(jīng)常看到開源社區(qū)這四個字,什么是開源社區(qū)呢?咱們先看個例子。
一個程序員 A,寫了一個簡單的計算器,支持加減乘除四個功能,然后公開到網(wǎng)上了,類似一個在線文檔,可以協(xié)同編輯,他就成了第一個貢獻者。
有一些人發(fā)現(xiàn)這個計算器的風(fēng)格挺好看,就下載使用了,于是就成為了開源用戶。用戶在用的過程發(fā)現(xiàn)缺少了一些高級功能,于是開始提新需求。
這些用戶里,有一個也是程序員,他想了想,與其等原作者開發(fā),不如自己動手寫了,畢竟代碼都是公開的,他就開始向這個計算器里增加新的代碼和文檔。于是他又多了一個身份:貢獻者。?
還有一些程序員,他們本身不需要用計算器,但是他們發(fā)現(xiàn)這個計算器的代碼水平很高,于是一邊看代碼學(xué)習(xí),一邊提交一些代碼和文檔,于是他們也成為了貢獻者。
還有一些人,覺得這個計算器項目很有意義,于是開始給朋友推薦這個計算器,他就成為了布道師。
用戶、貢獻者、布道師,開源社區(qū)里主要就是這些角色。
所有圍繞這個開源計算器項目的參與者就構(gòu)成了這個項目的開源社區(qū)。一般來說項目和開源社區(qū)是一對一的。
一個開源項目的代碼可以商用嗎,商用時 Bug 造成了損失能找開發(fā)者索賠嗎,基于這些代碼改的代碼也需要開源嗎,這些是開源協(xié)議明確的事情。如 Apache 協(xié)議、BSD 協(xié)議、MIT 協(xié)議、木蘭協(xié)議等。通常被 OSI (Open Source Initiavite 開源促進會)https://opensource.org/licenses/category 認證的才算開源協(xié)議。
為了讓大家協(xié)作的更好,需要有一套完整的流程引導(dǎo)大家工作,告訴大家這個項目的運轉(zhuǎn)規(guī)則,比如在哪里進行交流討論、如何發(fā)布版本、如何接受一個人的修改建議等,這就是開源社區(qū)規(guī)范。這個沒有標準模板,每個社區(qū)都可以制定自己的規(guī)范。
為了促進開源項目的發(fā)展,會有一些組織,幫項目提供知識產(chǎn)權(quán)服務(wù)、指導(dǎo)項目建立開源社區(qū)規(guī)范、提供一些技術(shù)和平臺支持,這就是開源軟件基金會。如 Apache 基金會、Linux 基金會、CNCF 基金會、開放原子基金會等。基金會通常會為項目分配社區(qū)導(dǎo)師來進行實際的指導(dǎo)。
從上邊的例子可以看到,開源社區(qū)是一個虛擬世界的概念,他不要求社區(qū)中的人物理上在一個城市、一個小區(qū),社區(qū)的人甚至沒有互相見過面,但這不影響他們一起協(xié)作,而且也不是只有程序員才能參與開源社區(qū),文檔貢獻、Logo設(shè)計、活動組織、宣傳等都是可以參與的建設(shè)活動。
開源社區(qū)如何起步
我最開始接觸開源,是在做一個項目過程中遇到了問題,于是去相關(guān)項目的 Github 中提問,當(dāng)時有一個國外小哥很快回答了我的問題,這是我第一次享受到開源社區(qū)對用戶的福利。作為回報,我關(guān)注了這個小哥。
在做時序數(shù)據(jù)庫 IoTDB 的過程中,我們也幸運地進入 Apache 開源軟件基金會,在社區(qū)導(dǎo)師的指導(dǎo)下,開始建設(shè)我們的開源社區(qū)。雖然有很多不熟悉的,但還是朝著正確的方向前進。
開源社區(qū)建設(shè)有幾個重要的方向:
項目整理:按照 Apache 的規(guī)范整理代碼、用戶手冊、開源協(xié)議,并且學(xué)習(xí)版本發(fā)布計劃,這個階段是讓項目合法合規(guī),這是建設(shè)社區(qū)的第一步,也是需要持續(xù)關(guān)注的。
社區(qū)宣傳:把代碼公開并不會給項目帶來多少流量,需要通過各種宣傳渠道讓別人了解你的開源項目。
服務(wù)用戶:一個開源社區(qū)的目標一定是讓軟件被更多人用起來,所以服務(wù)用戶是每個社區(qū)的主線工作。包括開發(fā)用戶需要的功能、修復(fù)用戶發(fā)現(xiàn)的bug、寫文檔讓用戶更便捷地使用起來。
貢獻者協(xié)作:貢獻者往往不是一個人,而且通常是遠程交流,為了更好地服務(wù)用戶,現(xiàn)有貢獻者通常希望實現(xiàn)兩件事:吸引更多的貢獻者、和其他貢獻者高效地分工合作。這就需要社區(qū)有一套完善的工作機制,讓每個人都能找到自己合適的位置,并且做出貢獻。
起步后的困難在哪
上邊四項聽起來并不難嘛,確實,起步不難。但是做好并不容易,接下來講幾個場景。
(1)持續(xù)合規(guī):項目中依賴的其他開源項目都需要滿足一定的開源協(xié)議要求,并且進行聲明。但并不是社區(qū)所有人都清楚開源協(xié)議的具體要求的,畢竟大家不都是法務(wù),于是可能某一次代碼合并就引入了一個不符合要求的項目。
解法:需要通過一些工具來進行檢查,在發(fā)版前都要一一確認。
(2)宣傳:很多開發(fā)者都喜歡低調(diào)研究技術(shù),并不喜歡宣傳自己在干什么,于是了解項目的人就少。
解法:要鼓勵大家寫文章,有意識地與人交流,多做分享。
(3)交流:與開源用戶交流通常是在線上。而且不同用戶的背景和語境都不一樣,導(dǎo)致交流困難,所以你會發(fā)現(xiàn)每個社區(qū)與用戶交流較多的都是那么幾個人。
解法:多與用戶接觸,之后就能適應(yīng)各個用戶的語境,快速切換語料庫。
(4)文檔:程序員都喜歡看文檔,但是都不喜歡寫文檔,尤其是用戶手冊,或者用戶手冊寫的別人并不能看懂。
解法:把自己當(dāng)做產(chǎn)品經(jīng)理,多從產(chǎn)品的角度思考。
(5)協(xié)作:通常社區(qū)的貢獻者都是一個一個小團隊,每個小團隊是線下一起辦公的,大家肯定更習(xí)慣面對面討論,通常團隊內(nèi)討論出來結(jié)果就直接開干了,并不會有跟社區(qū)同步的意識,這就會導(dǎo)致社區(qū)貢獻者之間不知道其他人在干什么,也可能做了重復(fù)、沖突的工作。
解法:團隊內(nèi)要注意多把開發(fā)計劃和社區(qū)同步,尤其是團隊負責(zé)人要有這個意識。
(6)培養(yǎng):新人加入社區(qū),通常需要有老人帶,老人只能通過給新人分配任務(wù)的方式培養(yǎng)新人。這時候老人可能會有一種心理,我又不是新人的上級,給他們分配任務(wù)是不是不太好。
解法:要臉皮厚一些,習(xí)慣跟新人說“來做個這個任務(wù)吧”。
(7)鼓勵:對于新人來說,開發(fā)過程中會遇到各種各樣的小問題,即使指定了一個老人帶他,也會不好意思問,覺得這個問題太小了,是不是自己太菜了。
解法:要多鼓勵新人提問,不分大小,并且總結(jié)常見問題給更多新人參考。
(8)協(xié)商:不同開發(fā)者對于同一件事的觀點不同,我想用方案1實現(xiàn),你想用方案2實現(xiàn),怎么辦?
解法:可以定義框架,大家對外暴露的功能一樣,但是允許有不同的實現(xiàn)方案。如果是功能不同,可以考慮提供配置參數(shù)進行功能切換。
是什么激勵我們
上邊只列了一些困難和可能的解法。接下來到了核心問題。社區(qū)貢獻者為什么要費這么大勁來做這些事,社區(qū)做大了對個人有什么好處?
(1)對用戶兼貢獻者友好
社區(qū)做大了,用戶的體驗一定會變好,因為軟件會更完善,維護者也會更多。很多貢獻者本身就是用戶,所以這是一件對自己有直接好處的事。
(2)技術(shù)能力提升
一些開發(fā)者,工作之余還有精力,想積累一些項目經(jīng)驗,鍛煉編碼水平,這時候就可以參與到開源社區(qū)中,鍛煉技術(shù)能力,做的越多,收獲越多。
(3)提升影響力
在社區(qū)中,解答用戶的問題、培養(yǎng)新人、貢獻代碼,這些貢獻別人都會看在眼里、記在心里,這樣就提升了自己在社區(qū)的影響力。
(4)獲得友情、甚至愛情
一個社區(qū)的人通常都有共同的目標,大家一起扛過槍,服務(wù)過用戶,關(guān)系會更緊密。對于一些不會追女生的男生,聊代碼、聊技術(shù)也是一個好的活動。
(5)理想
項目的每個貢獻者,不論貢獻多少,都會有一種希望,希望社區(qū)越來越好。而且貢獻越多,希望會越強烈。當(dāng)社區(qū)足夠出名,他能很自豪的跟別人說:我也是這個社區(qū)的貢獻者。
最后,歡迎大家加入 Apache IoTDB 社區(qū),為國產(chǎn)時序數(shù)據(jù)庫貢獻力量。至于如何加入,可以在公眾號加我微信。
長
按
關(guān)
注
鐵頭喬
生命,永不低頭。
總結(jié)
以上是生活随笔為你收集整理的铁头乔:开源社区那些事的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学期间的副业赚钱之道
- 下一篇: 英雄杀判定