如何向開源軟件貢獻(xiàn)自己的力量?
“我想向開源社區(qū)貢獻(xiàn)源碼,但是該怎么做呢?”我經(jīng)常看見很多很多學(xué)生在很多論壇里問這個(gè)問題。有很多種方式可以貢獻(xiàn)源碼,我列出了很多,希望能夠?qū)δ銈冇卸鄮椭?/p>
貢獻(xiàn)給現(xiàn)有的項(xiàng)目:
雖然你對(duì)于貢獻(xiàn)源碼感興趣,但并不是所有的開源產(chǎn)品都會(huì)接受你。每一個(gè)產(chǎn)品都有一些編碼和提交代碼的規(guī)范,而你需要遵循這些規(guī)范。
你感興趣的領(lǐng)域:首先選一個(gè)符合你的興趣或者使用了你喜歡的編程語言和技術(shù)的項(xiàng)目。不要僅僅根據(jù)開發(fā)語言來選擇你感興趣領(lǐng)域的項(xiàng)目。僅僅通過了解Java你不一定能勝任游戲項(xiàng)目的任務(wù),你應(yīng)該對(duì)它感興趣才行。
對(duì)項(xiàng)目進(jìn)行了解:找到項(xiàng)目所在的網(wǎng)站,你可能會(huì)找到關(guān)于“如何參與項(xiàng)目”、“用戶手冊(cè)”等信息的鏈接。了解他們的指導(dǎo)方針,編碼標(biāo)準(zhǔn)和補(bǔ)丁的驗(yàn)收標(biāo)準(zhǔn)。加入他們的開發(fā)和用戶郵件列表。下載源碼并且試著了解他們是怎樣實(shí)現(xiàn)的。
提交者:每一個(gè)項(xiàng)目都會(huì)有一個(gè)或者更多的提交者。他們負(fù)責(zé)提交代碼。你的代碼應(yīng)該通過他們提交。很多項(xiàng)目可能會(huì)要求志愿者們把變更過的代碼發(fā)給提交者,有些項(xiàng)目可能要求發(fā)送代碼補(bǔ)丁到項(xiàng)目郵件列表。但最終你的代碼將通過提交者提交到項(xiàng)目的主分支中。
測(cè)試和文檔:編寫代碼并不是參與項(xiàng)目的唯一方式。你可以做測(cè)試和記錄bug。你可以幫助完善項(xiàng)目文檔。對(duì)信息進(jìn)行本地化或者將幫助手冊(cè)翻譯成其他語言。
參與到新的項(xiàng)目中:
尋找一些想法一致的人群然后根據(jù)你的想法開啟一個(gè)新的項(xiàng)目。選擇你的許可證的條款和條件。很多人就是通過開發(fā)新的開源產(chǎn)品獲得了成功。
重復(fù)發(fā)明輪子:如果你沒有任何獨(dú)特的想法,那么你可以“重復(fù)發(fā)明輪子”。你可以嘗試做一些別人做過的東西,但一定要加入特有的功能。應(yīng)該跟別人的軟件有一些獨(dú)特之處和差異,這樣才能讓別人使用你的軟件。很多人會(huì)倡導(dǎo)“不要重復(fù)發(fā)明輪子”,但是如果真是這樣,那么在每個(gè)行業(yè)領(lǐng)域內(nèi)將只存在一見產(chǎn)品。這不是同一個(gè)問題,通過“重復(fù)發(fā)明輪子”,你可以學(xué)到很多。
陳舊的項(xiàng)目:從Sourceforge或者GitHub這樣的代碼托管網(wǎng)站尋找一些陳舊的或者閑置的項(xiàng)目。該項(xiàng)目的***一項(xiàng)活動(dòng)可能是一年或兩年后。選擇一個(gè)這樣的項(xiàng)目,解決掉項(xiàng)目中的問題,然后賦予項(xiàng)目新的生命。
代碼移植:很多人可能會(huì)對(duì)代碼移植很感興趣。如果你是一個(gè)Java程序員,你發(fā)現(xiàn)了一些用Python或者Ruby語言開發(fā)的有趣的東西,那么把它們移植到Java語言來。將代碼從一項(xiàng)技術(shù)移植到另一項(xiàng)技術(shù)中。一個(gè)程序員不可能掌握所有的編程語言,移植好的項(xiàng)目真的會(huì)對(duì)你有很大幫助,而且很多人都會(huì)感激你的努力付出。
很多人有興趣,但僅僅只是興趣,很少有人會(huì)真正去做一些事情。一旦你開始做了,別人就會(huì)追隨你的步伐。