付費?廣告?捐款?如何讓開源軟件活下去?

【CSDN編者按】作為一名使用開源軟件的開發者,你是否曾思考過開源軟件是如何盈利?如何運營下去的?本文作者從正反兩面給出自己看到的案例和建議,思考讓開源軟件持續下去的方式,一起來看看吧。

付费?广告?捐款?如何让开源软件活下去?

作者 | TJ VanToll

譯者 | 香檳超新星,責編 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

作為一名軟件開發者,你可能並不會意識到,對大多數人來說開源背後的商業邏輯完全不合常理。

比如說,幾天前我與一個“普通人”的對話如下:

我:“對不起,我來晚了。今天工作忙的焦頭爛額的”。朋友:“沒事沒事。工作遇到什麼問題了嗎?”我:“我們要在三個不同的JavaScript框架中選出一個用於項目開發,下週就Deadline了,所以必須儘快選擇。”朋友:“哦哦,明白了。哪個框架最便宜呢?”我:“哦,它們都是免費的,不要錢。”朋友:(๑°ㅁ°๑)‼

在大多數行業中,你需要為能夠幫助你完成工作的工具付費,但軟件的世界裡我們大多數人都能使用各種免費工具來搭建應用程序。

最受歡迎的文本編輯器?Visual Studio Code,免費。

最受歡迎的源代碼管理提供商?Git,免費。

最受歡迎的JavaScript庫?React、Angular、Vue以及其他競爭對手全部免費。

付費軟件並不稀奇,但令人驚訝的是,僅僅在過去的幾年中,我們就已經把很多重要的基礎架構轉移到了免費和開源的軟件上。

這種向免費且開源的工具的轉移對開發人員和整個軟件行業都有極大的益處,但這種轉變也帶來了其他後果。在本文中,我將就其中的一種後果進行討論:即一個有問題的經濟模型和我們可以採取的措施都有哪些。

首先讓我們先簡要回顧一下,我們最終是如何獲得今天這樣的開源模型的。

付费?广告?捐款?如何让开源软件活下去?

開源是如何來的?

為了能讓你體會到時代的變遷有多麼巨大,我們來看下2000年代初期微軟高管們說的話:

開源是對知識產權的嚴重破壞。我想象不到還有什麼會比開源對軟件業務和知識產權行業的傷害更大。”——前Windows主管Jim Allchin“歷史證明,儘管這種類型的模型(開源)可能會佔有一席之地,但對於建立一個大眾化的市場,以及搭建面向消費者們的功能強大且易於使用的軟件,這種模型並不成功。”——前微軟高級副總裁Craig Mundie

站在今天的角度來嘲笑這些言論很容易,但在當時這種觀點並不能算得上是激進。到2000年,開源已經是一個已經立足並在逐步增長的概念了,但大多數公司主要還是選擇使用付費方案來搭建應用程序。

我在軟件行業的職業生涯始於2000年代初期,當時我的第一份工作涉及一個基於IBM的IDE,用於編寫Java代碼,一個付費的源代碼管理方案(我倒寧願不記得),以及一個託管我們的生產程序的IBM大型機。

付费?广告?捐款?如何让开源软件活下去?

IBM的Rational Application Developer,我在2000年代初期用過,直到今天這個軟件還存在。

所有這些工具都需要花錢,很多錢,但這種支出被認為是可以接受的,因為這些工具提供了足夠的價值,能夠保障付出的成本是值得的。

在之後的十年中,業界慢慢地轉向開源。公司越來越能夠意識到,像MySQL和Apache這樣的開源代碼工具不僅是可行的,甚至比花大價錢買的商業產品更好。

我向開源轉移的經驗是關於Web的,與今天的Web相比,2000年代中期那時候的Web像是未經開發的蠻荒西部。Web開發人員的任務內容包括支持一堆令人眼花繚亂的瀏覽器,從最新發布的Internet Explorer 7到古老的IE6,以及Firefox,開源瀏覽器開始挑戰微軟對瀏覽器市場的束縛。

開發人員搭建的旨在用來管理跨瀏覽器開發複雜性的工具包括Dojo、MooTools、jQuery以及許多其他工具等等。

付费?广告?捐款?如何让开源软件活下去?

2007年6月的jQuery主頁

這些框架都採用了不同的方法,使用了不同的API,但它們都有一個重要的共性:免費以及開源。

