建立成功的項(xiàng)目
你們已經(jīng)啟動了你們的項(xiàng)目,你們正在傳播它揭厚,同時(shí)有人正在查看它。真棒扶供!現(xiàn)在筛圆,你如何讓他們堅(jiān)持下去。
一個(gè)受歡迎的社區(qū)是對你們項(xiàng)目的未來和聲譽(yù)的投資椿浓。如果你的項(xiàng)目才開始收到第一次貢獻(xiàn)顽染,那么你們需要盡早的給貢獻(xiàn)者們一次積極的經(jīng)歷,以至于能讓他們繼續(xù)參與貢獻(xiàn)轰绵。
讓大家感到受歡迎
可以通過被@MikeMcQuaid稱之為貢獻(xiàn)者漏斗的方法思考你們項(xiàng)目的社區(qū)粉寞。
當(dāng)你們建立了自己的社區(qū),你需要考慮如何讓那些處在漏斗上方的人(潛在用戶)轉(zhuǎn)移到漏斗下方(活躍的維護(hù)者)左腔。你們的目標(biāo)是減少貢獻(xiàn)者們在每個(gè)階段遇到的摩擦唧垦。當(dāng)人們能夠輕易的取得勝利時(shí),他們會樂意去做更多事液样。
從你的文檔開始:
- 讓大家很容易使地用你的項(xiàng)目振亮。 一份友好的 README以及清晰的代碼示例將讓大家很簡單地開始你們的項(xiàng)目。
- 清楚的解釋如何做貢獻(xiàn)鞭莽,使用你的CONTRIBUTING file以及持續(xù)更新issues坊秸。
好的文檔能夠邀請他人參與你們項(xiàng)目的互動。最終澎怒,一些人會開一個(gè)issue或者pull request褒搔。將這些互動視為機(jī)會,將他們轉(zhuǎn)移到漏斗的下方喷面。
- 當(dāng)一些人選擇了你們的項(xiàng)目星瘾,請對他們表示感謝!僅僅只是一次消極的經(jīng)歷就能讓一些人不想再回來惧辈。
- 及時(shí)回應(yīng)琳状。如果你們一個(gè)月都沒有回答他們的問題,他們可能早已忘記了你們的項(xiàng)目盒齿。
- 對你以后接受的所有貢獻(xiàn)者持開放態(tài)度念逞。 很多貢獻(xiàn)者是從一份bug報(bào)告或者小的修復(fù)開始的。這里有很多為項(xiàng)目做貢獻(xiàn)的方式边翁。讓大家選擇他們喜歡的方式翎承。
- 如果你不贊成一個(gè)貢獻(xiàn), 首先你需要對他們的想法表示感謝倒彰,同時(shí) 解釋為什么它不適合項(xiàng)目审洞,如果有必要的話你可以給出相關(guān)的文檔鏈接。
為開源做貢獻(xiàn)對一些人來說很簡單待讳,但對另外一些人可能就不是這樣了芒澜。有很多人因?yàn)闆]有做正確的事而害怕叫喊,或者只是不適合创淡。(痴晦。。琳彩。)通過允許貢獻(xiàn)者參與一些對技術(shù)要求比底的工作(文檔誊酌,web content markdown,etc)露乏,可以極大的減少你對這些情況的關(guān)注碧浊。
— @mikeal, "Growing a contributor base in modern open source"
多數(shù)開源貢獻(xiàn)者是“臨時(shí)貢獻(xiàn)者”,因?yàn)樗麄冎皇桥紶枀⑴c項(xiàng)目貢獻(xiàn)瘟仿。一位臨時(shí)貢獻(xiàn)者可能沒有充足的時(shí)間全程跟蹤你的項(xiàng)目箱锐,所以你們的工作是能讓他們很容易地參與貢獻(xiàn)。
鼓勵其他的貢獻(xiàn)者也是對你們項(xiàng)目的一種投資劳较。當(dāng)你們授權(quán)大量的粉絲做他們感興趣的工作時(shí)驹止,你們的壓力就少了很多。
記錄一切
你是否參加過一個(gè)(技術(shù))活動观蜗,你不認(rèn)識在場的人臊恋,但是似乎每個(gè)人站在一個(gè)小組里像老朋友一樣聊天?(墓捻。抖仅。。)現(xiàn)在想象下你想為一個(gè)開源項(xiàng)目做貢獻(xiàn)砖第,但是你不知道為什么或者這個(gè)是如何發(fā)生的岸售。
— @janl, "Sustainable Open Source"
當(dāng)你開始一個(gè)新項(xiàng)目,你會覺得保持工作的私有性是正常的厂画。但是開源項(xiàng)目發(fā)開始于你在公共平臺記錄自己的工作進(jìn)程凸丸。
當(dāng)你門把事情記錄下來,會有更多的人能夠按照你們的方式參與每一步袱院。你可能會得到意想不到的幫助屎慢。
書寫東西不僅僅只是技術(shù)文檔。任何時(shí)刻忽洛,你們有寫一些東西或者私自討論項(xiàng)目的沖動腻惠,請?jiān)儐栕约菏欠衲軐⒅_。
保持項(xiàng)目透明的項(xiàng)目路線:你們期待什么類型的貢獻(xiàn)者欲虚,如何審查貢獻(xiàn)集灌,或者你們?yōu)槭裁醋瞿承Q定。
如果你們注意到有多個(gè)用戶遇到過同樣的問題,那么你們應(yīng)該將答案記錄在README中欣喧。
對于經(jīng)常遇到的問題腌零,你們可以考慮發(fā)布你們的筆記或者相關(guān)的issue。在這種情況下得到的反饋將會令你們驚訝唆阿。
記錄一切也適用于你們的工作益涧。如果你正在進(jìn)行大量的更新工作,請將其放入pull request并標(biāo)記為正在進(jìn)行(WIP)驯鳖。這樣闲询,可以讓其他人感覺參與過早期工作。
積極回應(yīng)
一旦你推廣項(xiàng)目浅辙,人們將會給你們反饋扭弧。他們可能會問項(xiàng)目是如何工作的,或者需要你們幫助開始項(xiàng)目记舆。
當(dāng)有人列出一條issue鸽捻,提交一個(gè)pull request,或者詢問項(xiàng)目的有關(guān)問題時(shí)氨淌,你們應(yīng)該盡量回答他們泊愧。當(dāng)你們快速地做出回應(yīng)時(shí),人們將感覺到他們參與了對話盛正,以及他們將會更熱情地參與删咱。
如果你無法及時(shí)審查請求,請盡早確認(rèn)豪筝,這樣會有助于提高參與度痰滋。這里是@tdreyno在Middleman上如何回應(yīng)一個(gè)pull request:
一份Mozilla研究發(fā)現(xiàn) 如果貢獻(xiàn)者在48小時(shí)內(nèi)收到代碼審查,他們會有很大的可能返回以及重復(fù)貢獻(xiàn)续崖。
與你們項(xiàng)目有關(guān)的話題也可能發(fā)生在互聯(lián)網(wǎng)的其它地方敲街,例如Stack Overflow,Twitter严望,或者Reddit多艇。你門可以在像這樣的一些網(wǎng)站設(shè)置通知,這樣當(dāng)有人提及你們項(xiàng)目時(shí)可以收到提醒像吻。
為你們的社區(qū)提供一個(gè)聚會的場所
有兩個(gè)理由可以解釋為什么要給社區(qū)提供一個(gè)聚會的場所峻黍。
第一個(gè)理由是為了他們。幫助人們相互認(rèn)識拨匆。有著共同興趣的人會想要一個(gè)可以聊天的地方姆涩。同時(shí)當(dāng)信息是公開的而且是適宜的時(shí)候,任何人可以閱讀過去的檔案以至于能夠快速的追趕以及參與惭每。
第二個(gè)理由是為了你們骨饿。如果你們沒有提供一個(gè)公共的場所來談?wù)撃銈兊捻?xiàng)目,他們可能會直接與你們聯(lián)系。剛開始時(shí)宏赘,回復(fù)私有來信可能對你們來說很輕松绒北。但是經(jīng)過一段時(shí)間后,尤其是如果你們的項(xiàng)目變得流行的時(shí)候置鼻,你們就會感到累了镇饮。不要私下和人們談?wù)撃銈兊捻?xiàng)目蜓竹,而是直接指明他們?nèi)ブ付ǖ墓睬馈?/p>
公共交流和指明人們開一條issue一樣簡單箕母,而不是直接發(fā)給你們發(fā)郵件或者在你們的博客發(fā)表評論。你們也可以為了方便人們談?wù)撃銈兊捻?xiàng)目設(shè)置一個(gè)郵件列表俱济,或者創(chuàng)建一個(gè)Twitter賬號嘶是,Slack,護(hù)著IRC渠道蛛碌∧衾或者嘗試上述的所有方式。
Kubernetes kops sets aside office hours every other week to help community members:
Kubernetes kops 每隔一周抽出辦公時(shí)間幫助社區(qū)成員:
Kops每隔一周都會留出時(shí)間為社區(qū)提供幫助和指導(dǎo)蔚携。Kops維護(hù)者已經(jīng)同意留出時(shí)間專門與新手一起工作希太,幫助PRs,以及討論新特性酝蜒。
公開交流需要特別注意的異常有:1)安全的issues和2)敏感的行為準(zhǔn)則誊辉。你們應(yīng)該為大家提供一個(gè)私下報(bào)告這些issue的方式。如果你們不想使用自己的個(gè)人郵箱亡脑,那么就創(chuàng)建一個(gè)準(zhǔn)用郵箱堕澄。
讓社區(qū)成才
社區(qū)非常有能量。這種能量可能是祝福也可能是詛咒霉咨,這取決于你們?nèi)绾螆?zhí)掌它蛙紫。隨著你們項(xiàng)目社區(qū)的成長,有辦法幫助它成為一股有建設(shè)性的力量途戒,而不是具有破壞性的坑傅。
不要容忍糟糕的角色
一些流行的項(xiàng)目將不可避免地回吸引來一些傷害它們的人。他們可能從一些沒必要的爭論開始喷斋,對一些細(xì)小的功能進(jìn)行謬論唁毒,或者傷害他人。
對于那種類型的人你們必須采取零容忍的政策继准。如果發(fā)現(xiàn)較晚枉证,那些消極的人將會社區(qū)中的其他人不舒服。他們可能會離開移必。
事實(shí)是室谚,擁有一個(gè)支持性社區(qū)是關(guān)鍵。如果沒有來自我的同事,互聯(lián)網(wǎng)上一些友好的陌生人秒赤,以及聊天渠道IRC的幫助猪瞬,我不可能做好這些工作。(入篮。陈瘦。。)不要太少潮售。不要找麻煩痊项。
— @karissa, "How to Run a FOSS Project"
定期對你們項(xiàng)目瑣碎方便的辯論,使他人酥诽,包括你們不能把注意力集中于重要的任務(wù)上鞍泉。新人如果看見這樣的情景,他們是不會加入你們項(xiàng)目的肮帐。
當(dāng)你們發(fā)現(xiàn)社區(qū)中有消極行為時(shí)咖驮,需要公然指出來。特別說明的是训枢,要用堅(jiān)定的語氣解釋他們的行為為什么是不可接受的托修。如果這種問題繼續(xù)發(fā)生,你們有必要要求他們離開恒界。你們的行為準(zhǔn)則是為這些情景準(zhǔn)備的建設(shè)性指南睦刃。
知道貢獻(xiàn)者在哪里
隨著你們項(xiàng)目的成長,好的文檔只會變得越加重要仗处。臨時(shí)貢獻(xiàn)者不可能對項(xiàng)目非常熟悉眯勾,通過閱讀你們的文檔他們能很快找到他們需要的。
在你們的CONTRIBUTING文件里婆誓,需要明確告訴新來的貢獻(xiàn)者該如何開始吃环。你們可能為了想要達(dá)到這個(gè)目的而準(zhǔn)備一個(gè)專門的部分。
在你們的issue列表中洋幻,bugs標(biāo)簽需要適合不同類型的貢獻(xiàn)者:例如郁轻,"first timers only", "good first bug", 或者 "documentation". 這些標(biāo)簽能夠幫助新人快速瀏覽issues以及開始。
最后文留,使用你們的文檔讓人們在每一步都感到歡迎好唯。
你們永遠(yuǎn)不會與登陸項(xiàng)目的大多數(shù)人互動。你們可能沒有收到一些貢獻(xiàn)燥翅,因?yàn)橛行┤烁械胶ε禄蛘卟恢獜暮烷_始骑篙。即使是幾個(gè)字也能阻止一些人沮喪地離開你們的項(xiàng)目。
例如森书,這里是Rubinius如何開始它的貢獻(xiàn)指南:
我們想感謝你們使用Rubinius靶端。這個(gè)項(xiàng)目是一個(gè)充滿愛的勞動谎势,我們希望所有用戶查找bugs,取得性能上的提升杨名,以及幫助完善文檔脏榆。每一個(gè)貢獻(xiàn)都是有意義的,所以感謝你們的參與台谍。話雖如此须喂,但我們還是要求你們遵守一些指南,這樣我們就能夠找到你們的issue趁蕊。
分享你們項(xiàng)目的所有權(quán)
你們的領(lǐng)導(dǎo)者們將有不同的觀點(diǎn)坞生,因?yàn)檫@是所有健康社區(qū)都該做的!然而介衔,你們會體會到粗暴魯莽的做法不能得到大家的認(rèn)同恨胚,反而謙虛低調(diào)的做法更容易讓大家接受骂因。
— @sarahsharp, "What makes a good community?"
當(dāng)大家覺得擁有項(xiàng)目的所有權(quán)時(shí)炎咖,他們會樂意為項(xiàng)目做貢獻(xiàn)。這并不意味著你們需要轉(zhuǎn)變項(xiàng)目的愿景或接受你們不想要的貢獻(xiàn)寒波。但是你們越信任他們绸栅,他們就會越忠誠辰企。
看你們是否能盡快地找出向社區(qū)分享所有權(quán)的方法。下面有些建議:
- 反對你們自己修復(fù)簡單(非關(guān)鍵)的bugs。 相反,使用它們作為招募新貢獻(xiàn)者的機(jī)會昔园,或者指導(dǎo)想要參與貢獻(xiàn)的人逃魄。開始時(shí)可能效果不是很理想工禾,但經(jīng)過一段時(shí)間你們會得到想要的結(jié)果妨退。例如幸乒,@michaeljoseph要求一位貢獻(xiàn)者提交一個(gè)pull request在一個(gè)Cookiecutter issue的下面,而不是自己修復(fù)它杆查。
在項(xiàng)目中添加一個(gè)貢獻(xiàn)者或者作者文件用于記錄每一個(gè)參與貢獻(xiàn)的人烙肺。
如果你們的社區(qū)有了一定的規(guī)模沙绝,那么發(fā)送一封信或者發(fā)表一篇博客感謝貢獻(xiàn)者們。Rust的This Week in Rust和Hoodie的Shoutouts是兩個(gè)非常好的示例。
給每個(gè)貢獻(xiàn)者commit的通道茎刚。@felixge發(fā)現(xiàn)這樣會使大家越發(fā)樂意斟酌他們的補(bǔ)丁,以及他甚至發(fā)現(xiàn)了他在一段時(shí)間沒有工作的項(xiàng)目的新維護(hù)者。
如果你們的項(xiàng)目在GitHub上俊马,那么將項(xiàng)目從你們的個(gè)人賬號轉(zhuǎn)移到一個(gè)組織艘儒,以及添加至少一個(gè)備份管理員兵拢。組織能讓與其他人一起工作于同一個(gè)項(xiàng)目變得更加容易。
事實(shí)上很多項(xiàng)目只有一個(gè)或者兩個(gè)做大量工作的維護(hù)者窒篱。隨著你們的項(xiàng)目以及社區(qū)越來越大會更加容易得到幫助霍转。
當(dāng)你們不能總是發(fā)現(xiàn)一些人去回答問題時(shí)岩喷,你們可以釋放一個(gè)信號增加其他人能接觸到的機(jī)會。如果你們能盡早地開始类少,大家就能盡快地幫助财忽。
你們最大的興趣是招募喜歡你們項(xiàng)目以及能夠做你們不能做的事的貢獻(xiàn)者琼蚯。你喜歡編碼权埠,但不喜歡回答issues满俗?那么讓社區(qū)中能做這件事的人去做蓄坏。
— @gr2m, "Welcoming Communities"
解決沖突
在你們項(xiàng)目的早期脯倚,做主要的決定是件容易的事渔彰。你們想做什么就可以做什么。
隨著你們的項(xiàng)目越加流行推正,會有更多的人對你們的決定有興趣恍涂。即使你們的社區(qū)沒有大量的貢獻(xiàn)者,如果你們的項(xiàng)目有很多用戶植榕,你們會發(fā)現(xiàn)大家的重點(diǎn)在決策上或者增加他們的issues再沧。
在大多數(shù)情況下,如果你們培養(yǎng)了一個(gè)友好尊残,尊重的社區(qū)并公開記錄你的過程炒瘸,你們的社區(qū)應(yīng)該能夠找到解決方案淤堵。但有時(shí)候你們遇到一個(gè)issue,有點(diǎn)難以解決顷扩。
建立友好的氛圍
當(dāng)你們的社區(qū)正在討論一個(gè)很難的issue時(shí)拐邪,氣氛會很激烈。人們可能會變得憤怒或者沮喪隘截,以及發(fā)泄在其他人或者你們身上扎阶。
作為一名維護(hù)者你們的工作是不要讓這種情況出現(xiàn)。即使你們對話題有很強(qiáng)烈的觀點(diǎn)婶芭,也要盡量站在一個(gè)主持者或者推動者的位置东臀,而不是參與爭吵以及推動自己的觀點(diǎn)。如果有人不友好或者壟斷話題犀农,那么立即采取行動以保持有禮貌以及豐富的討論惰赋。
作為一名維護(hù)者,尊重你們的貢獻(xiàn)者非常重要井赌。他們經(jīng)常處理一些你們描述親切的事情谤逼。
— @kennethreitz, "Be Cordial or Be on Your Way"
一些人希望你們指導(dǎo)他們。編寫一個(gè)好的示例仇穗。你們?nèi)匀豢梢员磉_(dá)失望流部,不高興或者憂慮,但得心平氣和纹坐。
保持你們的酷并不容易枝冀,但是展示領(lǐng)導(dǎo)能力能促進(jìn)健康的社區(qū)≡抛樱互聯(lián)網(wǎng)感謝你們果漾。
將你們的README視為憲法
你們的README不僅僅是一組指令。它也是一個(gè)談?wù)撃銈兡繕?biāo)谷誓,產(chǎn)品愿景和路線的地方绒障。
如果人們過分專注于辯論特定功能的優(yōu)點(diǎn),它可能有助于重新審視您的README捍歪,并談?wù)撃銈兊捻?xiàng)目的更高的愿景户辱。關(guān)注你們的README也會使對話變得個(gè)人化,所以你們可以進(jìn)行建設(shè)性的討論糙臼。
專注過程庐镐,而不是結(jié)果
一些項(xiàng)目用投票的方式做重要決定。雖然看上去是明智的变逃,投票強(qiáng)調(diào)的是得到一個(gè)“答案”必逆,而不是傾聽以及解決每個(gè)人的顧慮。
投票會變成政治,社區(qū)成員在做感興趣的事或者表決一個(gè)明確的方法時(shí)會感到壓力名眉。不是每個(gè)人都參與了投票粟矿,可能在你們的社區(qū)中保持沉默的人占了多數(shù),或者用戶不知道投票這件事正在發(fā)生璧针。
有時(shí)候嚷炉,投票是必要的手段。盡你們所能強(qiáng)調(diào)"尋求共識"而不是共識探橱。
在尋求共識的過程中申屹,社區(qū)成員討論主要問題,直到他們感到他們已經(jīng)得到充分的意見隧膏。當(dāng)僅遺留下一些無關(guān)緊要的問題時(shí)哗讥,社區(qū)需要向前邁進(jìn)“恚“尋求共識”不能確保社區(qū)能得到一個(gè)完美的答案杆煞。而是側(cè)重聆聽和討論。
Atom Issues不存在投票系統(tǒng)的部分原因是因?yàn)锳tom團(tuán)隊(duì)在所有情況下都不會遵循投票系統(tǒng)腐泻。有時(shí)我們必須選擇我們認(rèn)為是對的事决乎,即使它不流行。(派桩。构诚。。)我能通過社區(qū)的反饋知道我能夠提供什么以及做什么樣的工作铆惑。
— @lee-dohm on Atom's decisionmaking process
即使你們不確定是否采用尋求共識的方式范嘱,作為維護(hù)者,讓大家知道你們正在關(guān)注他們员魏。讓其他人知道丑蛤,以及承諾解決他們的問題,這在很大程度上減少了敏感情況的發(fā)送撕阎。然后受裹,按你說的去做。
不要為了獲得決議而急于做出決定虏束。在做一個(gè)決議之前請確保每個(gè)人已經(jīng)知道以及所有的信息以及公開名斟。
將對話的重點(diǎn)聚焦于行動
討論很重要,但是富有成效和沒有效果的對話時(shí)有區(qū)別的魄眉。
鼓勵討論,只要它正積極地朝著解決問題的方向進(jìn)行著闷袒。如果對話已經(jīng)無法再進(jìn)行下去坑律,只有很少的人在參與或者大家正在討論無關(guān)緊要的問題,這時(shí)候就該結(jié)束對話了。
允許這些對話進(jìn)行下去不僅對解決問題沒有幫助晃择,而且不利于社區(qū)的健康發(fā)展冀值。它釋放了這樣一個(gè)信號,表示允許或甚至鼓勵這種類型的對話宫屠,它可能阻止人們提高或者解決未來的問題列疗。
當(dāng)你們或者其他人每提出一個(gè)觀點(diǎn)時(shí),請自問:“這如何使我們更接近一個(gè)決議浪蹂?”
如果對話開始有解散的征兆抵栈,問團(tuán)隊(duì):“我們下一步該做什么?”才能重新對話。
如果一個(gè)對話沒有清晰的方向坤次,沒有明確的措施可以采取古劲,或者合適的措施已經(jīng)被使用,那么關(guān)掉issue并解釋為什么關(guān)掉它缰猴。
指導(dǎo)一件事朝著正確的方向發(fā)展是一門藝術(shù)产艾。它對阻止人們浪費(fèi)時(shí)間或者要求他們發(fā)表有建設(shè)性的看法沒有作用。(滑绒。闷堡。。)反而疑故,你們必須為接下來的進(jìn)展給出條件:給大家一個(gè)路線杠览,跟隨一個(gè)可以得到你們想要的結(jié)果的途徑,這樣就不像是些無用的口頭行為焰扳。
— @kfogel, Producing OSS
挑戰(zhàn)你們的智慧
上下文很重要倦零。考慮誰參與討論吨悍,以及他們?nèi)绾未砩鐓^(qū)的其他人扫茅。
社區(qū)中的每個(gè)人都為這個(gè)問題而煩惱,或者參與討論了嗎育瓜?或者只是一部分人感到困惑嗎葫隙?不要僅關(guān)心活躍的聲音,也請不要忘記考慮社區(qū)中保持沉默的人躏仇。
如果這個(gè)問題不代表社區(qū)的更廣泛的需求恋脚,你們可能要承認(rèn)只是少數(shù)人的擔(dān)心。如果這是一個(gè)反復(fù)出現(xiàn)的issue焰手,沒有一個(gè)清晰的解決方案糟描,那么指向他們以前討論的話題。
找出社區(qū)中的決策者
通過一個(gè)態(tài)度端正和目標(biāo)清晰的對話书妻,很多困難都是可以解決的船响。即使在富有成效的對話中,對于如何進(jìn)行的意見也可能存在差異。在這些情況下见间,確定一個(gè)人或一組人聊闯,可以作為決策者。
決策者可以是項(xiàng)目的主要維護(hù)者米诉,或者是大家投票選出的一個(gè)小團(tuán)體菱蔬。理想情況下,在你們使用GOVERNANCE文件之前史侣,你們已經(jīng)確定了決勝者和與之相關(guān)的事宜拴泌。
使用決策者應(yīng)該是你們最后才能采取的手段。分離issues是一個(gè)你們社區(qū)成長和學(xué)習(xí)的機(jī)會抵窒。利用這些機(jī)會以及協(xié)同合作弛针,盡量找出解決方案。
社區(qū)是開源的??
健康李皇,蓬勃的社區(qū)每周都會為開源付出大量辛勤的勞動削茁。許多貢獻(xiàn)者指出其他人在開源工作或不在開源工作的原因。通過學(xué)習(xí)如何建設(shè)性地利用這個(gè)權(quán)力掉房,你們會幫助他人有一個(gè)難忘的開源體驗(yàn)茧跋。## 建立成功的項(xiàng)目
你們已經(jīng)啟動了你們的項(xiàng)目,你們正在傳播它卓囚,同時(shí)有人正在查看它瘾杭。真棒!現(xiàn)在哪亿,你如何讓他們堅(jiān)持下去粥烁。
一個(gè)受歡迎的社區(qū)是對你們項(xiàng)目的未來和聲譽(yù)的投資。如果你的項(xiàng)目才開始收到第一次貢獻(xiàn)蝇棉,那么你們需要盡早的給貢獻(xiàn)者們一次積極的經(jīng)歷讨阻,以至于能讓他們繼續(xù)參與貢獻(xiàn)。
讓大家感到受歡迎
可以通過被@MikeMcQuaid稱之為貢獻(xiàn)者漏斗的方法思考你們項(xiàng)目的社區(qū)篡殷。
[圖片上傳失敗...(image-677985-1510064984150)]
當(dāng)你們建立了自己的社區(qū)钝吮,你需要考慮如何讓那些處在漏斗上方的人(潛在用戶)轉(zhuǎn)移到漏斗下方(活躍的維護(hù)者)。你們的目標(biāo)是減少貢獻(xiàn)者們在每個(gè)階段遇到的摩擦板辽。當(dāng)人們能夠輕易的取得勝利時(shí)奇瘦,他們會樂意去做更多事。
從你的文檔開始:
- 讓大家很容易使地用你的項(xiàng)目劲弦。 一份友好的 README以及清晰的代碼示例將讓大家很簡單地開始你們的項(xiàng)目耳标。
- 清楚的解釋如何做貢獻(xiàn),使用你的CONTRIBUTING file以及持續(xù)更新issues邑跪。
好的文檔能夠邀請他人參與你們項(xiàng)目的互動麻捻。最終纲仍,一些人會開一個(gè)issue或者pull request。將這些互動視為機(jī)會贸毕,將他們轉(zhuǎn)移到漏斗的下方。
- 當(dāng)一些人選擇了你們的項(xiàng)目夜赵,請對他們表示感謝明棍!僅僅只是一次消極的經(jīng)歷就能讓一些人不想再回來。
- 及時(shí)回應(yīng)寇僧。如果你們一個(gè)月都沒有回答他們的問題摊腋,他們可能早已忘記了你們的項(xiàng)目。
- 對你以后接受的所有貢獻(xiàn)者持開放態(tài)度嘁傀。 很多貢獻(xiàn)者是從一份bug報(bào)告或者小的修復(fù)開始的兴蒸。這里有很多為項(xiàng)目做貢獻(xiàn)的方式。讓大家選擇他們喜歡的方式细办。
- 如果你不贊成一個(gè)貢獻(xiàn)橙凳, 首先你需要對他們的想法表示感謝,同時(shí) 解釋為什么它不適合項(xiàng)目笑撞,如果有必要的話你可以給出相關(guān)的文檔鏈接岛啸。
為開源做貢獻(xiàn)對一些人來說很簡單,但對另外一些人可能就不是這樣了茴肥。有很多人因?yàn)闆]有做正確的事而害怕叫喊坚踩,或者只是不適合。(瓤狐。瞬铸。。)通過允許貢獻(xiàn)者參與一些對技術(shù)要求比底的工作(文檔础锐,web content markdown嗓节,etc),可以極大的減少你對這些情況的關(guān)注郁稍。
— @mikeal, "Growing a contributor base in modern open source"
多數(shù)開源貢獻(xiàn)者是“臨時(shí)貢獻(xiàn)者”赦政,因?yàn)樗麄冎皇桥紶枀⑴c項(xiàng)目貢獻(xiàn)。一位臨時(shí)貢獻(xiàn)者可能沒有充足的時(shí)間全程跟蹤你的項(xiàng)目耀怜,所以你們的工作是能讓他們很容易地參與貢獻(xiàn)恢着。
鼓勵其他的貢獻(xiàn)者也是對你們項(xiàng)目的一種投資。當(dāng)你們授權(quán)大量的粉絲做他們感興趣的工作時(shí)财破,你們的壓力就少了很多掰派。
記錄一切
你是否參加過一個(gè)(技術(shù))活動,你不認(rèn)識在場的人左痢,但是似乎每個(gè)人站在一個(gè)小組里像老朋友一樣聊天靡羡?(系洛。。略步。)現(xiàn)在想象下你想為一個(gè)開源項(xiàng)目做貢獻(xiàn)描扯,但是你不知道為什么或者這個(gè)是如何發(fā)生的。
— @janl, "Sustainable Open Source"
當(dāng)你開始一個(gè)新項(xiàng)目趟薄,你會覺得保持工作的私有性是正常的绽诚。但是開源項(xiàng)目發(fā)開始于你在公共平臺記錄自己的工作進(jìn)程。
當(dāng)你門把事情記錄下來杭煎,會有更多的人能夠按照你們的方式參與每一步恩够。你可能會得到意想不到的幫助。
書寫東西不僅僅只是技術(shù)文檔羡铲。任何時(shí)刻蜂桶,你們有寫一些東西或者私自討論項(xiàng)目的沖動,請?jiān)儐栕约菏欠衲軐⒅_也切。
保持項(xiàng)目透明的項(xiàng)目路線:你們期待什么類型的貢獻(xiàn)者扑媚,如何審查貢獻(xiàn),或者你們?yōu)槭裁醋瞿承Q定贾费。
如果你們注意到有多個(gè)用戶遇到過同樣的問題钦购,那么你們應(yīng)該將答案記錄在README中。
對于經(jīng)常遇到的問題褂萧,你們可以考慮發(fā)布你們的筆記或者相關(guān)的issue押桃。在這種情況下得到的反饋將會令你們驚訝。
記錄一切也適用于你們的工作导犹。如果你正在進(jìn)行大量的更新工作唱凯,請將其放入pull request并標(biāo)記為正在進(jìn)行(WIP)。這樣谎痢,可以讓其他人感覺參與過早期工作磕昼。
積極回應(yīng)
一旦你推廣項(xiàng)目,人們將會給你們反饋节猿。他們可能會問項(xiàng)目是如何工作的票从,或者需要你們幫助開始項(xiàng)目。
當(dāng)有人列出一條issue滨嘱,提交一個(gè)pull request峰鄙,或者詢問項(xiàng)目的有關(guān)問題時(shí),你們應(yīng)該盡量回答他們太雨。當(dāng)你們快速地做出回應(yīng)時(shí)吟榴,人們將感覺到他們參與了對話,以及他們將會更熱情地參與囊扳。
如果你無法及時(shí)審查請求吩翻,請盡早確認(rèn)兜看,這樣會有助于提高參與度。這里是@tdreyno在Middleman上如何回應(yīng)一個(gè)pull request:
一份Mozilla研究發(fā)現(xiàn) 如果貢獻(xiàn)者在48小時(shí)內(nèi)收到代碼審查狭瞎,他們會有很大的可能返回以及重復(fù)貢獻(xiàn)细移。
與你們項(xiàng)目有關(guān)的話題也可能發(fā)生在互聯(lián)網(wǎng)的其它地方,例如Stack Overflow脚作,Twitter葫哗,或者Reddit。你門可以在像這樣的一些網(wǎng)站設(shè)置通知球涛,這樣當(dāng)有人提及你們項(xiàng)目時(shí)可以收到提醒。
為你們的社區(qū)提供一個(gè)聚會的場所
有兩個(gè)理由可以解釋為什么要給社區(qū)提供一個(gè)聚會的場所校镐。
第一個(gè)理由是為了他們亿扁。幫助人們相互認(rèn)識。有著共同興趣的人會想要一個(gè)可以聊天的地方鸟廓。同時(shí)當(dāng)信息是公開的而且是適宜的時(shí)候从祝,任何人可以閱讀過去的檔案以至于能夠快速的追趕以及參與。
第二個(gè)理由是為了你們引谜。如果你們沒有提供一個(gè)公共的場所來談?wù)撃銈兊捻?xiàng)目牍陌,他們可能會直接與你們聯(lián)系。剛開始時(shí)员咽,回復(fù)私有來信可能對你們來說很輕松毒涧。但是經(jīng)過一段時(shí)間后,尤其是如果你們的項(xiàng)目變得流行的時(shí)候贝室,你們就會感到累了契讲。不要私下和人們談?wù)撃銈兊捻?xiàng)目,而是直接指明他們?nèi)ブ付ǖ墓睬馈?/p>
公共交流和指明人們開一條issue一樣簡單滑频,而不是直接發(fā)給你們發(fā)郵件或者在你們的博客發(fā)表評論捡偏。你們也可以為了方便人們談?wù)撃銈兊捻?xiàng)目設(shè)置一個(gè)郵件列表,或者創(chuàng)建一個(gè)Twitter賬號峡迷,Slack银伟,護(hù)著IRC渠道』娓悖或者嘗試上述的所有方式彤避。
Kubernetes kops sets aside office hours every other week to help community members:
Kubernetes kops 每隔一周抽出辦公時(shí)間幫助社區(qū)成員:
Kops每隔一周都會留出時(shí)間為社區(qū)提供幫助和指導(dǎo)。Kops維護(hù)者已經(jīng)同意留出時(shí)間專門與新手一起工作看杭,幫助PRs忠藤,以及討論新特性。
公開交流需要特別注意的異常有:1)安全的issues和2)敏感的行為準(zhǔn)則楼雹。你們應(yīng)該為大家提供一個(gè)私下報(bào)告這些issue的方式模孩。如果你們不想使用自己的個(gè)人郵箱尖阔,那么就創(chuàng)建一個(gè)準(zhǔn)用郵箱。
讓社區(qū)成才
社區(qū)非常有能量榨咐。這種能量可能是祝福也可能是詛咒介却,這取決于你們?nèi)绾螆?zhí)掌它。隨著你們項(xiàng)目社區(qū)的成長块茁,有辦法幫助它成為一股有建設(shè)性的力量齿坷,而不是具有破壞性的。
不要容忍糟糕的角色
一些流行的項(xiàng)目將不可避免地回吸引來一些傷害它們的人数焊。他們可能從一些沒必要的爭論開始永淌,對一些細(xì)小的功能進(jìn)行謬論,或者傷害他人佩耳。
對于那種類型的人你們必須采取零容忍的政策遂蛀。如果發(fā)現(xiàn)較晚,那些消極的人將會社區(qū)中的其他人不舒服干厚。他們可能會離開李滴。
事實(shí)是,擁有一個(gè)支持性社區(qū)是關(guān)鍵蛮瞄。如果沒有來自我的同事所坯,互聯(lián)網(wǎng)上一些友好的陌生人,以及聊天渠道IRC的幫助挂捅,我不可能做好這些工作芹助。(。籍凝。周瞎。)不要太少。不要找麻煩饵蒂。
— @karissa, "How to Run a FOSS Project"
定期對你們項(xiàng)目瑣碎方便的辯論声诸,使他人,包括你們不能把注意力集中于重要的任務(wù)上退盯。新人如果看見這樣的情景彼乌,他們是不會加入你們項(xiàng)目的。
當(dāng)你們發(fā)現(xiàn)社區(qū)中有消極行為時(shí)渊迁,需要公然指出來慰照。特別說明的是,要用堅(jiān)定的語氣解釋他們的行為為什么是不可接受的琉朽。如果這種問題繼續(xù)發(fā)生毒租,你們有必要要求他們離開。你們的行為準(zhǔn)則是為這些情景準(zhǔn)備的建設(shè)性指南箱叁。
知道貢獻(xiàn)者在哪里
隨著你們項(xiàng)目的成長墅垮,好的文檔只會變得越加重要惕医。臨時(shí)貢獻(xiàn)者不可能對項(xiàng)目非常熟悉,通過閱讀你們的文檔他們能很快找到他們需要的算色。
在你們的CONTRIBUTING文件里抬伺,需要明確告訴新來的貢獻(xiàn)者該如何開始。你們可能為了想要達(dá)到這個(gè)目的而準(zhǔn)備一個(gè)專門的部分灾梦。
在你們的issue列表中峡钓,bugs標(biāo)簽需要適合不同類型的貢獻(xiàn)者:例如,"first timers only", "good first bug", 或者 "documentation". 這些標(biāo)簽能夠幫助新人快速瀏覽issues以及開始若河。
最后能岩,使用你們的文檔讓人們在每一步都感到歡迎。
你們永遠(yuǎn)不會與登陸項(xiàng)目的大多數(shù)人互動萧福。你們可能沒有收到一些貢獻(xiàn)捧灰,因?yàn)橛行┤烁械胶ε禄蛘卟恢獜暮烷_始。即使是幾個(gè)字也能阻止一些人沮喪地離開你們的項(xiàng)目统锤。
例如,這里是Rubinius如何開始它的貢獻(xiàn)指南:
我們想感謝你們使用Rubinius炭庙。這個(gè)項(xiàng)目是一個(gè)充滿愛的勞動饲窿,我們希望所有用戶查找bugs,取得性能上的提升焕蹄,以及幫助完善文檔逾雄。每一個(gè)貢獻(xiàn)都是有意義的,所以感謝你們的參與腻脏。話雖如此鸦泳,但我們還是要求你們遵守一些指南,這樣我們就能夠找到你們的issue永品。
分享你們項(xiàng)目的所有權(quán)
你們的領(lǐng)導(dǎo)者們將有不同的觀點(diǎn)做鹰,因?yàn)檫@是所有健康社區(qū)都該做的!然而鼎姐,你們會體會到粗暴魯莽的做法不能得到大家的認(rèn)同钾麸,反而謙虛低調(diào)的做法更容易讓大家接受。
— @sarahsharp, "What makes a good community?"
當(dāng)大家覺得擁有項(xiàng)目的所有權(quán)時(shí)炕桨,他們會樂意為項(xiàng)目做貢獻(xiàn)饭尝。這并不意味著你們需要轉(zhuǎn)變項(xiàng)目的愿景或接受你們不想要的貢獻(xiàn)。但是你們越信任他們献宫,他們就會越忠誠钥平。
看你們是否能盡快地找出向社區(qū)分享所有權(quán)的方法。下面有些建議:
- 反對你們自己修復(fù)簡單(非關(guān)鍵)的bugs姊途。 相反涉瘾,使用它們作為招募新貢獻(xiàn)者的機(jī)會知态,或者指導(dǎo)想要參與貢獻(xiàn)的人。開始時(shí)可能效果不是很理想睡汹,但經(jīng)過一段時(shí)間你們會得到想要的結(jié)果肴甸。例如,@michaeljoseph要求一位貢獻(xiàn)者提交一個(gè)pull request在一個(gè)Cookiecutter issue的下面囚巴,而不是自己修復(fù)它原在。
在項(xiàng)目中添加一個(gè)貢獻(xiàn)者或者作者文件用于記錄每一個(gè)參與貢獻(xiàn)的人。
如果你們的社區(qū)有了一定的規(guī)模彤叉,那么發(fā)送一封信或者發(fā)表一篇博客感謝貢獻(xiàn)者們庶柿。Rust的This Week in Rust和Hoodie的Shoutouts是兩個(gè)非常好的示例。
給每個(gè)貢獻(xiàn)者commit的通道秽浇。@felixge發(fā)現(xiàn)這樣會使大家越發(fā)樂意斟酌他們的補(bǔ)丁浮庐,以及他甚至發(fā)現(xiàn)了他在一段時(shí)間沒有工作的項(xiàng)目的新維護(hù)者。
如果你們的項(xiàng)目在GitHub上柬焕,那么將項(xiàng)目從你們的個(gè)人賬號轉(zhuǎn)移到一個(gè)組織审残,以及添加至少一個(gè)備份管理員。組織能讓與其他人一起工作于同一個(gè)項(xiàng)目變得更加容易斑举。
事實(shí)上很多項(xiàng)目只有一個(gè)或者兩個(gè)做大量工作的維護(hù)者搅轿。隨著你們的項(xiàng)目以及社區(qū)越來越大會更加容易得到幫助。
當(dāng)你們不能總是發(fā)現(xiàn)一些人去回答問題時(shí)富玷,你們可以釋放一個(gè)信號增加其他人能接觸到的機(jī)會囚戚。如果你們能盡早地開始格带,大家就能盡快地幫助抖拦。
你們最大的興趣是招募喜歡你們項(xiàng)目以及能夠做你們不能做的事的貢獻(xiàn)者久又。你喜歡編碼,但不喜歡回答issues励两?那么讓社區(qū)中能做這件事的人去做黎茎。
— @gr2m, "Welcoming Communities"
解決沖突
在你們項(xiàng)目的早期,做主要的決定是件容易的事伐蒋。你們想做什么就可以做什么工三。
隨著你們的項(xiàng)目越加流行,會有更多的人對你們的決定有興趣先鱼。即使你們的社區(qū)沒有大量的貢獻(xiàn)者俭正,如果你們的項(xiàng)目有很多用戶,你們會發(fā)現(xiàn)大家的重點(diǎn)在決策上或者增加他們的issues焙畔。
在大多數(shù)情況下掸读,如果你們培養(yǎng)了一個(gè)友好,尊重的社區(qū)并公開記錄你的過程,你們的社區(qū)應(yīng)該能夠找到解決方案儿惫。但有時(shí)候你們遇到一個(gè)issue澡罚,有點(diǎn)難以解決。
建立友好的氛圍
當(dāng)你們的社區(qū)正在討論一個(gè)很難的issue時(shí)肾请,氣氛會很激烈留搔。人們可能會變得憤怒或者沮喪,以及發(fā)泄在其他人或者你們身上铛铁。
作為一名維護(hù)者你們的工作是不要讓這種情況出現(xiàn)隔显。即使你們對話題有很強(qiáng)烈的觀點(diǎn),也要盡量站在一個(gè)主持者或者推動者的位置饵逐,而不是參與爭吵以及推動自己的觀點(diǎn)括眠。如果有人不友好或者壟斷話題,那么立即采取行動以保持有禮貌以及豐富的討論倍权。
作為一名維護(hù)者掷豺,尊重你們的貢獻(xiàn)者非常重要。他們經(jīng)常處理一些你們描述親切的事情薄声。
— @kennethreitz, "Be Cordial or Be on Your Way"
一些人希望你們指導(dǎo)他們当船。編寫一個(gè)好的示例。你們?nèi)匀豢梢员磉_(dá)失望默辨,不高興或者憂慮生年,但得心平氣和。
保持你們的酷并不容易廓奕,但是展示領(lǐng)導(dǎo)能力能促進(jìn)健康的社區(qū)〉凳澹互聯(lián)網(wǎng)感謝你們桌粉。
將你們的README視為憲法
你們的README不僅僅是一組指令。它也是一個(gè)談?wù)撃銈兡繕?biāo)衙四,產(chǎn)品愿景和路線的地方铃肯。
如果人們過分專注于辯論特定功能的優(yōu)點(diǎn),它可能有助于重新審視您的README传蹈,并談?wù)撃銈兊捻?xiàng)目的更高的愿景押逼。關(guān)注你們的README也會使對話變得個(gè)人化,所以你們可以進(jìn)行建設(shè)性的討論惦界。
專注過程挑格,而不是結(jié)果
一些項(xiàng)目用投票的方式做重要決定。雖然看上去是明智的沾歪,投票強(qiáng)調(diào)的是得到一個(gè)“答案”漂彤,而不是傾聽以及解決每個(gè)人的顧慮。
投票會變成政治,社區(qū)成員在做感興趣的事或者表決一個(gè)明確的方法時(shí)會感到壓力挫望。不是每個(gè)人都參與了投票立润,可能在你們的社區(qū)中保持沉默的人占了多數(shù),或者用戶不知道投票這件事正在發(fā)生媳板。
有時(shí)候桑腮,投票是必要的手段。盡你們所能強(qiáng)調(diào)"尋求共識"而不是共識蛉幸。
在尋求共識的過程中破讨,社區(qū)成員討論主要問題,直到他們感到他們已經(jīng)得到充分的意見巨缘。當(dāng)僅遺留下一些無關(guān)緊要的問題時(shí)添忘,社區(qū)需要向前邁進(jìn)∪羲“尋求共識”不能確保社區(qū)能得到一個(gè)完美的答案搁骑。而是側(cè)重聆聽和討論。
Atom Issues不存在投票系統(tǒng)的部分原因是因?yàn)锳tom團(tuán)隊(duì)在所有情況下都不會遵循投票系統(tǒng)又固。有時(shí)我們必須選擇我們認(rèn)為是對的事仲器,即使它不流行。(仰冠。乏冀。。)我能通過社區(qū)的反饋知道我能夠提供什么以及做什么樣的工作洋只。
— @lee-dohm on Atom's decisionmaking process
即使你們不確定是否采用尋求共識的方式辆沦,作為維護(hù)者,讓大家知道你們正在關(guān)注他們识虚。讓其他人知道肢扯,以及承諾解決他們的問題,這在很大程度上減少了敏感情況的發(fā)送担锤。然后蔚晨,按你說的去做。
不要為了獲得決議而急于做出決定肛循。在做一個(gè)決議之前請確保每個(gè)人已經(jīng)知道以及所有的信息以及公開铭腕。
將對話的重點(diǎn)聚焦于行動
討論很重要,但是富有成效和沒有效果的對話時(shí)有區(qū)別的多糠。
鼓勵討論累舷,只要它正積極地朝著解決問題的方向進(jìn)行著。如果對話已經(jīng)無法再進(jìn)行下去夹孔,只有很少的人在參與或者大家正在討論無關(guān)緊要的問題笋粟,這時(shí)候就該結(jié)束對話了怀挠。
允許這些對話進(jìn)行下去不僅對解決問題沒有幫助,而且不利于社區(qū)的健康發(fā)展害捕。它釋放了這樣一個(gè)信號绿淋,表示允許或甚至鼓勵這種類型的對話,它可能阻止人們提高或者解決未來的問題尝盼。
當(dāng)你們或者其他人每提出一個(gè)觀點(diǎn)時(shí)吞滞,請自問:“這如何使我們更接近一個(gè)決議?”
如果對話開始有解散的征兆盾沫,問團(tuán)隊(duì):“我們下一步該做什么?”才能重新對話裁赠。
如果一個(gè)對話沒有清晰的方向,沒有明確的措施可以采取赴精,或者合適的措施已經(jīng)被使用佩捞,那么關(guān)掉issue并解釋為什么關(guān)掉它。
指導(dǎo)一件事朝著正確的方向發(fā)展是一門藝術(shù)蕾哟。它對阻止人們浪費(fèi)時(shí)間或者要求他們發(fā)表有建設(shè)性的看法沒有作用一忱。(。谭确。帘营。)反而,你們必須為接下來的進(jìn)展給出條件:給大家一個(gè)路線逐哈,跟隨一個(gè)可以得到你們想要的結(jié)果的途徑芬迄,這樣就不像是些無用的口頭行為。
— @kfogel, Producing OSS
挑戰(zhàn)你們的智慧
上下文很重要昂秃≠魇幔考慮誰參與討論,以及他們?nèi)绾未砩鐓^(qū)的其他人肠骆。
社區(qū)中的每個(gè)人都為這個(gè)問題而煩惱出皇,或者參與討論了嗎?或者只是一部分人感到困惑嗎哗戈?不要僅關(guān)心活躍的聲音,也請不要忘記考慮社區(qū)中保持沉默的人荷科。
如果這個(gè)問題不代表社區(qū)的更廣泛的需求唯咬,你們可能要承認(rèn)只是少數(shù)人的擔(dān)心。如果這是一個(gè)反復(fù)出現(xiàn)的issue畏浆,沒有一個(gè)清晰的解決方案胆胰,那么指向他們以前討論的話題。
找出社區(qū)中的決策者
通過一個(gè)態(tài)度端正和目標(biāo)清晰的對話刻获,很多困難都是可以解決的蜀涨。即使在富有成效的對話中,對于如何進(jìn)行的意見也可能存在差異厚柳。在這些情況下氧枣,確定一個(gè)人或一組人,可以作為決策者别垮。
決策者可以是項(xiàng)目的主要維護(hù)者便监,或者是大家投票選出的一個(gè)小團(tuán)體。理想情況下碳想,在你們使用GOVERNANCE文件之前烧董,你們已經(jīng)確定了決勝者和與之相關(guān)的事宜。
使用決策者應(yīng)該是你們最后才能采取的手段胧奔。分離issues是一個(gè)你們社區(qū)成長和學(xué)習(xí)的機(jī)會逊移。利用這些機(jī)會以及協(xié)同合作,盡量找出解決方案龙填。
社區(qū)是開源的??
健康胳泉,蓬勃的社區(qū)每周都會為開源付出大量辛勤的勞動。許多貢獻(xiàn)者指出其他人在開源工作或不在開源工作的原因觅够。通過學(xué)習(xí)如何建設(shè)性地利用這個(gè)權(quán)力胶背,你們會幫助他人有一個(gè)難忘的開源體驗(yàn)。