我是怎么做開(kāi)源的
我最近發(fā)現(xiàn)我對(duì)開(kāi)源(Open Source)的看法和我的很多朋友不一樣。我對(duì)開(kāi)源的態(tài)度一貫是:
這段代碼能夠很好的解決我的問(wèn)題。假如它也能解決你的問(wèn)題,我很欣慰。但是假如它不能,我愿意做一些改進(jìn),但是我也會(huì)拒絕一些讓代碼變的臃腫的的想法。最后,做一個(gè)成熟的庫(kù)大約需要幾年的時(shí)間。成熟我是指足夠的穩(wěn)定來(lái)發(fā)布一個(gè)最終的版本,或者有人做了一個(gè)高級(jí)版本。我不認(rèn)為一個(gè)開(kāi)源的項(xiàng)目能說(shuō)明我在這個(gè)行業(yè)的成就。
但是和別人的交流我發(fā)現(xiàn)他們不愿意做開(kāi)源的原因如下:
1. 代碼不夠成熟
2. 不想寫文檔
3. 不想被需求和各種郵件占用太多時(shí)間
我完全理解這幾點(diǎn),但是我開(kāi)發(fā)生涯中的一些事件改變了我的看法。
那是我的第一個(gè)開(kāi)源項(xiàng)目,我一直不敢拿出來(lái)開(kāi)源,直到我把他用在生產(chǎn)環(huán)境中穩(wěn)定的運(yùn)行了一年,我有足夠的自信相信我這個(gè)項(xiàng)目能解決一些問(wèn)題。它是一個(gè) .NET 對(duì)象關(guān)系映射庫(kù),叫做 NORM,在2005年發(fā)布。我相信你沒(méi)有聽(tīng)說(shuō)過(guò)這個(gè)項(xiàng)目。我花了好幾個(gè)月的時(shí)間來(lái)完善這個(gè)項(xiàng)目,但是沒(méi)有人在乎。然后我就不想再發(fā)布什么東西了。我現(xiàn)在相信不論我發(fā)布什么都不會(huì)引起人們的注意,所以我最好還是盡快的發(fā)布,如果不行,那就承認(rèn)失敗,然后繼續(xù)前進(jìn)。
沒(méi)有人會(huì)為自己寫文檔,他們?yōu)槠渌麑⒁眠@個(gè)軟件的人寫文檔。人們很少?gòu)氖褂盟麄冮_(kāi)源軟件的人那里得到什么。這個(gè)簡(jiǎn)單的現(xiàn)實(shí)導(dǎo)致文檔的稀缺。但是,缺乏文檔不代表你不能開(kāi)源你的軟件,它只是意味著你的軟件推廣起來(lái)會(huì)比較慢。
我兩年以前開(kāi)源了 expectations,沒(méi)有任何文檔,并且在一年之內(nèi)都沒(méi)有任何文檔。在這一年中,很少有人關(guān)注了這個(gè)項(xiàng)目。但是這個(gè)項(xiàng)目確實(shí)對(duì)一些人來(lái)講很有用,所以還是有一些應(yīng)用。最終,有一些用戶開(kāi)始產(chǎn)生一些 pull request,提交一些文檔。他們的共享讓我產(chǎn)生了撰寫文檔的動(dòng)力。我沒(méi)有動(dòng)力為潛在的使用者提供文檔。但是我把代碼放在那里,有人用了,這個(gè)就讓我產(chǎn)生了動(dòng)力,因?yàn)檫@些使用者實(shí)實(shí)在在就在那里。
如果你很幸運(yùn)的創(chuàng)建了一個(gè)廣泛使用的項(xiàng)目,你將毫無(wú)疑問(wèn)的被各種郵件淹沒(méi)。剛開(kāi)始,我相信任何人都會(huì)被這種成功沖昏頭腦,認(rèn)為增加的工作量不是什么大問(wèn)題。但是慢慢的你會(huì)發(fā)現(xiàn),這就像是第二份全職工作,然后你會(huì)想著究竟是為了什么?在開(kāi)發(fā)者中的聲譽(yù)并不能讓你提早退休。不管怎樣,這不能成為你不做開(kāi)源的借口。還有,我相信 GitHut 已經(jīng)改變了游戲規(guī)則。如果你的項(xiàng)目托管在 GitHut,當(dāng)你打算停止維護(hù)這個(gè)項(xiàng)目的時(shí)候,會(huì)有很多人愿意 fork 你的項(xiàng)目,繼續(xù)開(kāi)發(fā)的。
我并沒(méi)有因?yàn)殡x開(kāi)自己的項(xiàng)目而良心不安。如果你的想法真的有價(jià)值,會(huì)有人愿意接替你的位置的。很有可能是有幾個(gè)人愿意接替你,然后最強(qiáng)的那個(gè)生存了下來(lái)。我見(jiàn)到的類似的項(xiàng)目有 Capistrano。Jamis Buck 在2009年高調(diào)的離開(kāi)了這個(gè)項(xiàng)目,但是我知道還是有很多人到今天還在使用它。我堅(jiān)信假如你的項(xiàng)目真的很好,即使有一天你決定去做其他事情,這個(gè)項(xiàng)目也會(huì)活的很好。
我看起來(lái)不像是一個(gè)開(kāi)源的好公民,過(guò)早的發(fā)布,過(guò)早的離開(kāi)。如果真的是這樣的話,我愿意接受批評(píng),但在我看來(lái)事實(shí)并不是這樣。
【編輯推薦】