筆記本數字鍵盤錯亂怎么恢復 筆記本數字鍵盤亂碼怎么恢復

刪庫一時爽,后悔沒商量!
整理 | 蘇宓出品 | CSDN(ID:CSDNnews)2022 年伊始,開源屆炸開了鍋,這邊還在費盡心思嘗試各種檢測與修復方法減少 Log4j 2 漏洞帶來的輻射;另一邊卻陡然發現,數千個開源庫滿屏亂碼,無數程序員一覺睡醒后陷入沉思 。
在尋找根源時發現,這些錯亂的開源庫有一個共同特點,就是使用了開源的 NPM 包 faker.js 和 colors.js,繼續深挖后,讓人十分詫異的是,導致重大 Bug 的背后是這兩個流行的開源庫被其作者 Marak Squires 刪掉了源代碼 。
所謂“沖動是魔鬼”,就在 Marak 對 faker.js 和 colors.js 兩個項目進行一系列注入惡意代碼、刪庫等魔幻操作之后,作為代碼托管平臺 GitHub 為了維護“和平與正義”,直接封掉了 Marak 的賬號 。
然而,事情并沒有結束,時隔十天后,Marak 似有些心酸也頗有后悔之意地詢問起 GitHub:
@GitHub,這是怎么回事?十天前,你取消了我發布到 NPM 并修復 colors.js 中的 Infinity Zalgo bug 的能力 。
從未回復我的支持電子郵件 。
我有 100 多個需要維護的軟件包 。
每個人都會不時犯下「編程錯誤」 。
沒有人是完美的 。

沖動的根源
Marak 的言下之意也并不難理解,“你封了我十天了,我還有好多項目要維護,希望能給我解封一下 。”但是對于 Marak 將有意損壞“faker.js”和“colors.js”兩個開源庫的行為歸納為「編程錯誤」這一說法,很多開發者直言不可原諒,更不用說這一態度可以讓 GitHub 會去回復他的郵件了 。
畢竟,Marak 一時的沖動的后果不僅是讓很多項目受到時間、成本損失,也間接地勸退不少想要進入開源領域的愛好者們 。
回看事情經過,還是得從 color.js 和 faker.js 兩個項目談起 。
在包管理器 NPM 上,colors 每周下載量超過 2000 萬次,且有近 19000 個項目依賴它 。同時,faker.js 在 NPM 上每周獲得超過 280 萬次下載,并擁有超過 2500 位貢獻者 。兩者都是在開源領域頗受歡迎的項目 。作為兩個項目的開發者之一,Marak 常奮戰于開源一線 。
不過,之前突發的一場大火似乎將 Marak 逼入絕境,也燒滅了他對開源精神的信賴 。CSDN 此前也曾發文梳理過:
2020 年 9 月,Marak 彼時租借的房子突發大火,所有財產幾乎被全部燒毀,無奈之下 Marak 在推特上發布求助,“我在一場公寓火災中失去了所有東西,幾乎無家可歸,也無法訪問我的大部分賬戶,所有的貴金屬都不見了 。如果有人能給 paypal@marak.com 一點錢,那將幫助我免于在街上凍僵 。”
在十天之后,或因生活“走投無路”,Marak 開始在 GitHub 上譴責大型公司使用其開源項目卻不回饋的行為,并直言:“我不會再用我的免費工作來支持財富 500 強企業了(以及其他較小規模的公司) 。沒什么好說的 。趁這個機會,你可以給我發一份年薪六位數的合同,或者分叉項目,讓別人來做 。”
即使如這樣“張狂”的話,但也石沉大海,并沒有引起太多人的注意 。
最終在 2022 年 1 月 8 日,Marak 選擇了“極端”的方式,其在 color.js 項目的 v1.4.44-liberty-2 版本中添加了一個“new American flag module”并將其發布至 GitHub 和 NPM 。受污染的版本 1.4.1 和 1.4.2 也出現在 npm 上 。
代碼中引入了一段無限循環,讓所有使用了 colors.js 的程序都會在控制臺無休止地打印各種非 ASCII 字符,導致亂碼 。
同樣,一個被破壞的 6.6.6 版本的 faker.js 也被發布到 GitHub 和 NPM 上 。
Trick or treat
【筆記本數字鍵盤錯亂怎么恢復 筆記本數字鍵盤亂碼怎么恢復】至此,Marak 刪庫的意圖是想要讓那些拿著開源軟件實現商業項目的大廠團隊嘗到苦頭,希望大廠能夠反過來找自己幫他們解決問題 。但是 Marak 卻大大低估了此事的后果,在其惡意破壞代碼并被 GitHub 封號后,Marak 就后悔了 。他在 1 月 7 日發 Twitter 表示:
NPM 已恢復為 faker.js 包的先前版本,但是 GitHub 已暫停我對所有公共和私人項目的訪問 。我有 100 個項目 。
在 1 月 15 日時,Marak 再次發聲:
我已經在本地修復了 Zalgo 錯誤并準備好發布 colors v2.2.2 。它已經準備好 3 天了,我仍然無法發布到 NPM 。

