最近推上又看到了一些對於開源的錯誤認知,讓我哭笑不得。2024 年了,有那麼多哪怕是在 IT 行業的人依然搞不清開源是個什麼。
當然,對於現狀如何解釋,是區分一個人是否有帶來進步的意願的關鍵。
比如在開源領域中,log4j 等項目的漏洞產生的巨大影響表現出了現狀是「人類比想象的要貪婪和愚蠢」。使用這些開源項目的大大小小的公司,通過開源項目獲得了極大的利潤,但卻不願意掏出哪怕一個硬幣來捐助這些項目(log4j 漏洞事件前一共只收到三筆捐助),導致其缺乏維護,最終給自己帶來了極大的損失。
那麼:
1,對於此現狀,將其解釋為「人類就是這樣」的想法沒什麼幫助。上面的大大小小的公司差不多也是這麼想的 -- 這些公司自然也知道自己使用的開源項目無人捐助,但想著「沒有我捐助總有其他人捐助吧?」、「別人也是不捐助就直接使用,我這麼做有什麼問題?」。
排除掉道德審判,僅僅從「投入 -> 產出」來考察,一個有點規模的公司,對於一個自己嚴重依賴的項目,每年幾百~上千刀的捐助投入,就有可能帶來自己使用的組件穩定性的極大提高,以及免去它們不再更新導致需要更換組件實現等工數上的消耗。
(題外話:當然,我覺得能夠真正從自己內心完全排除道德審判的,全都是人渣。人類社會的穩定在於法律,良性的發展則在於道德。「如果一直都是土匪贏,那我們應該還活在石器時代」 by @ksintmelody 。)
2,對於此現狀,將其解釋為「所以我們更要注重對大眾認知的宣傳,對法律的完善,對貪婪的人加以約束」,則明顯表現出對於開源更加關注的態度和願意改善現狀的意願。
事實上開源領域一直有人在推動如何讓這個環境良性運轉起來,各種許可證的誕生就是其中最重要的一環。
許可證規範了各種行為,不僅規定了使用者不能對於開源項目為所欲為,同時也讓開源軟體盈利有了一個堅實的基礎 -- 當然,這一切都建立在有法律支持以及嚴格切實的法律執行的情況下,要是去朝鮮之類的國家給開源維權自然得不到什麼好結果。
(題外話 2:知識和藝術共享同樣有許可證,如著名的 CC-BY 系列,很多人可能以為這個只適用於圖片,不管文字,但實際上兩者都管。所以不是任何公開平台上的文字類知識和圖片都能被拿來隨便用。)
然而在新的時代,開源的現狀非常不樂觀。#
據統計(*2):
自 2011 年以來,程式碼行數的增長就開始持續放緩;2015 年之後,程式碼行數則完全停止增長。同時,commit 的數量也在隨時間的增長而下降。2015 年之後,commit 量進入自由落體狀態,跌回了 2007 年時的水平。這和 2015 之後開始的雲以及 AI 的欣欣向榮形成強烈反差。
有些人可能會說,這裡主要統計的是開源項目,但有很多項目因為不再被需要所以不被更新了,新的項目狀況要好很多。
的確有這種可能性,但另一個對於當時流行的開源項目的統計表示 (*3):
"超過 50% 的項目是紅色的:它們無法讓維護者維持在貧困線以上。31% 的項目是橙色的,這些項目的開發者願意為低薪工作,而這些薪水在我們這個行業內是令人難以接受的。12% 是綠色的,只有 3% 是藍色的:Webpack 和 Vue.js。"--50% 的項目是字面意義上飯都吃不起的。
"對所有的維護者來說,投入到開源上的總資金是不夠的。如果我們把資料集中的這些項目的年收入加在一起,就是 250 萬美元。工資中位數約為 $9k,低於貧困線。如果將這筆錢平均分配,大約是 $22k,仍然低於行業標準。"-- 即使平均分配,也只有 2w2 美刀一年。而這並不是只簡單的看 github 上獲得的捐助,同樣也盡可能統計了項目在如 patreon 平台上所獲得的資金。
開源趨勢整體觸目驚心。
對於開源個體,自然可以有很多建議,如不要再進行開源項目,而是直接構建產品。
但對於開源本身呢?
"開源可持續性的鬥爭是將人類從奴役、殖民和剝削中解放出來的千年鬥爭。勤勞誠實的人們付出了自己的一切,換來的卻是不公平的報酬,這已經不是第一次了。"(*3)
這種開發開源的人連飯都吃不上但利用開源的人賺的很多的循環是沒法長期持續下去的,最終開源只能凋零。
而可笑的是,一些用開源吃飯的人還不知道開源都差不多要被餓死了 -- 當然,可能他們知道了也不關心,畢竟人類遠比想象的貪婪和愚蠢。
毫無疑問,開源所面對的困境是困難而長期的,解決這些問題也要足夠的時間和付出。
"貧困線下的軟體"(*3)一文在最後提出了一些措施,如:
只接受那些將很大一部分利潤(至少 0.5% )捐贈給開源的公司,或者那些根本不依賴開源的公司的工作
如果你有足夠的薪水,捐贈給開源
不要放棄加入工會(我在芬蘭寫這篇文章,那裡 65% 的工人都加入了工會)
不要放棄新項目的替代許可證
向微軟施壓,要求其向開源項目捐贈數百萬美元
通過發布這類數據研究,揭露企業行為的真相
個人覺得可以補充一些:
1,嚴格審視自己項目的許可證,不要動不動就無腦 MIT。
2,對於侵權,勇敢的揭露和維權,善用社交媒體和法律的力量。
3,法律走不通的地方就別講法,學習一些安全相關,保留對等報復的能力。就算是真菩薩,佛家也講金剛怒目。
附。對於開源一些典型的認知錯誤:
例 0:開源開源,你源代碼都給我了我為啥不能隨便用?
典中典。嚴格來講,不是把 Source 給 Open 了就一定叫做開源。此外,開源是有許可證規定其使用範圍的。關於各種許可證的詳細,見參考文獻。
例 1:開源就不應該賺錢,憑什麼要捐助?
解析:開源和賺錢不矛盾,從來沒有開源項目就不應該賺錢的規定。至於捐助的確是自願,更多的上文已經討論過,不再贅述。
例 2:真正想開源的不會因為 xx 原因不開源,所以吧啦吧啦(多半是些不用太守規矩啊之類的言論)。
解析:試圖捧殺給自己的行為開脫。開源領域自然多的是菩薩心腸的,但和你不守規矩有什麼關係?
例 3:我使用了開源項目後還幫它做了宣傳,幫助了擴散,所以吧啦吧啦(多半是些不用太守規矩啊之類的言論)。
解析:試圖用自己也提供了貢獻來給自己的行為開脫。感謝幫忙宣傳,但功過不相抵,其他行為請遵守該項目的許可證。
例 4:開源捐助要很多錢吧?我又沒那麼多錢,捐太少被人笑話,不捐了吧。
解析:哪怕捐 1cent 對於開源項目都是幫助,從來沒有笑話捐的少的,捐了錢的都是菩薩,這事情就講究一個聚沙成塔。而且不少開源作者並不是完全依靠開源項目活命,對於他們來說金額可能是其次,但任何一筆捐助都都是對他們極大的鼓舞。
以此文致敬我所認識的(以及不認識的)中文開源項目作者們,請大家多支持他們。
最後給我的 https://github.com/cryptonerdcn/wasm-cairo 打個廣告:這是一個為 StarkWare 的通用 ZK 語言 Cairo 建立 WASM 運行時的開發套件。
你可以通過 Onlydus 來參與或捐助這個項目。Onlydust 是一個 web3 的開源項目協作平台:
https://app.onlydust.com/p/wasm-cairo
參考文獻:
1,Github 對於開源許可證的說明:https://docs.github.com/zh/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository
2,開源已死:https://www.oschina.net/news/118100/open-source-is-not-growing-anymore
3,貧困線下的軟體:https://github.com/xitu/gold-miner/blob/master/TODO1/software-below-the-poverty-line.md