亚洲av中文无码乱人伦在线视色,网曝黑料国产吃瓜,无码国产精品久久一区免费,亚洲av在在线观看,亚洲av国产午夜精品一区二区

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

作者 | 覃云、徐川

編輯 | 小智

對(duì)于開源項(xiàng)目來說,一個(gè)細(xì)微的改動(dòng)就會(huì)影響到無數(shù)使用該項(xiàng)目的產(chǎn)品、公司、生產(chǎn)環(huán)境。阿里是中國開源的先鋒公司,對(duì)于事故的處理也一直都很有擔(dān)當(dāng),阿里云“敬畏每一行代碼,敬畏每一份托付”曾是公關(guān)文的典范,但 Antd 項(xiàng)目彩蛋變炸彈這件事兒,我們卻只能表示遺憾和可惜。開源項(xiàng)目的責(zé)任如何看待?怎樣避免類似事件再次發(fā)生?

12 月 25 日,正當(dāng)人們沉浸在節(jié)日的氣氛中時(shí),部分開發(fā)者突然發(fā)現(xiàn)他們開發(fā)的 Web 網(wǎng)頁的界面發(fā)生了變化,按鈕上方出現(xiàn)“積雪”,經(jīng)過探索發(fā)現(xiàn)這是前端 UI 組件庫 Ant Design(簡稱 antd)提前埋入一個(gè)未經(jīng)聲明的“彩蛋”,事件迅速發(fā)酵,引起了巨大爭議。

事件背景

現(xiàn)在讓我們?cè)賮砘仡櫼幌抡麄€(gè)事件的發(fā)展過程:

12 月 25 日上午,Antd 的用戶發(fā)現(xiàn)網(wǎng)站上一個(gè)正常的按鈕上方出現(xiàn)了“積雪”的 logo,如下圖所示:

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

經(jīng)過查看,Antd 的用戶在工作后臺(tái)上發(fā)現(xiàn)按鈕的 class 多出一個(gè) chrismas,title 變成 Ho Ho Ho,然后再去查看 antd 源碼,發(fā)現(xiàn):

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

最開始,開發(fā)者以為是被黑客代碼植入了,在反復(fù)檢查之后才確定是代碼中埋入了定時(shí)的“圣誕節(jié)彩蛋”。

不久,此事就開始在知乎和 Antd issue 上引起討論,很多開發(fā)者表示憤怒與不滿。

很多開發(fā)者認(rèn)為,Antd 是一個(gè)通用庫,不應(yīng)該在里面加彩蛋,尤其 Antd 大都是 2B 的,它的用戶對(duì)安全、穩(wěn)定、可控性的要求更高,發(fā)生一些細(xì)微的錯(cuò)誤都可能影響一個(gè)公司的業(yè)務(wù),再者,如果今天被隨意加入一個(gè)彩蛋,那么明天就可能被人引入病毒,這讓開發(fā)者很是恐慌。最后,這個(gè)彩蛋沒有下線機(jī)制,讓開發(fā)者無所適從。

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

有開發(fā)者半開玩笑說,如果不是圣誕節(jié)而是中國的傳統(tǒng)節(jié)日也許就不會(huì)引起那么大的爭議了,因?yàn)橛行﹩挝挥忻髁罱惯^洋節(jié)的規(guī)定,試想一些,如果這些禁止過洋節(jié)的網(wǎng)站(如個(gè)別政府網(wǎng)站)的按鈕都是圣誕節(jié)的 logo,后果可想而知。

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

更有傳言,個(gè)別程序員因?yàn)榇耸卤挥脕砑捞臁?/p>

說好的敬畏每一行代碼呢?Antd代碼彩蛋炸翻一圈人(antd useform)

當(dāng)事人的回應(yīng)

由于事態(tài)持續(xù)發(fā)酵,昨天下午,在 Antd 開源庫中加入這些彩蛋代碼的工程師偏右在知乎上對(duì)此事做出了回應(yīng):

Ant Design 圣誕彩蛋起源自 2018 年 9 月 10 日我的一次提交:https://github.com/ant-design/ant-design/commit/00aebeb9756afecc884ad48486084836b9a2707a

代碼實(shí)現(xiàn)會(huì)在 12 月 25 日當(dāng)天給所有按鈕添加積雪效果,并增加 Ho Ho Ho! 的瀏覽器默認(rèn)提示信息。這完全是我個(gè)人的一意孤行且愚蠢的決定,是我的錯(cuò)誤給大家造成了不良影響,非常抱歉。

同時(shí),他還給出了修復(fù)這個(gè)問題的方案:

目前圣誕節(jié)彩蛋影響的 Antd 版本包括:3.9.3、3.10.0~3.10.9、3.11.0~3.11.5

為此,Antd 團(tuán)隊(duì)發(fā)布了修訂版本:3.9.4、3.10.10、3.11.6,相關(guān)用戶只需更新至相應(yīng)的版本即可,使用了語義化版本的直接重新安裝 node_modules 并重新下載即可。

螞蟻前端負(fù)責(zé)人玉伯也在知乎回應(yīng)(摘錄):

