開源軟體在軟體業中發揮著重要作用。早期,開原始碼行和專案數量曾經呈現出了一個多項式甚至指數式增長的趨勢。然而,在資源有限的情況下,這種增長不可能無限持續。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 放到他們的規範格式中,這並不值得且無聊。”
  • 第三種情況則是因為專案的記錄做的太差。作為一個貢獻者,他搞不清楚自己做的事情是否合理。向專案維護者反應這一情況,結果卻收到了讓他自己想辦法解決的回覆,從而導致了他放棄繼續為該專案做貢獻。

所以,你還在繼續為開源專案做貢獻嗎,如果不是的話,那你放棄的原因是什麼呢?

自 開源中國