更多成熟的開發生態系統,如Java,.NET等,在那時候面對開源的益處時還在糾結,但Web從一開始就是建立在免費且開源的軟件的基礎上。

這對像我這樣的Web開發新手來說是個福音,因為這意味著我在家裡就可以立馬用Dojo和jQuery上手做點東西了,我在公司也可以開始使用它們了——我曾經習慣於掏錢來購買自己需要的軟件工具。

不只有我一個人能立即抓住使用這些新庫的機會。jQuery的使用率在2000年代後期激增,催生了一個龐大的jQuery插件生態系統,這些插件在jQuery的基礎上添磚加瓦。這些插件中的絕大多數都免費且開源,因為到了那個時候,免費且開源已經成為了人們對所有Web框架以及插件的期待。

新一代的Web軟件激發了許多開發人員(包括我自己)的靈感,並幫助Web變成現在。“所有軟件都必須要免費且開源”的預期導致了當今開源界的一個困境:經濟和資金結構方面是有問題的。

付费?广告?捐款?如何让开源软件活下去?

開源與經濟學

在最開始時,開源項目是個人或小團體的興趣項目,發展到後面免費分享給世界。這種現象在軟件世界中很普遍,是很棒的一件事情。

但這並不意味著這些開發人員所做的工作100%都是為了無私奉獻。時至今日,人們參與開源項目的主要動力是為了自己的職業發展。例如,jQuery團隊的前成員們現在很多都在大型科技公司中擔任重要角色。MooTools的幾個貢獻者現在Facebook,從事React方面的工作。我曾參與jQuery UI兩年,後來這段經歷幫助我得到了今天在Progress的這份工作。

本來把職業發展作為參與開源的主要動力無可厚非,但當項目作者取得一定成功時,可能就會出現問題。因為事實證明,一旦你已經得到了自己想要的知名度,突然間就會覺得,處理那些GitHub的隨機issues已經不再是你度過星期六晚上的理想方式了。

在這種情況下,許多開發人員會試圖通過收集捐款來覆蓋他們自己所花的時間和精力。例如,如果你回顧2007年的jQuery網站,請注意看,屏幕的左下方已經出現了一個捐贈按鈕。

付费?广告?捐款?如何让开源软件活下去?

Dojo項目也從差不多那時候開始在網站上設置了捐贈選項。

付费?广告?捐款?如何让开源软件活下去?