這件事確認(rèn)是由我們?cè)诖a中預(yù)埋的彩蛋導(dǎo)致,現(xiàn)在明確認(rèn)定這一舉動(dòng)是錯(cuò)誤的。這個(gè)彩蛋有多么欠妥我們不再贅述,對(duì)大家造成的各種影響,antd 開發(fā)團(tuán)隊(duì)致以誠摯的歉意。感謝所有熱心用戶提出的批評(píng)指正,感謝你們的中肯建議。開源得益于大家的信任,我們會(huì)立刻開展復(fù)盤并深刻吸取這次教訓(xùn),并重新 review 代碼更新評(píng)審機(jī)制。后續(xù) antd 代碼庫里不會(huì)再加入與功能無關(guān)的代碼,請(qǐng)大家持續(xù)監(jiān)督。

不過,關(guān)于后續(xù)處理等,InfoQ 聯(lián)系了螞蟻金服相關(guān)人士,他們不愿公開。

如何看待開源項(xiàng)目的責(zé)任

如今的開源,早已不是自由軟件時(shí)代的理想主義。很多公司都參與到開源中來,它們的動(dòng)機(jī),除了一些回饋社區(qū)和分享精神外,還摻雜著商業(yè)和利益上的考量,其中包括:

  • 通過領(lǐng)導(dǎo)關(guān)鍵開源項(xiàng)目,成為某行業(yè)事實(shí)標(biāo)準(zhǔn),從標(biāo)準(zhǔn)中獲取利益;
  • 開源核心代碼,基于核心代碼提供付費(fèi)的咨詢和外包、資源服務(wù);
  • 通過開源項(xiàng)目,提升團(tuán)隊(duì)成員的技術(shù)能力和凝聚力,打造技術(shù)品牌,方便對(duì)外做技術(shù)招募。

不過,在遍地商業(yè)化的開源里,前端的開源又有其特殊性,因?yàn)榍岸说募夹g(shù)很難直接帶來利益,上面的三種好處里,最多占第三條。

這導(dǎo)致前端開源有一定的隨意性,之前在前端開源領(lǐng)域也發(fā)生過人為原因的影響非常大的惡意事件:

  • left-pad 事件:作為很多項(xiàng)目的依賴的作者基于個(gè)人原因?qū)㈨?xiàng)目從 NPM 包管理器中刪除,導(dǎo)致很多項(xiàng)目和網(wǎng)站無法正常工作;
  • event-stream 事件:一個(gè)令人尊敬的開源作者因?yàn)轫?xiàng)目眾多缺人維護(hù),將項(xiàng)目權(quán)限轉(zhuǎn)送他人后竟然被植入比特幣錢包后門。

前端開源代碼缺乏商業(yè)化元素,讓一部分人認(rèn)為隨意修改代碼并沒有責(zé)任,對(duì)于一些個(gè)人的小型項(xiàng)目來說這么說并沒有錯(cuò)。antd 的修改本身并不會(huì)帶來直接損害,但在宗教性節(jié)日在生產(chǎn)環(huán)境做無法下線的“彩蛋”,顯然欠缺考慮,并帶來一系列的間接損害。

而且,antd 在宣傳時(shí)自稱為企業(yè)級(jí)開源項(xiàng)目,這樣隨意修改代碼顯然與企業(yè)級(jí)的承諾相違背。同時(shí),antd 是公司級(jí)的開源項(xiàng)目,這樣欠缺考慮的修改也損害了背后公司在開源上負(fù)責(zé)任的形象。最后,能力越大,責(zé)任也越大,antd 作為很多項(xiàng)目的底層依賴,在做功能修改后未告知用戶,在用戶發(fā)現(xiàn)后沒有迅速解決問題而是用不當(dāng)言辭繼續(xù)激怒用戶。

這些才是我們對(duì)于 antd 批評(píng)的主要原因。

怎么避免類似事件再次發(fā)生?

從 antd 的 issue 區(qū)可以看到,事件在很短時(shí)間內(nèi)就演變成一場狂歡,這其中固然有因?yàn)楫?dāng)事人在 Github 上的回應(yīng)不當(dāng)導(dǎo)致事件失控的原因,也不乏一些人帶節(jié)奏或者借題發(fā)揮,這顯然已經(jīng)超出了界限。在這里,我們也呼吁讀者不要參與,不要傳播那些惡意段子圖。

現(xiàn)在,我們應(yīng)該思考的,是怎么避免類似事件再次發(fā)生。

  • 經(jīng)過此次事件后,想必國內(nèi)公司在操作開源項(xiàng)目時(shí)會(huì)更加謹(jǐn)慎。對(duì)于底層依賴型的代碼,我們要盡量保持穩(wěn)定,不要隨意修改代碼。
  • 其次,在修改導(dǎo)致任何功能變化的代碼后,一定要在 changelog 里體現(xiàn)出來,這才是負(fù)責(zé)任的做法。
  • 最后,完善開源項(xiàng)目的管理流程,要有人能夠把關(guān)代碼,不讓一些欠缺考慮的代碼合并到主線。如果真想做好開源,這些是必須要做到的。

對(duì)于開源項(xiàng)目的用戶來說,要跟蹤所有依賴代碼的所有更改顯然是不太可能做到的,這就要求在技術(shù)選型時(shí)要慎之又慎,在不同的場景選擇不同的技術(shù),在面對(duì)嚴(yán)肅的場景時(shí),一定要選擇成熟 / 穩(wěn)定 / 可靠的技術(shù),這也能從一定程度上避免問題。在面向年輕用戶時(shí),選擇更新潮的技術(shù),這樣即使出現(xiàn)問題也有更高的容忍度。

InfoQ 的讀者們,你們認(rèn)為要如何杜絕類似事件再次發(fā)生呢?

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
返回頂部