作者 | Daniel Oberhaus 譯者 | 彎月 責(zé)編 | 仲培藝 出品 | CSDN(ID:CSDNnews) 以下為譯文: Stephen Henson 審核通過了一個互聯(lián)網(wǎng)漏洞的時候,正值 2011 年跨年夜的午夜。 這位 43 歲的英國軟件開發(fā)人員接受了有關(guān) OpenSSL 代碼的一處很小的改動,OpenSSL 是一種開源加密協(xié)議,其可以保護網(wǎng)絡(luò)上的很多內(nèi)容。OpenSSL 是開源的,任何人都可以在線查看其代碼,并自愿貢獻項目代碼,但這并不意味著真的有很多人做出了貢獻。 Henson 在 OpenSSL 上花了十多年的心血,OpenSSL 有一個很小的團隊,加上其他核心成員也從未超過 3-4 個開發(fā)人員。到 2011 年底,他與其他核心開發(fā)人員需要負責(zé)維護一個包含大約 50 萬行代碼的代碼庫,其中絕大部分是由 Henson 自己編寫或批準(zhǔn)的,這個責(zé)擔(dān)子可不輕。 OpenSSL 保護了大量的 Web 服務(wù)器(互聯(lián)網(wǎng)中三分之二的網(wǎng)站都用到了這些服務(wù)器),以及電子郵件服務(wù)器、聊天服務(wù)器、VPN 以及軍事、政府和金融機構(gòu)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施。 12 月的那個晚上,Henson 批準(zhǔn)的代碼變更是由一位名叫 Robin Seggelmann 的德國開發(fā)人員提交的,他幫忙編寫了 OpenSSL 的“心跳(heartbeat)”標(biāo)準(zhǔn)。在這項代碼變更被批準(zhǔn)之前,Henson 和 Seggelmann 已經(jīng)在這段代碼上工作了數(shù)周時間,但仍未能發(fā)現(xiàn)這個 bug:允許攻擊者攔截傳遞給由 OpenSSL 保護的任何站點的信息。 后來, Seggelmann 承認了代碼中的 bug——這就是著名的“心臟出血”(Heartbleed)漏洞,雖然這是一個“非常微不足道”的小改動,卻成為了歷史上最危險的軟件漏洞之一。對于像 Henson 這樣經(jīng)驗豐富的人來說,應(yīng)該很容易發(fā)現(xiàn)并修復(fù)這個 bug——但是每個人都會犯錯誤。實際上,在 Google 的一位程序員后來于 2014 年發(fā)現(xiàn)并修復(fù)了這個 bug 之前,它已經(jīng)在 OpenSSL 代碼中存活了將近兩年半的時間。盡管如此,如今這個漏洞依然存活于數(shù)十萬臺設(shè)備上,其中許多設(shè)備不太可能得到修復(fù)。 OpenSSL 只是成千上萬開源軟件程序中的一個,數(shù)百萬人每天都依賴這些程序來瀏覽網(wǎng)頁或觀看視頻,實時翻譯或在智能手機上使用語音識別功能等。這些項目都是開源的,這意味著任何人都可以免費查看或使用這些代碼。 自從開源創(chuàng)建以來,開源開發(fā)的最大賣點之一就是軟件開發(fā)人員 Eric Raymond 提出的“林納斯法則(Linus’s Law)”,還有人認為那么多的人查看這些代碼,所以“所有的錯誤都會浮出水面”。因此,在心臟出血 bug 被修復(fù)后,每個人心中最大的疑問是:這么關(guān)鍵的一個漏洞為何會被忽視如此之久,而其他開源項目的代碼中是否也存在類似的漏洞。
正如 OpenSSL 基金會的前任首席執(zhí)行官 Steve Marquess 在博客文章中指出的那樣,心臟出血可以歸因為開發(fā)人員的筋疲力竭以及資金的匱乏。據(jù) Marquess 所言,該基金會的捐款預(yù)算不到 2 千美元,每年簽署的合同收入不足 100 萬美元,且無法承擔(dān)更多合同,因為其開發(fā)人員(其中許多人有全職工作和家庭)根本沒有時間。 Marquess 還表示,實際上 Henson 是唯一一個全職工作的 OpenSSL 開發(fā)人員,而且以他的技術(shù)實力如果換作其他地方他所得到的報酬遠不止如此微薄。 “這些人并不是為了錢而在 OpenSSL 工作,他們也不是為了出名。他們這么做只是出于對技術(shù)的自豪感以及對他們所信仰事物的責(zé)任……他們知道在出問題前,沒人會注意到他們,沒人會重視他們。” 開源惡疾:把開源當(dāng)成天賜禮物“搶”走的人 很顯然,全球互聯(lián)網(wǎng)的安全性僅靠一位拿著微薄薪資的程序員嘔心瀝血的無私奉獻來支撐著,這本身就是很大的問題,那么誰應(yīng)該擔(dān)負起責(zé)任呢?Marquess 認為應(yīng)該由“廣泛使用 OpenSSL,并將其視為理所當(dāng)然的商業(yè)公司和政府”站出來。 Marquess 在文中寫道:“我說的就是你,世界 1000 強公司,那些靠銷售包含了 OpenSSL 產(chǎn)品賺取利潤的人;那些弄不清楚如何使用 OpenSSL 就來纏著我們要免費咨詢服務(wù)的人;那些從來沒有為開源社區(qū)做出過貢獻,卻把 OpenSSL 當(dāng)成禮物拿走的人。” Marquess 和 Henson 都于 2017 年離開了 OpenSSL,但在臨走前他們還為這個項目做好了近期的籌劃。在他們離開后,OpenSSL 的核心開發(fā)團隊已經(jīng)發(fā)展到了 7 人,該項目的資金可以至少撐到 2021 年。這主要得益于 Linux 核心基礎(chǔ)設(shè)施計劃的大量資助——該計劃致力于向?qū)ヂ?lián)網(wǎng)安全至關(guān)重要的開源項目分配資源。該核心基礎(chǔ)設(shè)施計劃本身的資金來自亞馬遜、Google、IBM、微軟、Facebook 和英特爾等主要科技公司的捐款。這筆資助意味著 OpenSSL 是安全的——只要這些公司繼續(xù)捐贈。 從表面上看,如今的開源軟件社區(qū)非常繁榮。各家公司和政府正在以 20 年前難以想象的速度采用開源軟件,而新一代程序員正在開發(fā)軟件,并且可以隨意使用。然而,深入觀察你會發(fā)現(xiàn)問題已經(jīng)開始顯現(xiàn)。 開源的優(yōu)勢地位給流行軟件的維護者帶來了沉重的負擔(dān),如今他們需要處理比以往更多的 bug 報告、功能請求、代碼審查和代碼提交。與此同時,開源開發(fā)人員還必須處理不斷涌入的不熟悉社區(qū)規(guī)范的企業(yè)用戶生產(chǎn)和使用開源軟件。這導(dǎo)致開發(fā)人員疲于應(yīng)付,并對依賴免費勞力來生產(chǎn)軟件的公司產(chǎn)生了不滿情緒,這些公司利用開源軟件打包成產(chǎn)品后賣給消費者以獲取巨額利潤。 從這個角度來看,心臟出血并不是唯一一個開發(fā)人員精疲力竭和資金匱乏的例子,而是多年以來在開源軟件社區(qū)內(nèi)逐漸惡化的系統(tǒng)性疾病的產(chǎn)物。確定這種疾病的癥狀和原因很容易,但想找到治療方法卻很難。 許多開發(fā)人員與 Marquess 一樣認為開源發(fā)展的主要問題在于財務(wù),如果大型科技公司能夠為他們所依賴的開源軟件項目貢獻更多資源,那么這些問題就可以得到解決。從理論上講,這可以讓開發(fā)人員在開源項目上投入更多時間,并激勵其他程序員為開源項目做貢獻。 然而,僅靠在開源社區(qū)投入資金還遠遠不夠。關(guān)于如何分配增加的資金以及如何回報提供資金的組織,這本身就是問題。事實上,資本的涌入有可能破壞社區(qū)驅(qū)動的基礎(chǔ),而近半個世紀(jì)這個基礎(chǔ)一直支撐著開源的發(fā)展。 免費提供啤酒:開源軟件的經(jīng)濟基礎(chǔ) 為了理解當(dāng)前關(guān)于開源軟件經(jīng)濟學(xué)的爭論,我們有必要回顧一下其歷史發(fā)展的背景。這可以追溯到 80 年代早期麻省理工學(xué)院的人工智能實驗室。 那是一個 Marvin Minsky 等計算機科學(xué)先驅(qū)與 Richard Stallman 和 Guy Steele 等新一代黑客交鋒的時代,后者憑借自己的實力從根本上改變了計算機編程世界。Steele 在編寫和創(chuàng)建 Lisp 和 Scheme 等編程語言方面起到了重要的作用,而 Stallman 為自由軟件運動奠定了基礎(chǔ)——這是自 Luddism 以來對技術(shù)仲裁者的最大挑戰(zhàn)。 在最近一次接受 New Left Review 的采訪時,Stallman 描述了麻省理工學(xué)院的人工智能實驗室培養(yǎng)了一種合作與激進開放的文化,以至于實驗室的巨型計算機沒有密碼保護,實驗室的大門始終處于無鎖狀態(tài)。可以肯定的是,Stallman 承認這些開放的文化是環(huán)境的產(chǎn)物:例如 Minsky 總是丟鑰匙,而實驗室里的研究人員不得不共享龐大的計算機,因為這是唯一的一臺。盡管如此,該實驗室的精神還是給 Stallman 留下了深刻的印象。 1983 年,他向 Usenet 小組(這基本上是一個論壇的原型)發(fā)布了一條消息,他宣布打算創(chuàng)建一個操作系統(tǒng)并“免費送給所有想要使用的人”。Stallman 稱這個操作系統(tǒng)為 GNU(Gnus Not Unix),這是對當(dāng)時主流專有操作系統(tǒng)(即 Unix,貝爾實驗室內(nèi)部使用的操作系統(tǒng))的挑戰(zhàn),而它的名字也蘊含了這一點。 GNU 開啟了自由軟件運動。1985 年,Stallman 在 GNU 宣言中總結(jié)了這一原則:“我認為黃金法則的要求是:如果我喜歡一個程序,那么我必須與喜歡它的其他人分享。軟件銷售商希望分裂用戶并征服他們,讓每個用戶都答應(yīng)不與他人分享。我拒絕這種破壞用戶團結(jié)的方式?!?/p> Stallman 在討論自由軟件時使用“自由”這個詞的方式并不是很明顯。正如他喜歡的表達方式,自由軟件的“自由”意味著“自由言論,而并不是免費的啤酒”。換句話說,自由軟件的定義是道德要求,即將代碼從對使用方式的限制中解放出來,但這并不一定意味著必然不收分文免費贈送軟件。自由軟件運動的基本原則于 1989 年正式編纂完成,而當(dāng)時 Stallman 發(fā)布了 GNU 通用公共許可證(General Public License,簡稱 GPL)——即現(xiàn)在更廣為人知的公共版權(quán),它為自由軟件開發(fā)的爆炸式增長奠定了基礎(chǔ)。 Richard Stallman(右)正在展示“自由言論”與“免費的啤酒”之間的區(qū)別。圖片來源:Wikimedia Commons 兩年后,脾氣暴躁的芬蘭學(xué)生 Linus Torvalds 使用 GPL 發(fā)布了他的免費操作系統(tǒng)內(nèi)核 Linux。其內(nèi)核經(jīng)常與 GNU 軟件一起使用,自發(fā)布以來的三十年,GNU/Linux 已經(jīng)成為世界上 Web 服務(wù)器和個人計算使用最廣泛的操作系統(tǒng)之一。繼 Linux 之后,許多其他有名的免費軟件程序都在 GPL 或符合 GPL 標(biāo)準(zhǔn)的許可下發(fā)布,其中包括 Apache Web 服務(wù)器軟件和 MySQL 數(shù)據(jù)庫引擎,兩者目前仍在廣泛使用。 在狂熱的互聯(lián)網(wǎng)泡沫中,當(dāng)名不經(jīng)傳的科技公司都獲得了令人憎惡的估值時,Stallman 由道德驅(qū)動的自由軟件運動提供了一種截然不同的視角來看待未來。與硅谷的風(fēng)險資本家在辦公室里大量炮制的空中數(shù)字城堡不同,自由軟件發(fā)揮了作用。Stallman 和他的助手證明了,通過結(jié)合道德信念和技術(shù),可以構(gòu)建出優(yōu)秀的軟件,這些軟件能夠通過修改來滿足用戶的個性化需求。90 年代間曾有一個短暫的時期,軟件的未來似乎就在于自由——真正的自由。 后來,在 1997 年,一位名叫 Eric Raymond 的程序員發(fā)表了《大教堂和市集》(The Cathedral and the Bazaar),這篇文章分析了開發(fā)自由軟件的過程。Raymond 富有創(chuàng)意的文字和核心是他所謂的“林納斯法則”(Linus’s Law),主要思想是說如果足夠多的人共同開發(fā)一個軟件程序,那么任何隱藏在代碼中的 bug 就會被迅速捕獲和修復(fù)。從本質(zhì)上講,Raymond 為自由軟件開發(fā)的效率打好了基礎(chǔ)。由于軟件是公開開發(fā)的,所以任何人都可以看到自由軟件程序的底層,這意味著任何代碼中潛在的 bug 都會被迅速發(fā)現(xiàn)。林納斯法則的必然結(jié)果是:自由軟件可以更快地發(fā)展,因為任何人都可以針對軟件提出自己的改進,并發(fā)送給項目的核心開發(fā)人員。 Raymond 的分析對自由軟件運動的影響非常大。在他的文章發(fā)布之后,網(wǎng)絡(luò)瀏覽器 Netscape(它曾是世界上最有價值的一個軟件)公開了它的源代碼,并引用 Raymond 的文章作為該決定的“基本靈感”。很明顯,Raymond 的宣言引起了一些硅谷人的注意,他們意識到了自由軟件的商業(yè)潛力。 但還有一個問題:自由軟件運動背負著重要的道德問題,而道德對企業(yè)很不利。因此,1998 年在 Raymond 和嶄露頭角的媒體巨頭以及“大騙子” Tim O’Reilly 的領(lǐng)導(dǎo)下,一群高調(diào)的自由軟件傳播者聚集在一起,探討如何讓自由軟件對行業(yè)更具吸引力。正如 Raymond 后來描述的那樣,會上的開發(fā)者們針對“重新塑造產(chǎn)品品牌,將其樹立成企業(yè)界渴望購買的產(chǎn)品”為目標(biāo),開展了一場“營銷活動”。 Raymond 在一篇名為《開源:開源革命的聲音》的文章(https://www./openbook/opensources/book/raymond2.html)中寫道:“回想起來,很明顯多年以來‘自由軟件’一詞對我們的運動造成了巨大的破壞”,“這與對知識產(chǎn)權(quán)的敵意和共產(chǎn)主義有著很強的聯(lián)系。”他還指出,“Netscape 之后,[開源]的成功來自我們用積極的形象——更高的可靠性和更低的成本,以及更好的功能——取代了自由軟件基金會的負面刻板印象——根據(jù)實踐做事,取悅管理者和投資者?!?/p> 該小組的這個刻板印象被封裝到了“開源”一詞中,他們集中精力通過讓軟件源代碼“開放”,來回避自由軟件的道德維度。 回顧過去,這場營銷活動取得了巨大的成功?,F(xiàn)在開源軟件成為了我們大多數(shù)人每天使用的技術(shù)平臺和服務(wù)的核心,包括微軟,其前首席執(zhí)行官史蒂夫·鮑爾默曾將 Linux 和其他開源項目稱為“毒瘤”。而如今,微軟也將自己定位成開源開發(fā)的擁護者,Google、Facebook、亞馬遜、IBM 甚至美國政府皆是如此。另外說一句,通常自由軟件是指自由開源軟件(Free and Open Source Software,簡稱 FOSS)。 開源經(jīng)濟學(xué) 盡管很快很多硅谷的大科技公司都接受了開源軟件,但經(jīng)濟學(xué)家們?nèi)栽谂忉屵@些項目適應(yīng)了市場的慣例并取得了成功的原因。當(dāng)時,自由軟件人群兜售的標(biāo)準(zhǔn)解釋是:自由軟件的開發(fā)可以在自由和利他主義的道德要求的基礎(chǔ)上持續(xù)發(fā)展。這似乎不足以解釋 Linux 等項目的迅速出現(xiàn)和廣泛采用。到目前為止,歷史上沒有任何一個其他行業(yè)能夠僅靠貢獻者的“善良”就催生出這種技術(shù)要求十分嚴(yán)格的項目。 這種顯著的異?,F(xiàn)象引發(fā)了 21 世紀(jì)初的一系列研究,人們設(shè)法解釋開發(fā)人員如何通過他們對自由開源軟件生態(tài)系統(tǒng)所做的貢獻而“獲利”。簡而言之,這些經(jīng)濟學(xué)家試圖解釋開源開發(fā),讓這些程序員的行為符合經(jīng)濟學(xué)家的理性生產(chǎn)者/消費者的概念:即所謂的“理性經(jīng)濟人”。 2000 年,哈佛大學(xué)經(jīng)濟學(xué)家 Josh Lerner 和麻省理工學(xué)院的 Jean Tirole 發(fā)表了開源開發(fā)的經(jīng)濟學(xué)解釋。Lerner 和 Tirole 的這篇論文標(biāo)題為《開源的簡單經(jīng)濟學(xué)》(https://www./papers/w7600),找出了開源開發(fā)人員所獲得的多項短期和長期的利益,開源開發(fā)中利他主義的作用被大大降低成了意外的副產(chǎn)品。簡而言之,Lerner 和 Tirole 聲稱開源開發(fā)的主要推動因素是開發(fā)人員獲得的經(jīng)濟利益,而不是給予世界自由軟件的一些根深蒂固的愿景。 Tirole 和 Lerner 認為,就短期利益而言,開源程序員可以通過在開發(fā)該軟件的公司工作而直接獲得工作的報酬,他們也可以通過修復(fù) bug 或添加功能讓軟件進一步體現(xiàn)自己的價值。至于長期利益,開源程序員可以通過開源開發(fā)來向未來的雇主或風(fēng)險資本家展現(xiàn)他們的才能,從而推動他們的職業(yè)生涯發(fā)展,同時還提供了一種信號機制,即開發(fā)人員可以從開源的同行那里獲得技術(shù)支持的認可。 在該論文發(fā)表后,其二者對開源開發(fā)經(jīng)濟激勵的解釋成為了新的“福音”。至今,開源經(jīng)濟學(xué)還在大量引用該論文。 大約在 2000年,Lerner 和 Tirole 所認定的開源社區(qū)是一個人人都是贏家的系統(tǒng),但在這之前的 20 年中,自由開源軟件生態(tài)系統(tǒng)在采用的規(guī)模和生產(chǎn)方式方面都發(fā)生了巨大的變化。這些變化很大程度上應(yīng)該歸功于 Git 的創(chuàng)立,Git 是 2005 年問世的一個開源工具,為軟件開發(fā)提供了分布式協(xié)作。圍繞 Git 構(gòu)建的服務(wù),尤其是 GitHub,大大加快了開源開發(fā)的步伐,并大大降低了新的開發(fā)人員進入市場的障礙。這是 Lerner 和 Tirole 所預(yù)見的一個問題,他們在 GitHub 出現(xiàn)大約 10 年之前就曾質(zhì)疑“開源項目的管理是否能夠容納越來越多的貢獻者”。 通常開源貢獻者數(shù)量的迅速增加被認為是對其開發(fā)范式的驗證。然而,在過去十年中,越來越多自由開源軟件的開發(fā)人員開始談?wù)摼S護開源庫時的不堪重負。許多開發(fā)人員指出,用戶權(quán)利是這種不堪重負的主要來源。正如開發(fā)人員 William Gross 所描述的那樣,依賴開源軟件的公司不斷增加,這意味著開源開發(fā)人員需要處理越來越多大量的功能請求和代碼的問題,而且許多公司都認為他們的改進和問題應(yīng)該得到優(yōu)先考慮。換句話說,似乎開源社區(qū)中的許多熱門項目都必將成為成功的受害者。 Lerner 和 Tirole 認為,許多自由開源軟件的開發(fā)人員開始懷疑僅靠個人志愿者的善意而展開的軟件開發(fā)模式是否可以大規(guī)模地持續(xù)發(fā)展。只不過我們很難確定這個問題。有些開發(fā)人員將其視為一種文化問題,他們認為可以通過一些措施來加以解決:向新手傳授成為優(yōu)秀用戶的守則,并且要讓維護人員知道拒絕貢獻也無可厚非;還有人則認為,從根本上說,這是一個可以通過更多資金解決的經(jīng)濟問題;還有人則否認存在任何系統(tǒng)性的問題。 開源的悲劇 2015 年,Nadia Eghbal 辭掉了她作為風(fēng)險投資家的工作,并著手開始研究為什么許多開源項目很難通過他們的成果賺錢。Eghbal 告訴我們,在她反復(fù)聽到自由開源項目的廣泛使用后,開始對開源軟件的經(jīng)濟學(xué)產(chǎn)生了興趣,但卻無法弄清楚如何為其開發(fā)提供資金。對于 Eghbal 來說,這里面似乎存在著矛盾。許多流行的開源項目都具有創(chuàng)業(yè)成功的所有特點:快速采用、龐大的用戶群以及低成本的開發(fā)。然而,大多數(shù)這些項目都會成為風(fēng)險資本的詛咒,投資者只關(guān)心軟件是否會帶來巨大的回報。那么,問題就在于我們需要確立一些可以持續(xù)為開源提供資金的機制。 為了找到解決方案,Eghbal 去采訪了問題的源頭:開源項目的維護者。在對數(shù)百名開源開發(fā)人員進行了長達一年的采訪之后,Eghbal 發(fā)布了文章《道路與橋梁》(https://www./about/library/reports-and-studies/roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure),這可以說是有史以來開源軟件開發(fā)經(jīng)濟學(xué)方面最廣泛的研究。 Eghbal 的報告將開源軟件視為一種非排他性的公共產(chǎn)品。這是社會科學(xué)中的一個技術(shù)術(shù)語,意思是任何人都可以使用的資源,例如無論他們是否支付過道路和橋梁費。非排他性的公共產(chǎn)品是健康社區(qū)的基石,但它們也受到經(jīng)濟學(xué)家所謂的“搭便車問題”和“公地悲劇”的影響。 搭便車問題比喻的是一種情況:因為沒有辦法阻止那些沒有付款卻使用商品的人,從而導(dǎo)致商品過度消費或生產(chǎn)不足。根據(jù)定義,開源是一種非排他性的商品。例如,像 Google 這樣的公司可能會花費大量資源來開發(fā)開源工具(例如機器學(xué)習(xí)平臺 TensorFlow 等),但由于這些工具是開源的,所以 Google 也無法阻止其他公司的使用。如果出現(xiàn)太多使用 TensorFlow 卻不對其維護做出同等貢獻的公司,那么就可能會導(dǎo)致該軟件生產(chǎn)力不足,因為維護人員無力承擔(dān)過量的用戶提交的功能請求或 bug 報告。 搭便車的問題與公地悲劇息息相關(guān),公地悲劇描述的情況是:社區(qū)所有的成員都受益于對公共物品的無管制訪問,但是沒有人有動力承擔(dān)維持該商品的成本。如果社區(qū)的每個成員都根據(jù)自己的利益使用公共物品,那么最終該物品會被耗盡,社區(qū)中的人都將無法再使用。對于自由開源軟件來說,公共物品就是數(shù)十億行的開源代碼。雖然代碼本身不能像食物或土地等其他經(jīng)濟商品一樣被耗盡,但其耗盡的資源是負責(zé)開發(fā)和維護代碼的程序員的注意力和精力。 公地的悲劇是經(jīng)濟學(xué)中一個經(jīng)過充分研究的問題,但 Eghbal 意識到這個問題常見的解決方案(即將公地變成私有或受監(jiān)管的商品)在開源軟件開發(fā)方面并不適用。將軟件變成私有產(chǎn)品會破壞開源開發(fā)的整個過程:高效開發(fā)的高質(zhì)量軟件,任何人都可以根據(jù)需要使用。 另一方面,規(guī)范化開源軟件的生產(chǎn)(例如,建立類似于國家科學(xué)基金會的組織,將公共資助的資產(chǎn)分配給開源軟件項目)會破壞開源軟件開發(fā)的主要優(yōu)勢。監(jiān)管所帶來的穩(wěn)定性是以效率為代價的,而在快節(jié)奏的軟件開發(fā)領(lǐng)域,這根本就行不通。此外,監(jiān)管也會破壞開源開發(fā)的精神,因為這可能導(dǎo)致設(shè)立門檻以決定哪些人可以貢獻代碼,而哪些人可以消費資源。 有些開源維護者試圖按照過去使用他們的軟件的方法來規(guī)范化開源軟件,例如禁止與移民和海關(guān)執(zhí)法部門合作的公司使用該軟件。但這遭到了開源社區(qū)的強烈反對,最終被撤銷,這證明了人們深信開源軟件應(yīng)該向所有人免費提供。另一方面,有關(guān)開源社區(qū)的訪問規(guī)則已經(jīng)浮出水面,這可能會成為開發(fā)人員不堪重負問題的解決方案。正如開發(fā)人員 William Gross 在文章中指出的那樣,在這種“開源,封閉社區(qū)”的模式中,如果有人想訪問開發(fā)人員工作的社區(qū),則實質(zhì)上需要支付費用。 “我們向用戶傳達的信息應(yīng)該是:‘你可以隨心所欲地利用代碼做任何事情,但是如果你想影響項目的未來,那么請為我們的工作支付報酬’”,“這會導(dǎo)致出現(xiàn)一個更小規(guī)模的社區(qū)以及更多的分支嗎?肯定會。但是,如果你堅持不懈地建立自己的愿景,并為其他人創(chuàng)造價值,那么如果他們想有所貢獻就會付錢?!?/p> 對于那些不愿意守護開發(fā)社區(qū)的維護者而言,另一個最合乎邏輯的解決方案似乎是要求開源軟件用戶通過聘請該項目的開發(fā)人員來支持開發(fā)。這種方法通過計算來確立開源的資金,即找出誰是開源項目的受益者,并確保他們盡可能多地回饋生態(tài)系統(tǒng)。雖然我們沒有中央數(shù)據(jù)庫能夠跟蹤世界上所有的開源貢獻者,但有一樣?xùn)|西已經(jīng)非常接近了——那就是 GitHub。 GitHub 于 2008 年問世,雖然它不是唯一一個程序員用來存儲、審查和討論開源軟件的地方,但它相當(dāng)于自由開源軟件社區(qū)的市政廳。如今,這個在線軟件倉庫擁有來自世界各地大約 2500 萬名貢獻者所創(chuàng)建的超過 1 億個代碼倉庫。促使這 2500 萬人為開源開發(fā)做出貢獻的動機有多個方面,但根據(jù)開源 Web 開發(fā)框架 Ruby on Rails 的創(chuàng)建者 David Hansson 的說法,在過去的二十年里,開源貢獻者的情況發(fā)生了根本性的轉(zhuǎn)變。 “絕大多數(shù)開源軟件(尤其是與網(wǎng)絡(luò)相關(guān)的軟件)的資助都是由公司出面贊助開發(fā)人員處理那些對他們很重要的問題”,“這是一種與 Richard Stallman 的自由軟件不同的方式,Richard Stallman 的自由軟件只談?wù)摰搅巳藗冏孕芯帉戃浖?,而這個非常出色的模型可以為我們提供一系列開源軟件。” 圖片來源:Cathryn Virginia/Motherboard 這并不是說在閑暇時間推送代碼的開源程序員在自由開源軟件社區(qū)不是特別受歡迎。Hansson 特別贊揚了這些“熱情的愛好者”,他們是自由開源軟件生態(tài)系統(tǒng)的基石。仔細閱讀 2017 年 GitHub 上的主要貢獻者名單就會發(fā)現(xiàn),Hansson 說得沒錯——Google、微軟、亞馬遜、IBM、Facebook、騰訊、百度、紅帽和英特爾的員工都是最活躍的開源貢獻者。所有這些公司都是營利性的,每年從基于開源代碼的產(chǎn)品中可以獲得數(shù)百億美元的收入。我聯(lián)系了其中幾家公司,請求他們回應(yīng)開發(fā)人員說他們沒有回饋開源社區(qū)的指控。那些回應(yīng)了我的請求的公司快速地捍衛(wèi)了他們對開源開發(fā)做出的實質(zhì)性貢獻。 IBM 開放技術(shù)副總裁 Todd Moore 指出,自 90 年代中期以來,該公司一直在為開源項目做貢獻,包括他們在 Linux 和 Apache 尋求立足之地時給予的資助。據(jù) Moore 所說,1200 多名 IBM 的員工在工作和閑暇時間為 1000 個開源項目做出了貢獻。Moore 表示“很多”IBM 員工在全職為Linux、Kubernetes、Java 和 Node.js 等開源項目工作,而且該公司每年都會向各個開源社區(qū)的頂級 IBM 開發(fā)人員提供獎勵。(Moore 拒絕提供有關(guān)獎勵性質(zhì)或他們對開發(fā)者社區(qū)影響的更多信息。) 他強調(diào),“在過去的 10 年里,我們通過資助每一個主要的開源基礎(chǔ)幫助建立了如今的開源革命”,“IBM 鼓勵員工為開源效力?!?/p> IBM 還舉行了一個年度認證計劃,“幫助 IBM 員工了解與開源有關(guān)的價值和風(fēng)險,并提醒他們內(nèi)部治理的流程。”該教育研討會還包括“成為某個項目或社區(qū)積極成員的最佳實踐指南”。據(jù) Moore 所述,有 72000 多名 IBM 員工已獲得了該計劃的認證。 Google 開源主管 Chris DiBona 也提供了類似的信息: “自公司成立以來,自由和開源軟件一直是 Google 技術(shù)和組織基礎(chǔ)的一部分?!保袄铩づ迤婧椭x爾蓋·布林為 Linux 和商用硬件做了很多貢獻,而且多年以來 Google 員工也在開源許可下發(fā)布了數(shù)百萬行的代碼?!?/p> 雖然 DiBona 拒絕提供在開源項目上全職工作的 Google 員工的確切數(shù)目,但他表示該公司在 GitHub 上擁有 2000 多個活躍的開源項目。特別是由 Google 創(chuàng)建并得到廣泛使用的開源項目,而且每天都有員工為其效力的例子,DiBona 重點強調(diào)了編程語言 Go 和容器軟件 Kubernetes。 “你幾乎找不到一位沒有為開源項目做出過貢獻的 Google 技術(shù)員工?!?/p> “Google 鼓勵員工開展與他們的工作、興趣或愛好相關(guān)的開源項目。”DiBona 還指出,據(jù) 2018 年的數(shù)據(jù)顯示,Google 員工占 GitHub 所有活動的 1% 以上,這就是該公司及其員工致力于開源開發(fā)的證據(jù)。 Google 和 IBM 等公司通過要求或鼓勵員工開發(fā)開源代碼,直接為開源社區(qū)做出了貢獻。許多公司還向 Linux 基金會、Apache 基金會或 Mozilla 基金會等非營利組織提供了捐款,現(xiàn)如今這些組織擁有數(shù)百萬美元的捐贈基金。 然而,個別開發(fā)人員提出的問題不在于這些科技巨頭是否為開源做出過貢獻;而是這些公司做得貢獻是否足夠,以及這些貢獻是否用到了正確的項目上? 開源 Web 開發(fā)框架 Django 的聯(lián)合創(chuàng)始人 Jacob Kaplan-Moss 認為,這些價值數(shù)十億美元的公司需要為開源社區(qū)做出更多貢獻。 Kaplan-Moss 特別指出了 GitHub(最近微軟以 75 億美元的價格收購了 GitHub),并建議如果 GitHub 真關(guān)心開源,就應(yīng)該把這筆交易的一半收益交給該軟件的維護者和貢獻者。 “開源軟件不堪重負的根本原因是資金,”Kaplan-Moss 在推文中說,“解決這個問題的唯一方法就是金錢。那些依靠開源軟件賺取數(shù)十億美元的科技公司幾乎沒有給予任何回報。他們現(xiàn)在就可以解決這個問題,而且?guī)缀醪粫绊懰麄兊睦妗?/strong>如果這些公司真的關(guān)心開源軟件,而不是為了彰顯他們的美德,那么他們就應(yīng)該把這些巨款變成對開源維護者和基金會的支持?!?/p> Hansson 雖然不反對為開源項目提供更多的資金,但當(dāng)涉及“開源與資金掛鉤的風(fēng)險”時,他采取了更為謹慎的立場: “如果你有一個擁有幾百個貢獻者的項目,而且你開始為一些工作設(shè)定特定的金錢獎勵,那么我覺得很快你就會進入非常危險的境地”,“對于那些只是為了社區(qū)、個人愛好、或創(chuàng)造力而為開源工作的人來說,他們并沒有從經(jīng)濟學(xué)的角度來審視自己的工作,一旦出現(xiàn)金錢獎勵,那么他們也要突然被迫從市場的角度考慮他們的時間投入了。我認為在很多情況下,這種做法都會造成很大的損害。” 有關(guān)這方面的損害,Hansson 以自己在 Ruby on Rails 做貢獻時的故事為例子進行了說明——當(dāng)他剛開始為 Rails 工作時,他被功能請求和 bug 報告等壓得喘不過氣來,而且大量的電子郵件都希望他能夠解決所有的問題,就好像他是軟件供應(yīng)商一樣。然而,由于完全不涉及市場價值,所以 Hansson 當(dāng)時的心態(tài)是“去你媽的”,他說經(jīng)證實這種心態(tài)是抵抗自由開源軟件社區(qū)猖獗地壓榨開發(fā)人員的“頭號防御機制”。如果他因為拿了錢而工作,那么他就有義務(wù)滿足客戶的要求。然而,也正因為他自愿為社區(qū)項目做出的貢獻,所以也沒有人會對他表示感激。 Hansson 表示,“我免費提供了軟件,所以如果你想幫忙把這個軟件做得更好,那肯定非常好啊,我們可以一起加油”,“但如果你想站在一旁,叉著腰對我大吼大叫說這個軟件很差勁,那么我會跟你說去你媽的,我又不是為你工作?!?/p> 開源社區(qū)中肯定不會有人覺得為自由開源軟件提供更多資金是一個徹頭徹尾的壞主意。即使是 Hansson 這樣常常批評將金錢與開源混為一談的人也提倡在某些情況下應(yīng)該注入更多資金??傮w來說,開源社區(qū)面臨的難題不在于擁有更多的資金是不是一個好主意,而是這些資金應(yīng)該如何分配。 自由軟件并非免費 Hansson 認為企業(yè)贊助是支持開源項目最有希望的方式。這其中有很多種形式。有些公司向為支持特定開源項目而創(chuàng)建的非營利基金會捐款。例如,IBM、英特爾、Google、微軟都是 Linux 基金會的“白金捐助者”,他們聘請了全職開發(fā)人員為 Linux 內(nèi)核工作。各個公司支持開源項目的另一種方式是聘請開發(fā)人員在公司全心全意為開源工作,或允許員工將部分工作時間用于編寫開源項目。 然而,將支持開源項目的重任交給各大科技公司并非沒有風(fēng)險。從本質(zhì)上講,開源開發(fā)是分散的。然而,如果由一家公司負責(zé)支持某個項目大部分的核心開發(fā)工作,那么這種集中化將成為極大的風(fēng)險,因為這家公司可以隨時決定停止為該項目提供資金。 此外,向開源項目投入人力的公司顯然會優(yōu)先考慮按照對公司本身最有利的方式開發(fā)該項目。雖然這本身并不一定是壞事(例如對 Google 有利的事情可能對許多其他使用該軟件的公司也有好處 ),但也可能會犧牲軟件使用方式的多樣性。 有關(guān)這方面的一個例子就是 Android 操作系統(tǒng)的開發(fā),該系統(tǒng)在全球智能手機中占 86% 的份額。Android 是開源的,但幾乎所有關(guān)于操作系統(tǒng)的開發(fā)工作都是在 Google 內(nèi)部完成的。與此同時,Google 還出資讓工程師開發(fā)一些專有的應(yīng)用程序,通常這些應(yīng)用(例如 Google 地圖和 Gmail)被視為 Android 操作系統(tǒng)最大的賣點。 因此,雖然任何人都可以利用開源代碼自由創(chuàng)建自己的 Android 操作系統(tǒng),但 Google 有一項政策,禁止在任何非官方的 Android 操作系統(tǒng)上使用其應(yīng)用程序。這項政策是合理的,因為這項政策有益于應(yīng)用開發(fā)人員——他們的應(yīng)用程序無需適應(yīng)幾十個略微不同的 Android 版本,但最顯著的后果是開源 Android 操作系統(tǒng)已經(jīng)與專有的 Google 產(chǎn)品融為了一體。別的公司也可以在手機上免費使用自定義版本的 Android 產(chǎn)品,但這會讓他們承擔(dān)很大的風(fēng)險。2014 年亞馬遜的 Fire 手機非常不明智地嘗試使用自定義的 Android 產(chǎn)品,結(jié)果以 1.7 億美元的損失慘淡收場。雖然缺乏 Google 的應(yīng)用并不是這款手機失敗的唯一原因,但也是導(dǎo)致其失勢的主要原因。 然而,對于很多開源項目來說,即使想要接受企業(yè)的資助,也缺乏這方面的組織結(jié)構(gòu),軟件自由保護協(xié)會(Software Freedom Conservancy,簡稱SFC)的通信主管 Deb Nicholson 表示,他們是一個為開源項目提供基礎(chǔ)設(shè)施支持的非盈利組織。事實上,Nicholson 表示,自該組織成立十年以來,他們的主要工作就是作為一種聯(lián)盟的組織,代表其成員的 50 個開源項目接受資金。這些項目包括只有寥寥幾個貢獻者的小型運營,也包括 PHP 和 Git 等從根本上改變了我們使用互聯(lián)網(wǎng)方式的大型項目。 在眾多為開源項目提供機構(gòu)支持的非盈利機構(gòu)中,軟件自由保護協(xié)會只是其中之一。其他組織(例如公共利益軟件和自由軟件基金會)提供了各種其他服務(wù),例如法律建議,或為開源項目成功運行提供所需的物理基礎(chǔ)設(shè)施(服務(wù)器、辦公空間等)。這些項目中的程序員都知道如何編寫好的代碼,但他們往往沒有時間或資源來處理建立法人以及為項目建立管制組織的瑣事。這些非營利組織的作用就在于幫助這些項目解決這方面的難題,保證自由開源軟件項目能夠獲得所需的支持,而程序員則可以專注于他們最擅長的事情:編寫軟件。 從歷史上看,支持自由開源軟件的重任已經(jīng)落到了這些非營利組織的肩上,然而一家名為 Tidelift 的新公司致力于通過市場的解決方案為開源社區(qū)解決資金的問題。這家由四名紅帽公司前員工創(chuàng)立的公司通過銷售 Linux 支持服務(wù),最近成了科技史上排名第三的大筆收購的主角——IBM 以 340 億美元收購了該公司,而 Tidelift 則希望通過開源軟件的安全支持增加流向開源項目的資金。 Tidelift 的首席執(zhí)行官 Donald Fischer 指出,采用開源項目的最大障礙(特別是在銀行等受到嚴(yán)格監(jiān)管的行業(yè)中)在于缺乏軟件能夠按照預(yù)期運行的保證。與專有軟件不同,開源項目通常沒有客戶支持熱線。如果有一家公司使用了開源代碼,然后維護人員卻停止了工作,或者沒能及時解決 bug,那么這家公司也無可奈何。 正如 Hansson 指出的那樣,從維護者的角度來看,這種選擇性地與用戶互動的能力在沒有獲利的開源項目中只是癡心妄想。Fischer 同意這一觀點,他認為如果程序員不想因為獲取了報酬,就將他們的開發(fā)時間花在為用戶提供客戶支持上,那也無可厚非;但是對于那些想為自己的勞動而獲得報酬的人來說,我們也應(yīng)該為他們提供機會——加入 Tidelift。 Tidelift 有點像 Red Hat 為 Linux 所做的努力,但對于所有其他自由開源軟件項目來說:如果企業(yè)想獲得與他們使用的開源項目相關(guān)的支持服務(wù),那么他們就需要支付費用。正如 Fischer 向我描述的那樣,類似于 AirBnb 帶來了酒店業(yè),Uber 帶來了運輸業(yè),Tidelift 也想將相同的邏輯用在自由開源軟件社區(qū)。 Tidelift 通過自己開發(fā)的程序跟蹤了數(shù)百個開源庫中的變動,并以此跟蹤了代碼的變更會對那些使用了這些服務(wù)的公司造成怎樣的影響。如果其中一個庫中的代碼出現(xiàn)了安全性、許可或維護的問題,那么 Tidelift 登記在冊的開發(fā)人員就會處理與該變更相關(guān)的任何問題。在這種模式下,各個公司需要向 Tidelift 支付固定的費用,Tidelift 抽取分成后會將剩下的分配給開發(fā)人員,而開發(fā)人員根據(jù)使用他們維護的代碼的公司數(shù)量來獲取相應(yīng)的報酬。 Tidelift 的模型類似于開源中最古老的一個集資機制:Bug 賞金。這基本上相當(dāng)于一種協(xié)議,即向發(fā)現(xiàn)和/或修復(fù)某些開源代碼中已知 bug 的開發(fā)人員支付報酬。市場上涌現(xiàn)的很多服務(wù)都是為了滿足這一需求,其中包括在區(qū)塊鏈中支付賞金的 Gitcoin,歐盟于 12 月推出了面向 14 個開源項目的 Bug 賞金計劃(https://www./article/eu-to-fund-bug-bounty-programs-for-14-open-source-projects-starting-january-2019/)。2017 年,一家名為 Code Sponsor 的公司致力于通過將開源項目與想在開源項目的幫助文件中添加廣告的公司聯(lián)系起來,從而實現(xiàn)開源項目的獲利。Code Source 后來改變了其業(yè)務(wù)模式,并重組為 CodeFund,它利用合乎道德的數(shù)字廣告為開源項目提供資金。 流行的開源項目中,一些比較活躍的開發(fā)人員已經(jīng)通過 Patreon 等眾籌服務(wù)尋求支持,并自行籌集了資金。對于那些為知名開源項目工作的知名開發(fā)人員來說,這可能相當(dāng)“有利可圖”。例如 Vue.js(一個用于創(chuàng)建用戶界面的開源 JavaScript 框架)的創(chuàng)立者 Evan You 每月可以通過 Patreon 獲得 1 萬 7 千多美元。 當(dāng)然,Evan You 是開發(fā)人員中的一個例外。其他從事開源項目的程序員可以通過眾多資源獲得更多的報酬。Henry Zhu 最近辭職了,他開始全職為開源 JavaScript 編譯器 Babel.js 工作,完全依賴眾籌來支持他的收入,目前每個月他可以從 Patreon 上獲得大約 1500 美元的收入。 今年 1 月,GitHub 的開源項目經(jīng)理 Devon Zuegel 在網(wǎng)站上寫了一篇名為《我們來談一談開源的可持續(xù)性發(fā)展》(https://github.blog/2019-01-17-lets-talk-about-open-source-sustainability/)的文章。該文章強調(diào)了開源社區(qū)中的一些問題,其中包括資源與治理不足、缺乏溝通、工作超負荷。Zuegel 懇請社區(qū)向服務(wù)于改善開源維護者和貢獻者等領(lǐng)域的公司提供信息。 GitHub 產(chǎn)品管理高級主管 Kathy Simpson 告訴我,“我們所要做的事就是,傾聽那些正在構(gòu)建軟件的開發(fā)人員的意見,給予他們大量支持,幫助他們建立對其將來有助益的工具。我們有義務(wù)保護這些項目和社區(qū)之間的結(jié)締組織,并幫助他們成長。” “維護可能是一項非常具有挑戰(zhàn)性且吃力不討好的工作,”Simpson 補充道,“我們非常清楚這一點,而且我們希望盡我們所能全面推進?!?/p> 盡管表面上 GitHub 非常認真地設(shè)法幫助開源維護者,但對于 GitHub 的建議請求卻得到了不同的回應(yīng)。有些開發(fā)人員歡迎 GitHub 嘗試改善運行開源項目的經(jīng)驗,而有些人則對該公司所暗示的開源存在可持續(xù)性發(fā)展的問題表示不滿。 “對于那些已經(jīng)在開源努力了 20 年的人來說,可持續(xù)發(fā)展性的觀點會非常令人感動?!盚ansson 告訴我,“但如果你提出一個觀點說開源存在可持續(xù)性發(fā)展的危機,那么你必須指出貢獻或項目數(shù)減少了,而不僅僅是幾個無關(guān)的事例。我認為有些項目確實陷入了一種奇怪的境況,這些項目中沒有從事自由職業(yè)的核心維護者,而且也沒有一家公司最終認為有必要直接資助這些項目,但我不覺得這可以代表普遍現(xiàn)象?!?/p> 開源代碼中是否普遍存在可持續(xù)性發(fā)展的危機,這是一個有爭議的問題,但這并不能否定我們需要找到一種解決方案,來解決難以找到資金和志愿者來支持開發(fā)開源項目的必要性。無論這些是個別現(xiàn)象還是不斷上升的趨勢,無論是否有存在這樣的缺陷,開源開發(fā)人員繼續(xù)致力于開源項目這一事實證明了他們更加愿意致力于項目和開源開發(fā)。然而,大多數(shù)開發(fā)人員都認為,如果有可持續(xù)性的方式為開源社區(qū)提供資金,那么肯定可以開發(fā)出更好的軟件。 正如 Zhu 在去年參加 Eghbal 主持的一個播客系列“Hope in Source”(https:///)中所說的那樣,開源社區(qū)很像一個宗教團體,特別是在金錢方面。人們可以自由地組織這樣的宗教機構(gòu),以確保在那里工作的人可以繼續(xù)進行組織的工作,而無需在外部尋找工作。這些有組織的宗教團體需要資金才能保證基層的運作,但他們最重要的資產(chǎn)不是金錢,而是人們聚集在一起讓這個社區(qū)成為現(xiàn)實。即使擁有世界上所有的錢,也無人可以創(chuàng)立這樣的宗教,或維持一個廣泛使用的開源項目。 “我們希望鼓勵人們參與進來,”,“在開源社區(qū)中,時間重于金錢。” 盡管如此,科技公司和其他用戶依靠資金不足和過度勞累的開發(fā)人員所維護的開源軟件來為現(xiàn)代社會提供動力,這種現(xiàn)象仍然是不公平的。雖然從一定程度上來看這是一個值得研究的問題,但實際情況還沒到這一步。正如 Eric Raymond 于二十多年前指出的那樣,開源的最佳特性之一就是其開放性以及社區(qū)驅(qū)動的開發(fā)模型能夠以更低的安全風(fēng)險更高效地創(chuàng)建更好的軟件。 對于消費者產(chǎn)品以及關(guān)鍵性的互聯(lián)網(wǎng)安全基礎(chǔ)設(shè)施而言,世界變得越來越依賴于開源軟件,而且公司和用戶不能因為“心臟出血”這樣的災(zāi)難性漏洞就相信維持這種開放式基礎(chǔ)設(shè)施需要付出代價。 原文:https://motherboard./en_us/article/43zak3/the-internet-was-built-on-the-free-labor-of-open-source-developers-is-that-sustainable |
|