研究表明開源領域已不再增長
開源軟件在軟件業中發揮著重要作用。早期,開源代碼行和項目數量曾經呈現出了一個多項式甚至指數式增長的趨勢。然而,在資源有限的情況下,這種增長不可能無限持續。Blekinge 理工學院的Michael Dorner 等人近期發布的一項報告指出,其研究結果表明:開源領域已不再增長。
該團隊研究了過去25 年中出現的超224,000 個開源項目,測量了每一個項目代碼行數、commit 量、貢獻者和生命週期狀態隨時間的變化。最後發現,自2016 年以來,活躍的開源項目數量一直在萎縮,而貢獻者和提交者的數量也自2013 年的峰值以來有所減少。
“開源–雖然最初以指數級的速度增長,但現在已經不再增長了。我們認為它已經達到了飽和狀態。”
數據顯示,開源代碼行的體量是巨大的:現存已有超過170 億行的開源代碼。截至2018 年底,開源項目中共包含有17,586,490,655 行代碼,包括14,588,351,457 行源代碼和2,998,139,198 行註釋。
然而報告指出,自2011 年以來,代碼行數的增長就開始持續放緩;2015 年之後,代碼行數則完全停止增長。同時,commit 的數量也在隨時間的增長而下降。2015 年之後,commit 量進入自由落體狀態,跌回了2007 年時的水平。
另一方面,研究發現,絕大多數開源項目都處於一個被廢棄的狀態。“截至測量的最後一個月(2018 年12 月),我們總共發現了224,342 個開源項目。 其中196,009 個處於非活動狀態,13,085 個處於廢棄狀態,還有58 個新增項目。在25 年的時間範圍內,有15,046 個被刪除”。下圖描述了一段時間內的開源項目生命週期狀態:
可以說的是,相較於正在進行中的項目,被放棄的項目數量還在繼續增長。
此外,開源貢獻者的數量也在逐步減少。與commit 量一樣,貢獻者的數量在2013 年達到頂峰後開始出現下降。2013 年3 月,貢獻者數量達到高峰值,共有107,915 名。但截至2018 年,開源貢獻者的數量已經下降至了2008 年時的水平。
總的來說,可以看到的是,大約在2000 年到2010 年這一時間段,開源領域在很多方面都呈現出了指數級增長的趨勢。但在之後的幾年間,其除了停止了指數級增長外,還出現了大幅下跌。針對這一行業變化,該論文則提供以下幾個可能的原因:
- 在志願參與貢獻的開發人員減少的同時,有償開發工作崗位沒有相應增加;
- 由於公司資源管理,從志願捐款改為有償捐款,減少了為每個參與者捐款的有效時間;
- 偶發性參與增加,更多的人傾向於減少志願服務;
- 從集體志願服務到反思性志願服務的世代轉換(2005 年貢獻者的平均年齡為31 歲,2017 年為30 歲),這可能是由於開源活動在職業發展中的作用日益增加所致;
- 代碼複雜性的對開發人員的要求越來越高,對新手並不友好;
- 貢獻內容質量下降,導致接受率降低,審核者和提交者的負擔越來越大。
報告全文:https://arxiv.org/pdf/2008.07753.pdf
針對上述解釋,一位開源項目貢獻者Mike James也表達了自己的看法稱,“作為一名失敗的開源貢獻者,我對其中一些原因表示認同”。同時,他還從自身參與過的一些開源項目出發,給出了自己停止為開源做貢獻的三個原因。
- 第一個案例是一個Apache 項目,James 表示,“治理問題似乎比我提出的補丁更複雜,更讓人不知所措”。
- 第二種情況是,因為項目強加了一套他在編碼中從來沒有使用過的編碼風格,而他並不認同這一舉措。“花時間和精力把我的mods 放到他們的規範格式中,這並不值得且無聊。”
- 第三種情況則是因為項目的記錄做的太差。作為一個貢獻者,他搞不清楚自己做的事情是否合理。向項目維護者反應這一情況,結果卻收到了讓他自己想辦法解決的回复,從而導致了他放棄繼續為該項目做貢獻。
所以,你還在繼續為開源項目做貢獻嗎,如果不是的話,那你放棄的原因是什麼呢?