如何開(kāi)始一個(gè)開(kāi)源項(xiàng)目
循序漸進(jìn)的指導(dǎo)
你有這個(gè)問(wèn)題:你已經(jīng)權(quán)衡了開(kāi)源代碼的優(yōu)劣勢(shì),你也已經(jīng)知道你的軟件需要成為一個(gè)開(kāi)源項(xiàng)目,但是,你不知道怎么做好的開(kāi)源項(xiàng)目。
當(dāng)然,你也許已經(jīng)知道如何創(chuàng)建Github帳號(hào)并開(kāi)始,但是這些事實(shí)上是做開(kāi)源比較簡(jiǎn)單的部分。而真真正正難的部分是如何讓足夠多的人,關(guān)注你的項(xiàng)目并給你的項(xiàng)目做貢獻(xiàn)。
接下來(lái)的原則是會(huì)指導(dǎo)你構(gòu)建和發(fā)布其他人愿意關(guān)注的代碼。
基本原則
選擇開(kāi)源可能有許多原因。也許你希望吸引一個(gè)社區(qū)來(lái)幫助編寫(xiě)你的代碼。也許,總所周知,你明白“開(kāi)源--一個(gè)開(kāi)發(fā)小團(tuán)隊(duì)內(nèi)部編寫(xiě)代碼的倍增器。”
或者你只是認(rèn)為這是必須做的事,如同英國(guó)政府一樣。
無(wú)論何種原因,為了開(kāi)源能夠成功,是必須要做很多的計(jì)劃去給將來(lái)使用這個(gè)軟件的人們。如同我在2005寫(xiě)道,如果你“需要大量的人做貢獻(xiàn)(bug修復(fù),擴(kuò)展等等)”,那么你需要“寫(xiě)一個(gè)好的文檔,使用易于接受的編程語(yǔ)言,和使用模型架構(gòu)”。
對(duì)了,你也需要寫(xiě)人們?cè)诤醯能浖?/p>
每天思考你依靠的技術(shù):操作系統(tǒng),web應(yīng)用框架,數(shù)據(jù)庫(kù),等等。遠(yuǎn)離像航天這樣,特殊行業(yè)的小生態(tài)技術(shù),讓開(kāi)源擁有更多的可能性以便外部的(人的)產(chǎn)生興趣和做出貢獻(xiàn)。更廣泛的應(yīng)用技術(shù),找到更多的貢獻(xiàn)者和用戶。
總的來(lái)說(shuō),任何成功的開(kāi)源項(xiàng)目有以下共同點(diǎn):
1.***的時(shí)間時(shí)機(jī)(解決市場(chǎng)實(shí)際需求)
2.一個(gè)健壯,包括開(kāi)發(fā)者和非開(kāi)發(fā)者的團(tuán)隊(duì)
3.一個(gè)易于參與的結(jié)構(gòu)(更多詳見(jiàn)下文)
4.模塊化編碼,使新貢獻(xiàn)者更容易找到一個(gè)項(xiàng)目損壞的部分去貢獻(xiàn),比強(qiáng)迫他們理解巨大的代碼的每一部分要好
5.代碼可以廣泛應(yīng)用(或者達(dá)到一個(gè)狹窄的流行都比一個(gè)“自生自滅的”小生態(tài)更吸引人)
6.很好初始源碼(如果你放垃圾在Github,你也只會(huì)得到垃圾回報(bào))
7.一個(gè)自由的許可證-我個(gè)人更愛(ài)Apache型的許可證,因?yàn)樗岄_(kāi)發(fā)者采用時(shí)障礙***,當(dāng)然許多成功的項(xiàng)目(如Linux和MySQL)使用GPL許可證也有很棒的效果。
上述幾項(xiàng),是一個(gè)項(xiàng)目成功邀請(qǐng)參與者最難的部分。這是因?yàn)樗麄儾皇顷P(guān)于代碼而是關(guān)于人。
開(kāi)源不單是一個(gè)許可證
今年,最棒的一件事是我讀到是來(lái)自 Vitorio Miliano (@vitor_io)的文章,他是用戶體驗(yàn)交互設(shè)計(jì)師,來(lái)自德州的奧斯丁。Miliano指出,那些不在你的項(xiàng)目上工作的人才是“外行”,從本質(zhì)上說(shuō)無(wú)論他們技術(shù)能力的級(jí)別,他們僅僅懂一點(diǎn)代碼(也沒(méi)關(guān)系)。
所以你的工作,他認(rèn)為,是使人加入,為你貢獻(xiàn)你的代碼變得簡(jiǎn)單。當(dāng)闡述如何涉及非程序員到開(kāi)源項(xiàng)目中,他指出項(xiàng)目的一些事項(xiàng),項(xiàng)目領(lǐng)導(dǎo)應(yīng)需要有效地得加入一些任何技術(shù)或不懂技術(shù)的人到開(kāi)源項(xiàng)目。
1.一種方法去了解你的項(xiàng)目?jī)r(jià)值
2.一種方法去了解他們可以為項(xiàng)目提供的價(jià)值
3.一種方法去了解他們可以從貢獻(xiàn)代碼獲得的價(jià)值
4.一種方法去了解貢獻(xiàn)流程,端到端
5.貢獻(xiàn)機(jī)制適用于現(xiàn)有的工作流
經(jīng)常,項(xiàng)目***想要集中于上述的第五步,卻不提供理解1到4的路徑。如果潛在的貢獻(xiàn)者不欣賞“為什么”,“如何”共享就變得不重要了。
注意,至關(guān)重要的,Miliano寫(xiě)道,建立擁有一個(gè)通俗易懂的簡(jiǎn)介的項(xiàng)目很有價(jià)值,如同任何時(shí)候通過(guò)簡(jiǎn)介給每一個(gè)人演示可訪問(wèn)性和包容性。他斷言道,這增加了額外的好處,文檔和其他的版本介紹的內(nèi)容變得通俗易懂。
關(guān)于第二點(diǎn),程序員或非程序員同樣地需要能夠明白到底你需要什么,這樣他們就可以認(rèn)識(shí)到他們的貢獻(xiàn)(方向)。有時(shí)就像MongoDB解決方案架構(gòu)師Henrik Ingo告訴我那樣,"一個(gè)聰明的人可以貢獻(xiàn)很棒的代碼,但是項(xiàng)目成員不能理解它(代碼)",如果在組織內(nèi)承認(rèn)這個(gè)貢獻(xiàn)并且研究后理解,那么這就不是一個(gè)糟糕的問(wèn)題。
但是不會(huì)經(jīng)常發(fā)生。
你真的想領(lǐng)導(dǎo)一個(gè)開(kāi)源項(xiàng)目嗎?
許多開(kāi)源項(xiàng)目的領(lǐng)導(dǎo)提倡包容性,但是他們擁有任何事除了包容。如果你不想要人們做貢獻(xiàn),不要假裝開(kāi)源。
是的,有時(shí)這是老生常談的話題。就像HackerNews最近的報(bào)道一個(gè)開(kāi)發(fā)者的開(kāi)發(fā)工作。
小項(xiàng)目可以得到很多,基本不需要很多人合作來(lái)完成。我看到了他們的進(jìn)步,但是我沒(méi)有看到我自己的進(jìn)步:如果我?guī)椭怂麄?,顯然,如果我花費(fèi)了有限的時(shí)間在與那些計(jì)算機(jī)科學(xué)的碩士管理合作上,而沒(méi)有參與編碼,這不是我想要的。所以我忽略了他們。
這是一個(gè)保持理智的的好方法,但這個(gè)態(tài)度并不能預(yù)示著這個(gè)項(xiàng)目會(huì)被廣闊的分享。
如果你確實(shí)很少關(guān)心非程序員設(shè)計(jì)的貢獻(xiàn)、文檔,或者無(wú)論其他什么,那么請(qǐng)首先了解那些。再次強(qiáng)調(diào),如果這是實(shí)情,你的項(xiàng)目就不能成為一個(gè)開(kāi)源項(xiàng)目。
當(dāng)然,排除感覺(jué)不總是可靠的。 就像ActiveState的副總裁Bernard Golden告訴過(guò)我,“一些將會(huì)成為開(kāi)發(fā)人員將會(huì)對(duì)現(xiàn)有的“小集團(tuán)”開(kāi)發(fā)團(tuán)體這種感覺(jué)感到恐懼,雖然這不一定正確。”
現(xiàn)在,若使了解開(kāi)發(fā)人員為什么要貢獻(xiàn)并邀請(qǐng)做開(kāi)發(fā),意味著更多的開(kāi)源項(xiàng)目投資,更長(zhǎng)久地生存。
本文鏈接:http://www.cocoachina.com/programmer/20141020/9970.html