要實現(xiàn)可持續(xù)性,項目必需能夠負擔自身的各項成本。成本包括基礎設施成本(如托管和配套服務),以及開發(fā)、更新和維護代碼庫的成本。成本還包含項目產生的治理成本、營銷成本和溝通成本。
很多項目的初始成本是由上級機構、贊助商、投資商或者創(chuàng)始開發(fā)者的初始投資來支付的。
但當這些錢和資源都用完了,會怎么樣呢?
初期資金作為一種可行的選擇并不是無限期的。到了某個階段,就必須要開源或者節(jié)流。一個可持續(xù)的開源項目,其收入或節(jié)約的成本必須超過持續(xù)支持和開發(fā)的成本。
在軟件開發(fā)方面的殘酷現(xiàn)實,絕大多數(shù)項目不能實現(xiàn)可持續(xù)性。開源和閉源項目都是這樣的。實際上,任何需要資金支持的活動都是如此?,F(xiàn)實證明,絕大多數(shù)的創(chuàng)意都無法實現(xiàn)可持續(xù)性,而只有少數(shù)能夠做到。
因此,我們有必要探究為何項目沒能實現(xiàn)可持續(xù)性。某些情況下,這是因為項目未能達到它所設定的目標。所以,人們便期望能夠撤銷項目。然而,令人擔憂的是,很多項目就算達到了最初的目標,卻仍然會無法延續(xù)。公共資金支持的項目尤其如此。這類失敗通常是由規(guī)劃不當引起的。也就是說,一開始人們并沒有就項目初期資金用完時如何維持項目制定計劃,因此也就沒有為實現(xiàn)可持續(xù)性分配資源。
所以,結論是顯而易見的:要實現(xiàn)可持續(xù)性,項目的初始目標必須包括實施可持續(xù)性計劃。其意味著,可持續(xù)性計劃應該在項目周期的最開始階段制定出來。而要制定這一計劃,您必須了解自己有哪些選擇。
這里無法列舉所有可持續(xù)性選擇,因為可用的模式和項目創(chuàng)意一樣多。以下將簡單介紹常見開源軟件的可持續(xù)模型。
注意,只有極少數(shù)項目可嚴格歸為以下某種模型。大多數(shù)項目能夠實現(xiàn)可持續(xù)性,是因為它們將各種模型的要素進行了不同方式的組合;同樣,各種模型之間也有共通之處。以下部分僅為您開始制定可持續(xù)性計劃時提供參考。這些信息使您能夠接觸到像 OSS Watch 這樣了解您所面臨的機遇的顧問。
產品開發(fā)
一個從事開源產品業(yè)務的公司和其它公司并沒有什么區(qū)別。就是說,它必須將一部分收入投入到產品研發(fā)中。四大類公司有能力從事商業(yè)性開源軟件開發(fā):
為最大限度擴大其付費產品市場而開源軟件的服務公司,如支持、培訓、定制、搜索引擎和電子商務公司等
想拓展?jié)撛谟布袌龅挠布?,如打印機或手機制造商
使用開源組件的軟件公司
采用雙重授權模型,同時發(fā)行產品的專有版本和開源版本的軟件公司
一個公司的活動不僅限于以上某一種;同樣,每個開源項目的商業(yè)化也可由多個公司參與完成。
對于服務或硬件公司來說,主要營利方式不是出售軟件本身。這樣,這些公司就有可能發(fā)行受開源許可控制的軟件,以便從第三方的貢獻中受益。
對于服務型公司來說,開放軟件源代碼的動機是相同的。提供咨詢和定制服務的公司希望盡可能擴大對其服務的需求,因此發(fā)布核心產品的開源版本是一種市場培育方法。此外,提供軟件驅動的服務(如搜索引擎、Web 2.0服務或電商運營)的公司有充分的理由來開源他們的軟件套件中不具競爭性的部分。這樣就可以通過共享開發(fā)成本的形式,在初期開發(fā)、運營開發(fā)和持續(xù)維護中節(jié)約成本。例如,亞馬遜、IBM、雅虎、易趣、Facebook和越來越多的公司在使用 Apache HTTPD Web服務器和GNU/Linux,并為它們作出貢獻。
至于硬件公司,開源的動力可能來自于拓展硬件市場或降低產品開發(fā)成本。例如,打印機制造商可能會開源驅動程序,允許驅動程序被定制到不同的平臺,以便擴大其硬件市場。又如,手機制造商可能將開源軟件作為核心操作系統(tǒng),以便與其它制造商共享公共功能的開發(fā)成本。
通過銷售軟件營利的軟件公司有兩種可用模型。但每種模型只在特定的開源許可下有效。希望在專有產品中嵌入開源軟件的公司可使用所謂“寬松”開源許可(一般稱為BSD許可)來實現(xiàn)這一點。與此相反,其它公司對其軟件產品采用雙重許可授權模式,即采用所謂“公共”許可(如GPL),同時在專有許可方式下銷售軟件。
非營利性開放開發(fā)
很多時候,由某一組織開發(fā)的軟件其本身并不創(chuàng)造收益。在這種情況下,該組織可通過開放源代碼來降低開發(fā)成本。此時,可以考慮成立非營利性組織來管理軟件的開發(fā)。這樣做有兩種作用:首先,基礎設施成本和管理成本的很大一部分可被此非營利組織吸收。這些成本由使用非營利性組織管理的產品的公司出資維持。其次,這將鼓勵更多的組織參與到項目中來,因為他們相信,他們始終可以使用項目產品,并以符合所有貢獻者利益的方式管理項目產品。就是說,不存在與項目戰(zhàn)略相“沖突”的商業(yè)利益,也沒有被“買斷”的席位能夠掌控開發(fā)。
此類組織的最好例證可能就是 Apache 軟件基金會 (ASF),一個領導著如Apache Web服務器 (HTTPD) 和許多基于 XML 和 Java 的項目的非營利性組織。ASF 由來自公司和個人的慈善資金支持,為 Apache 項目開發(fā)人員提供工作所需的基礎設施。ASF 的工作由個人來完成,這些人通常是使用 Apache 代碼作為內部開發(fā)代碼或銷售定制版本的公司的雇員。
例如,Apache Rave 門戶框架最初是由學術界和商業(yè)伙伴作為 Apache 孵化器的一個項目提出的,后續(xù)又成功吸引了大量開發(fā)者,并于 2012 年晉級為 ASF 頂級項目。
非營利基金會的其它例子還包括:
自由軟件基金會
Eclipse 基金會(注意,該組織最初是一個聯(lián)合會,見下文)
Gnome 基金會
Mozilla 基金會
Python 基金會
聯(lián)盟
當組織的核心團隊就某一項目合作時,可能形成軟件維護聯(lián)合會。這與創(chuàng)建非營利性組織類似(見上文)。聯(lián)合會與非營利性組織的主要區(qū)別是,聯(lián)合會成員比非營利性組織發(fā)起者對項目擁有更多的控制權。非營利性組織會以有利于所有人的方式管理軟件,而聯(lián)合會則以對其成員(和共同利益者)有利的方式管理軟件。
聯(lián)合會模式的一個優(yōu)勢在于,聯(lián)合會能夠通過決定如何使用資源(時間和金錢)來更密切地控制項目。然而,這一事實將減弱項目對非核心團隊成員的吸引力??紤]到今日的用戶會成為明日的開發(fā)者,因而應鼓勵用戶早期參與,這一點就顯得尤為重要。遺憾的是,聯(lián)合會模式往往使用戶感到被排除在外,因為他們不是項目成員。
有意思的是,許多以種子資金創(chuàng)立的項目常常以賢明君主模式(benevolent dictatorship)或聯(lián)合會模式啟動,而當種子資金用完時不得不轉變?yōu)槠渌J?。這種轉型非常難于控制。
DSpace 項目是教育系統(tǒng)中一個成功的聯(lián)合會項目的例子。聯(lián)合會模式的其它例子還包括 Apereo 基金會和Kuali 基金會。而 DSpace 和 Apereo 都在轉向更開放的模式。
對降低成本的貢獻
一個組織選擇開源軟件產品可能出于多方面的原因。某些情況下,他們這樣做是為了實施新流程、提高現(xiàn)有流程效率或者降低軟件許可費用。已經采用了開源軟件產品的組織可能也會選擇向開源項目貢獻代碼,以獲得更多的收益。例如,加入新功能以進一步簡化內部流程,或者修復 bug 以提高員工的使用效率。
在這種情況下,回饋項目的主要動機有兩點。首先,通過回饋項目,該組織可確保所依賴的軟件保持活躍。其次,通過回饋項目,該組織可確保未來的升級盡可能順利,即升級后不必重復進行本地修改。
例如,APLAWS 開源內容管理系統(tǒng)就是為幫助英國地方政府提供在線服務而開發(fā)的。
教育和研究資金
英國以及世界許多其他地方鼓勵教育機構在開源許可下開發(fā)軟件。大專院校的開源項目資金可能來自投資機構或學校自身。只要機構可以獲得直接利益,投資,即便不是全額,也很可能會一直持續(xù)下去。
機構可以多方面受益。最大的好處可能就是,內部成本的降低和在為更廣泛的教育界做出貢獻方面提升聲譽。此類項目的一個例子是劍橋大學的 Exim 項目。菲利普·黑茲爾自 1995 年 Exim 項目開創(chuàng)起即負責此項目,在劍橋大學計算機系任職期間他持續(xù)服務此項目,直到 2007 年退休。這類項目的另一個例子是南安普敦大學的 MailScanner 項目,大學雇員朱利安·菲爾德是該項目的“賢明君主”。
開放開發(fā)已證明是具有不同利益和專長的各方的有效合作方式,尤其適合于開源軟件開發(fā)。在商業(yè)領域,我們看到人們對“開放式創(chuàng)新”這一理念具有廣泛興趣,認為這是開發(fā)新產品和現(xiàn)有產品的有效方法。通過精心規(guī)劃和管理,開放式創(chuàng)新提供了一種可控、可管理的流程,鼓勵商業(yè)開發(fā)和社會推廣,而項目學術研發(fā)團隊只需專注于局部問題,而非商業(yè)計劃。例如,Apache Wookie 由博爾頓大學開發(fā),卻吸引了大量其它學術外領域的開發(fā)者,并于 2012 年成為 Apache 頂級項目。
慈善家和其他基金組織
多個慈善組織是開源項目的重要投資者。這些組織包括:
梅隆基金會 - 主要資助圖書館領域的重要工作
Google Summer of Code - 由 Google 運作的項目,用于資助學生參與開源項目
自由軟件協(xié)會 - 為免費和開源軟件項目募集資金的慈善機構
志愿者
參與開源軟件項目很有教育意義,更不必說其樂趣了。因此,在業(yè)余時間為開源作貢獻的人并不少見。除以上模式之外,志愿者的工作也是很重要的,大多數(shù)開源項目都有志愿者參與。
目前,項目可通過多種方式使用免費基礎設施獲得托管和相關功能(如問題跟蹤和社區(qū)參與),此類資源有 SourceForge 和 GitHub。這意味著,只要項目能得到來自可靠社區(qū)的開發(fā)和發(fā)布支持,便可以零成本可持續(xù)發(fā)展。
(志愿者)用戶對于開源項目同樣很重要,因為用戶會提出需求并進行測試。只要您能夠管理用戶對特定版本的期望,就能發(fā)行開源軟件試用版或早期采用者版本用于測試,這便可以大大降低穩(wěn)定版本發(fā)行前的成本。
OSS Watch 文檔如何建立開源社區(qū)切實地介紹了如何實際創(chuàng)建一個包容、多元的開源社區(qū)。