如今,捐款通常是通過Patreon或某種形式的贊助來收集的,ESLint和Vue.js等項目就是這樣。也許最臭名昭著的例子是流行的core-js庫,在每次安裝時都會顯示一個公開的捐贈請求,這引發了一些爭議。感謝您使用core-js(https://github.com/zloirock/core-js)來polyfill JavaScript的標準庫!這個項目需要您的幫助!請考慮在Open Collective 或 Patreon上支持我們!> https://opencollective.com/core-js> https://www.patreon.com/zloirock還有,core-js的作者目前正在找工作中。-)比這爭議更大的是,從去年開始,the Standard JavaScript項目開始在你每次安裝它的軟件包的時候都顯示廣告了。

如你所料,開發人員對廣告不太滿意,因此npm迅速採取了行動——禁止任何在運行時,安裝時或在軟件開發週期的其他階段(例如via npm腳本)顯示廣告的軟件包。

無論你如何看待npm日誌中的廣告,有一個共識是我們都能達成的:從經濟學的角度來看,作者想要通過自己的作品來賺錢的想法再正常不過了。

在當今的開源世界中,像core-js和Standard這樣的項目所提供的價值,與維護者所獲得的經濟利益之間存在巨大的鴻溝。

考慮到這一背景,讓我們來看看我所認為的可以用來試著解決資金缺口的三種方法。

付费?广告?捐款?如何让开源软件活下去?

解決方案

解決方案1:基金會

解決開源項目資金問題的最古老方案就是以基金會的形式存在的。其中最著名的是Linux基金會。該基金會成立於2000年,如今擁有超級多的團體成員。該基金會支持著幾個最大的開源項目,從Linux本身,到Node.js,再到jQuery,以及差不多它們之間的所有東西。

付费?广告?捐款?如何让开源软件活下去?

Linux 基金會支持了大量項目的開發

儘管Linux 基金會是最大的軟件基金會,對於更專業的軟件技術或領域,還有許多其他的基金會存在。例如,.NET 基金會幫助支持.NET項目,而FINOS,即Fintech Open Source Foundation,則支持著金融領域的開源項目。

這些基金會做了很有益的事,像Linux這樣的大型開源項目得以維護到今天的原因,但它們不是萬能的,不能完全解決開源的資金問題。

基金會最大的問題,也許是所支持的項目的廣度太大。如果你是一家公司,然後你花錢加入一個基金會(通常是一大筆錢),那麼你將只能指望基金會把這些資金適當地分配到各個開源項目中。當基金會支持的項目數量多的驚人時,也無法保證你的錢會投入到你的公司會用到或會關心的項目中。你的資金也很有可能會流入你的競爭對手使用的開源項目中。

因此,對於大型的成熟項目(例如Linux,Node.js和jQuery),我認為基金會是一種出色的解決方案,但它對於沒有那麼成熟的開源項目就起不到多大作用了。不過好消息是,針對這些較小的項目,有另一種模型近來引起了很多關注:訂閱。

解決方案2:訂閱

長期以來,“訂閱”一直是開源項目作者用來籌集資金來支持自己工作的一種流行方式。

在2000年代初期,用PayPal這樣的服務來進行一次性捐贈以及重複付款很流行。最近,Patreon推廣了一種為開源項目提供資金的訂閱模型,並且現在許多不同的訂閱平臺都在爭相提供類似的訂閱服務。

例如,2016年啟動的Open Collective平臺提供了一種圍繞公共捐贈展開的融資模式。

付费?广告?捐款?如何让开源软件活下去?

如今,非常多的項目都使用了Open Collective,包括Bootstrap和core-js。因為Open Collective上的捐贈是公開的,所以能夠告訴你某些項目的實際收入是多少。例如,以下是Open Collective上給Bootstrap捐贈最多的一些組織和個人。

付费?广告?捐款?如何让开源软件活下去?

這種模式最讓我喜歡的地方在於,它能激勵組織對項目進行捐贈——激勵就是捐最多的組織會出現在頂級捐贈者名單上。比如說,我本來並不知道Segment是個什麼東西,但是在看到他們是Bootstrap的第二大捐贈者之後,我就去查了一下Segment是提供什麼服務的。

然而Open Collective並不是這個領域內的唯一玩家。去年GitHub就首次推出了GitHub Sponsors——GitHub內置的開源贊助項目。GitHub在這方面具有相當大的天然競爭優勢,因為GitHub本身在過去的十數年中一直是託管開源項目的經典選擇。

不過,值得稱讚的是,GitHub確實採取了措施來讓自己的贊助程序能夠與競爭者的並列。比如,現在GitHub上的任何項目都可以創建一個.github / FUNDING.yml文件,你可以在該文件中列出這個倉庫所能給出的所有贊助方式,不論這種方式是不是GitHub Sponsors。

如果你試一下,就會發現GitHub會在你的倉庫上顯示一個“贊助商”按鈕,列出了你的用戶可以選擇的所有贊助方式。例如,core-js 的GitHub庫中的過程是這樣的:

付费?广告?捐款?如何让开源软件活下去?

最後一項服務在上面這張截屏裡,也就是Tidelift,該服務具有非常獨特的功能。Tidelift是每月約1,500美元的訂閱產品,提供他們稱之為“託管開源”的服務。在Tidelift的網站中他們將這種服務分為三個部分:

  • 工具。我們提供工具來跟蹤你使用的所有依賴項(denpendencies),標記issues,以及執行策略

  • 管理。我們代表你來管理核心的,關鍵的package,還包括調研並解決issues,這樣你就不用親力親為了

  • 維護者。為了維護諸多重要的項目,我們會招募維護者,並付錢給他們,這樣來從根本上積極預防以及解決問題

我對這種方法懷疑態度,一是因為它感覺上像是一種間接的支持開源維護者的方式,二是因為我認為公司沒有足夠的動機去訂閱。儘管如此,看到有公司在嘗試用創新的方法來創建一個不同的開源資金模型,我還是感到很欣慰的。還有一點就是,Tidelift籌集到了4000萬美元鉅款的資金,所以說確實還是有投資者認為Tidelift的模型具有一些真實潛力的。

總體而言,也許對訂閱服務的未來感到樂觀的最大依據就是當前競爭對手的數量。更多的競爭者意味著更多的創意,如果背後的經濟學原理能正常發揮作用的話,最好的那些創意將會帶來越來越多的項目。而隨著GitHub參與其中,以及在倉庫上提供“贊助者”按鈕,有助於確保這些贊助服務一直都保持可見的狀態。

我對訂閱服務持悲觀態度的原因是它們嚴重依賴於善舉。想說服公司捐款並不容易,而即使這些訂閱服務提供了一定的激勵措施,例如出現在頂級捐助者名單中,我仍然認為,他們需要向公司提供更多東西來跟公司換取現金。

在結束我們對開源資金解決方案的討論之前,我想就一種你可能想不到的終極選項談談。

解決方案3:花錢購買軟件

為了寫本文,我在做調研時瞭解了很多有關如何解決開源的財務問題的觀點,但其中沒有一個包含最簡單的經濟解決方案:直接讓公司為他們使用的軟件付費。

我在免費軟件和付費軟件領域都有很多經驗,因為我的職業生涯兩種都涉及過,而隨著時間的流逝我的觀點已經逐漸改變,從堅定地信仰開源,到面對什麼時候該為軟件付費的問題時更加務實——很大程度上是因為我親身經歷過開源項目的資金困難問題。

從前我參與免費開源的jQuery UI項目有兩年之久,並且在看到我們的組件幫助世界各地的Web開發人員們搭建出了更好的應用程序時會引以為豪。但是同時,我還看到,當維護者們失去興趣,以及贊助商的錢不再夠支付賬單時,一個項目就會很快消亡。今天,jQuery UI理論上是Linux 基金會的一部分,但該項目的最近一次發佈還是在2016年。

在這之後,我為免費且開源的NativeScript項目工作了五年,而且我們的框架已幫助眾多的JavaScript開發人員搭建出了iOS及Android應用程序。但是在維護NativeScript時,我明白了,當不能直接賺錢時,要為框架籌集資金是多麼困難,尤其是你的框架還要與Facebook的React Native和Google的Flutter之類的框架競爭,而這些公司似乎有無盡的預算,並且能接受收入為零。

與我在jQuery UI和NativeScript所做的工作形成鮮明對比的是,在過去的幾個月中,我換到了KendoReact團隊工作,在這個團隊中我們向React開發人員出售高級UI組件。在jQuery UI和NativeScript的時候,我很難解釋項目的財務狀況,而KendoReact團隊的情況就非常簡單了:開發人員付錢給我們,而作為回報,我們向他們提供一套很棒的UI組件。

付费?广告?捐款?如何让开源软件活下去?

kendo-react UI組件的示例程序:https://telerik.github.io/kendo-react-finance-portfolio/#/stocks

付費軟件有諸多好處。比起在GitHub上隨機地找項目,付費能給你提供更多保障——例如保障更新,保障更一致的API,以及保障你在不可避免地遇到問題時可以聯繫某個公司。

但這並不意味著付費軟件是完美的。付費會給社區的建設增加難度,因為你的付費用戶永遠不可能會像免費用戶那麼多。而且收款還要求你擁有一些公司的基礎設施,這對於小型項目來說可能過於繁複。

由於以上這些原因,我不建議所有的,或者大多數的軟件都採取收費措施。開源軟件為世界帶來了很多好處,並且開源應該繼續成為我們開發大多數軟件的方式。但是我確實認為付費軟件會佔有一席之地,而不應被開發人員視為原則錯誤然後馬上拒絕。

在基金會和捐贈這兩個途徑以外,對軟件收費應被視為資助軟件項目的另一可行方法。

總結

在當今的軟件世界中,開源項目所能提供的價值,與項目能獲得的報酬之間存在巨大的脫節。

在這種脫節的刺激下,許多服務應運而生,試圖使開源的經濟層面更加合理化。基金會可以幫助確保大型開源項目能夠繼續運行,訂閱服務可以幫助規模較小的開源項目維護者能夠付得起賬單。

我所希望的是,我們可以鼓勵公司更多地為自己使用的軟件付費。這些付費可以以基金會會員,訂閱開源項目等形式來進行,也可以直接通過為軟件付款來實現。理想情況下,這一領域的持續創新將有助於簡化付款流程,並促進更多公司對使他們受益匪淺的行業進行反哺。如果企業們願意如此的話,這樣我們就能更簡單地向朋友和家人們解釋開源是怎麼回事了。

原文鏈接:

https://www.telerik.com/blogs/can-we-make-open-source-more-sustainable

作者簡介:TJ VanToll,前端開發者,作家,有十年以上的web開發經驗,曾在jQuery以及NativeScript團隊工作數年。

本文為CSDN翻譯文章,轉載請註明出處。


分享到:


相關文章: