開源軟件入門指南:概念評述
譯文開源項目如今可謂無處不在,從Web到個人計算機再到智能手機,我們似乎隨處可見它的身影。在今天的文章中,我們將共同探討以下三個話題:
• 開源的定義
• 流行開源項目范例
• 如何參與到開源項目當(dāng)中
1. 開源軟件到底是什么?
開源軟件是計算機軟件下的一個子類,其中的源代碼向公眾開放并采取特定的許可機制,允許任何人對其進行代碼修改并重新發(fā)布代碼或者可執(zhí)行文件。
盡管開源軟件通常由一群人負(fù)責(zé)開發(fā)與維護,但事實上只要有意愿、任何人都可以訪問其代碼并在其中表達自己的構(gòu)想。
我曾經(jīng)為幾個開源項目貢獻過代碼,而且為開源項目作貢獻也確實是成為一位優(yōu)秀開發(fā)人員以及回饋技術(shù)社區(qū)的***方式。大家可以從中接觸到其他開發(fā)者編寫的代碼,并逐步學(xué)習(xí)如何對自己的代碼加以完善。就我個人而言,看到自己與其他開發(fā)人員共同構(gòu)建的開源項目能夠順利發(fā)展,實在是技術(shù)工作歷程中最值得驕傲的經(jīng)歷。
下面我們來看一些***人氣的開源軟件方案。大家可能會對開源項目數(shù)量之龐大以及在背后支持這些項目的巨頭企業(yè)表示驚訝,例如谷歌與Automattic。
2. 常見開源項目
目前世界上的開源項目數(shù)量以百萬計,下面我們僅列出其中最為常見以及***知名度的一小部分:
• WordPress,網(wǎng)絡(luò)上***的內(nèi)容管理系統(tǒng)之一,目前使用者群體已經(jīng)達到數(shù)百萬。
• PHP是目前網(wǎng)絡(luò)上人氣***的Web編程語言,它支持著包括Facebook在內(nèi)的八成以上網(wǎng)絡(luò)內(nèi)容。
• Audacity是一款免費且易于使用的多聲道音頻編輯器與錄音工具。
• OpenOffice是一款免費的微軟Office替代方案。
• Android開源項目是一套廣為人知的移動操作系統(tǒng),顧名思義屬于開源項目。
• Firefox OS是一套移動操作系統(tǒng),由Mozilla公司負(fù)責(zé)開發(fā)與維護。
3. 開源機制如何運作
開源項目的發(fā)展主要分為三個階段。下面讓我們簡單對各個階段進行一番評述。
階段一:貢獻
如果大家希望能夠切實參與到開源項目當(dāng)中,那么***先與該軟件背后的企業(yè)或者機構(gòu)取得聯(lián)系,詢問對方自己能為項目作出哪些貢獻。這種方式特別適合規(guī)模較小的項目或者新興企業(yè),不過大家需要明確一點——大部分開源項目不會為各位的工作成果支付任何報酬,我們的參與完全建立在自愿的基礎(chǔ)上。
遙想當(dāng)年,我在參與開源項目的開發(fā)工作時,就曾經(jīng)枯坐了數(shù)周之久以等待項目管理方給出的答復(fù)——事實上有一次等待周期甚至長達兩個月。不過請大家稍安勿躁,這份確認(rèn)郵件真的非常重要,值得我們?yōu)樗冻鲆恍┠托摹J盏綄Ψ降耐ㄖ螅_發(fā)工作就可以正式開始了。
另外,對于規(guī)模較大的項目,大家可以直接開始編碼工作并構(gòu)建起屬于自己的衍生軟件版本。大家還應(yīng)當(dāng)警惕這樣的情況:如果同一個項目的參與者過多,那么我們辛苦勞作打造出的成果很可能根本不會被收錄到該產(chǎn)品的最終版本當(dāng)中。在這種情況下,請各位權(quán)衡利弊,如果不滿意可以果斷退出。
如果大家正在為某個項目尋找能夠指導(dǎo)起步工作的靈感,也千萬別被自己的思路綁住了手腳。網(wǎng)絡(luò)上可能提供大量有趣的項目供我們參考,特別是在GitHub、SourceForge以及Google Code等站點當(dāng)中。
在真正著手處理與項目有關(guān)的工作之前,大家應(yīng)該首先學(xué)著熟悉項目的運作方式并了解如何對其結(jié)構(gòu)進行管理,只有這樣各位在需要援助之時才能清醒地意識到誰有能力幫自己渡過難關(guān)。再有,在開始工作之前明確自己要實現(xiàn)的目標(biāo)也是個不錯的主意,這樣我們就不至于把項目弄得一團糟、或者把寶貴時間白白浪費在其他開發(fā)者早已實現(xiàn)了的現(xiàn)有功能身上。
階段二:提交
當(dāng)大家已經(jīng)完成了自己預(yù)期的變更或者實現(xiàn)了構(gòu)思已久的新功能,下面要做的就是將變更內(nèi)容提交至主項目、并把成果發(fā)送給項目維護人員以供審查。
這項工作可能需要利用GitHub或者SourceForge等平臺來實現(xiàn)。我們對項目作出的變更一般會收到來自企業(yè)或者項目管理團隊的“接受”或者“拒絕”反饋,大家由此就能了解到自己的開發(fā)成果是否被實際應(yīng)用在了項目當(dāng)中。如果答案是“接受”,那么是時候邁向發(fā)布階段了。如果答案是“拒絕”,我們還需要重新回到貢獻階段、用心琢磨自己的想法是不是出了偏差。
階段三:發(fā)布
在整個開源項目開發(fā)過程中,發(fā)布可能是其中最為復(fù)雜的一個階段。在此期間,軟件的最終版本將被提交到托管項目的代碼庫中,向非開發(fā)者提供的實時版本也會作出相應(yīng)更新。到了這里,企業(yè)與開發(fā)人員就終于能夠向繁重的工作揮手道別了,接下來軟件成果將交給公眾進行使用以及評判。
內(nèi)容總結(jié)
我希望大家在閱讀了本文之后能夠?qū)﹂_源開發(fā)機制抱有更強的信心,更希望各位能夠清楚了解要如何親自參與到項目的發(fā)展進程當(dāng)中。開源開發(fā)真的非常有趣,但有時候無法得到理想的結(jié)果也會使人感到沮喪。不過請大家始終記住一點:堅持下去,遇到障礙時不要輕言放棄——這是獲得成功的必要前提。
在本系列文章的下一部分中,我們將一同了解開源項目的許可機制以及開發(fā)人員在遇到問題時可以通過哪些途徑找到答案。如果大家還有什么疑問,不妨評論欄中與其他朋友進行交流。
英文:http://code.tutsplus.com/tutorials/open-source-101-what-is-it--cms-21278