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