近年來,全球開源項目數量呈指數級增長,據開源軟體安全平臺 SourceClear 的調查報告預測:
2026 年全球開源項目數量將超過 3 億;然而,開源 vs 生存,如何取捨?
多年以來,這個問題一直在深深地困擾著業界尤其是個人開源開發者。
早在 2016 年,JS 紅寶書原作者 Nicholas C. Zakas 不幸患上萊姆病,而後長期失業,連業餘兼職工作也無法進行下去。
然而多年來,他在沒工作、沒有收入,身患重病的情況下維護著他的開源項目 eslint,一款插件化並且可配置的 JavaScript 語法規則和代碼風格的檢查工具。
但在現實的壓力之下,他不得以在 GitHub 上發起求助,並希望在 2020 年的某個時間能夠恢復健康,並重新開始開源工作。
除了 Nicholas C. Zakas ,仍有不少開源作者身處壓力之下。
Bootstrap 開源由 Twitter 的設計師 Mark Otto 和 Jacob Thornton 合作開發的一款開源前端框架。
Green Day 和 Barack Obama 的 The White House 的網站設計都使用到了 Bootstrap 。
Bootstrap 開源流行的原因:
1.簡約的風格
2.任何人都可以免費使用
Jacob Thornton 的壓力:
Mark Otto 和 Jacob Thornton對Bootstrap 持續維護了 9 年,讓他直呼想逃離:
每周都有無數的人向他和 Mark Otto 報告錯誤、要求新特性和給予表揚;
晚上還要花費4~5小時對 Bootstrap 進行管理,編寫新代碼;
而像 Bootstrap、eslint 這樣,即使項目維護者精疲力竭但還在堅持的開源項目已經是個幸事,開原始碼被遺棄才是最壞的結果。
兩年前, event-stream 庫的作者 @dominictarr 因缺乏時間和興趣決定放棄維護這個庫,並且將該庫轉讓給了一個完全不認識卻又想要接手的陌生人 @right9ctrl ,而 @right9ctrl 利用比特幣公司曾使用過這個庫的開原始碼,對其進行了重寫,以試圖竊取加密貨幣。
事情發生後, event-stream 庫的作者 @dominictarr 遭到了大量開發者的譴責,控訴他為何要將軟體包交給一個陌生人。對此, @dominictarr 回應:起初開發這個庫只是因為好玩,並不是為了利他。但開發者將維護的工作全壓在我的身上,而我從維護中得不到任何東西,這個庫對我來說就不再是興趣了。並且,一開始我並沒有從 @right9ctrl 身上感受到惡意,以為這是一位真心想幫助我的人。
最近,新媒體 Substack 的作家 Nadia Eghbal 出版了一本書《 Working in Public 》,為了寫這本書,她與數百名開源程式設計師進行了交談。
從溝通中 Nadia Eghbal 意識到,開源項目代碼的編寫和修改需要高水平的合作。
而事實上,雖然參與開源項目的開發者會有很多,但他們其實只做出了像修復 Bug 這種很小的貢獻,無法實現維護項目所需要的高水平合作。
因此,開源項目的維護最終還是落在了少數人的肩膀上,他們就像公眾人物一樣背負著眾人的期望與監督,而區別是,他們從中得不到任何物質回報。
研究表明,約有 9.5% 的開原始碼已被遺棄,約 25% 的開源項目可能也快被放棄。這個趨勢很危險,且不說沒人維護的代碼易被嚴重破壞,光是惡意利用這一點就後患無窮。
開源最關鍵的是人,不是代碼!
一個公司是否有人可以掌握開源軟體本身的架構,是否有人可以對社區的方向有所影響,是否有人可以適配開源軟體符合自己的需求,是否有人可以在必要的時候繼續維護軟體,這些才是最需要關心的問題。
假設某一天一個開源軟體的主要開發方突然宣布不再開放原始碼了了,這個時候要看其他開發者可以集合起來,有能力接著前一天的分支繼續進行開發和維護,那麼這個軟體就會依然可以被大家開發使用,甚至逐漸集合有能力的社區夥伴重構或者重寫一份都不會是問題。
活躍的開發者人群是大家使用開源軟體的真正保障,也是社會得以快速創新發展的基礎。
國內開源現狀:
(1)國內還沒有形成對待開源的思維,仍然停留在各大論壇上貢獻的免費軟體一樣,索取為主,沒有交流,用的好不好他也不說,拿過去改了什麼他也不說,有問題他也不說。
(2)對於有能力貢獻代碼的人,貢獻出來之後,大部分學習的手段就是拿來就可以了,沒有思考,也沒有反饋,大多也就是你必須按照我這麼做,不這麼做就不行。
(3)基於一個想要後續獲取利益的目的來發布軟體,自立山頭的老闆比較多,而手下的兵少,人手足夠後,缺乏開源管理經驗。
(4)國內的程式設計師沒有時間做開源,也沒意識到開源的重要性。大多都處於搬運工的狀態,每天加班加點完成公司業務代碼。
在國內做開源的困難:
源軟體的迭代速度則取決於這個世界上有多少對此軟體感興趣的人。
一個軟體開源了,很容易就被大公司或者其他人給閉源處理了,迭代比你快,優化比你好。
少部分大牛,開源了一些好代碼。難以形成比較大的影響力。國內的開源項目,做得好的基本上是極客,憑個人能力開發出優秀的完整項目,除了阿里,貌似少有公司團隊參與的開源項目。
大牛如何看待開源?
幾個月前,阿里巴巴技術副總裁賈揚清在知乎上針對「如何看待國內開源現狀」時,回答:
一方面,開源是熱情驅動的,但是另一方面,我們絕對不能餓死雷鋒。所以一定要有體系化的能力沉澱,有很好的流程,把大家做開源的阻力做到最小。
而享受開原始碼成果的我們可能能做的就是如亞馬遜首席科學家李沐所提到的「契約精神」。
我覺得最大的一點是得有契約精神:我邀請你來用我新鮮出來的代碼,那麼我會負責回答你的問題,並幫助合併你的代碼提交請求。這個也是好幾個回答提到的」開源維護「。
最後,開源開發者未來將如何自處,開源的枯竭局面又該如何挽回?這是每一個開源者需要思考的問題