幾乎無人支持 Marak 想要恢復發行權的請求
截至目前,GitHub 雖然解封了 Marak 的賬號,但是其發行權仍然被剝奪 。與此同時,此前被破壞的 faker 項目也已經被社區接手,目前該項目團隊共有 8 名工程師,另外,他們還創建為 faker 創建了一個官網: 費盡心思想要的一切以及過往的付出宛如竹籃打水一場空 。
如今,Marak 雖然想用“每個人都會不時犯下編程錯誤,沒有人是完美的 。”的說法將自己的錯誤翻篇,但是更多認為他已經損害了開源生態系統的信任原則:
@praash 表示:我真的很想知道,他為什么被 GitHub 封號?他實際上違反了哪些條款?如果他沒有明目張膽地弄出這個 Bug 來宣告他的行為,現在他是否還會被封號?
我認為意圖是完全無關的 。我不喜歡他幼稚的態度,但我確實在這個新的、明顯不誠實的關于編程錯誤的聲明中找到了一個相當強烈的諷刺點 。一味地“責備開發者”并不足以令人信服 。
@Nextgrid:為什么這需要禁止呢?這是他的 GitHub 存儲庫,據我所知,只要不侵犯版權、非法或不當,您可以將任何您想要的東西放在那里 。
ice_cold_etoh:在做有爭議的事情之前,你應該做好承擔后果的準備,或者你一開始就不做,就這么簡單 。
@93 Escort Wagon:”每個人都會不時犯編程錯誤 。沒有人是完美的 。”不,絕大多數程序員從不故意將惡意代碼添加到他們的項目中 。
個人開源開發者如何生存?
針對圍繞網友爭論的開源開發者是否獲得報酬這一問題,CSDN 在《2020-2021 年中國開發者大調查》報告中做過調研,其中 77% 的受訪者表示不曾在開源上獲得收入 。
Digital Ocean 也曾對來自北美、歐洲和亞太地區的 4,440 名開源開發者進行了調研,數據顯示,超過一半的受訪者認為參與者應該為開源項目做出貢獻(54%),而大約三分之一的人未做出選擇 。只有 12% 的受訪者反對向個人支付捐款 。
關于誰應該得到報酬的問題,不同的受訪者之間也產生了重大的分歧 。35% 的人認為維護者應該得到報酬,30% 的人主張貢獻者應該得到報酬,25% 的人認為項目作者應該得到報酬 。
值得注意的還有,與一些年長的開發者相比,年輕一代的程序員更支持為開源貢獻的人支付費用 。60% 的 18-24 歲的受訪者認為人們應該為他們對開源的貢獻而提供報酬,其次 53% 的 25-34 歲的人、51% 的 35-44 歲的人、42% 的 45-54 歲的人以及 34% 55 歲以上的人同意這樣的做法 。
另外,當提及誰應該為這些報酬提供資金時,一半受訪者認為科技公司應該為開源貢獻者們提供資金,而四分之一的人認為項目使用者或個人應該支付 。
事實上,Marak 惡意破壞代碼等行為破壞了開源精神的根本,但是“沒有收入來源,用愛發電”也是開源發展中亟需解決的一大難題 。對此,你怎么看待或維系開源貢獻與個人收入之間的平衡?
參考:/

《新程序員003》正式上市,50余位技術專家共同創作,云原生和數字化的開發者們的一本技術精選圖書 。內容既有發展趨勢及方法論結構,華為、阿里、字節跳動、網易、快手、微軟、亞馬遜、英特爾、西門子、施耐德等30多家知名公司云原生和數字化一手實戰經驗!

    推薦閱讀