我的按鈕被狗啃了
12 月 25 日腿宰,正當人們沉浸在節(jié)日的氣氛中時呕诉,部分開發(fā)者突然發(fā)現(xiàn)他們開發(fā)的 Web 網(wǎng)頁的界面發(fā)生了變化,按鈕上方出現(xiàn)“積雪”特效吃度,并增加Ho Ho Ho的title甩挫!
而且,因為色彩的原因椿每,很多程序員驚奇的發(fā)現(xiàn):我的按鈕被狗啃了伊者!
這對于一些政企類嚴肅網(wǎng)站來說簡直就是一場災(zāi)難!
找出來间护!快把原因找出來亦渗!
經(jīng)過一番艱苦探索,大家終于發(fā)現(xiàn)汁尺,這是前端 UI 組件庫 Ant Design(簡稱 antd)提前埋入一個未經(jīng)聲明的定時“彩蛋”法精!
不過估計這位開發(fā)者似乎是對彩蛋有什么誤解。這種在人不注意的時候突然跳出來嚇人的蛋,根本就不是什么彩蛋搂蜓,是跳蛋……不……是炸彈呀狼荞!
事件隨之迅速發(fā)酵,引起了巨大爭議帮碰。
很多遭殃的程序員直接跑到antd的Github倉庫瘋狂吐槽相味!一時間場面壯觀!
有程序員被祭天了
這一次的積雪來的很突然殉挽,還莫名其妙的自己“Ho Ho Ho”的叫喚丰涉,可謂驚悚。
很多程序員急忙跑到電腦跟前一頓忙此再,然后一臉懵:“沒發(fā)現(xiàn)有什么異常啊昔搂,不會是網(wǎng)站被黑了吧?”
解決無果之后输拇,老板臉色開始陰沉,臉上早已寫滿了“你這不行啊”的鄙視贤斜。但無奈焦灼之余依然無法合理解釋策吠,隨即遭到開除。
誰能想到是源頭要給你一個“蛋”呢瘩绒?這下好了猴抹,直接滾蛋了。
這大冬天的锁荔,本來經(jīng)濟就不景氣蟀给,各大公司都在找各種理由裁員,這下理由來了阳堕!好端端的就這樣被祭天了跋理!
開除可能就有點過了。但是被莫名其妙的罰款也受不了疤褡堋前普!
阿里這是故意的吧!螞蟻金服是不是給 Antd 團隊換產(chǎn)品經(jīng)理了壹堰?而且這一幫人他們是不是早就串通好了拭卿?!
網(wǎng)上贱纠,遭殃的程序員開始了瘋狂的吐槽:
而且就連第三方開發(fā)者設(shè)置的 title峻厚,竟然也會被完全覆蓋。
而由于無法手動關(guān)閉谆焊,自力更生的人們惠桃,便給出了一個在頂層 app 容器中添加一段代碼的解決方案。
說是彩蛋,但提前也沒有個聲明肮羯洹军拟!這突然蹦出來怪老嚇人的!?
彩蛋提交者:是我愚蠢了
說起來誓禁,這已經(jīng)是兩個月之前的事了懈息!
一位阿里的開發(fā)者在今年9月10日的時候,準備給大家一個驚喜摹恰,于是就埋下的一個定時的彩蛋辫继。哪知道驚喜變成了驚嚇!
下面就是改動的代碼:如何在按鈕上加一個雪花樣式俗慈。
const?now =?new?Date();
const?isChristmas = now.getMonth() ===?11?&& now.getDate() ===?25;
const?classes = classNames(prefixCls, className, {
[`${prefixCls}-${type}`]:?type,
[`${prefixCls}-${shape}`]: shape,
[`${prefixCls}-${sizeCls}`]: sizeCls,
[`${prefixCls}-icon-only`]: !children && icon,
[`${prefixCls}-loading`]: loading,
[`${prefixCls}-background-ghost`]: ghost,
[`${prefixCls}-two-chinese-chars`]: hasTwoCNChar,
[`${prefixCls}-block`]: block,
christmas: isChristmas,
});
const?iconType = loading ??'loading'?: icon;
const?iconNode = iconType ? :?null;
const?kids = (children || children ===?0)
? React.Children.map(children,?child?=>?insertSpace(child,?this.isNeedInserted())) :?null;
const?title= isChristmas ??'Ho Ho Ho!'?: rest.title;
一開始姑宽,這一彩蛋的提交者還認為這不是什么大事,直到不少開發(fā)者通過各種社交軟件“炮轟”闺阱,才在github發(fā)表了一個不痛不癢的聲明炮车,稱是在自己的“一意孤行且愚蠢的決定”。
Ant Design 圣誕彩蛋起源自 2018 年 9 月 10 日我的一次提交:https://github.com/ant-design/ant-design/commit/00aebeb9756afecc884ad48486084836b9a2707a
代碼實現(xiàn)會在 12 月 25 日當天給所有按鈕添加積雪效果酣溃,并增加?Ho Ho Ho!?的瀏覽器默認提示信息瘦穆。這完全是我個人的一意孤行且愚蠢的決定,是我的錯誤給大家造成了不良影響赊豌,非常抱歉扛或。
他還提到,這一“彩蛋”的影響范圍是 Ant Design 3.9.3碘饼、3.10.0~3.10.9熙兔、3.11.0~3.11.5版本,并且目前已經(jīng)發(fā)布了修訂版本3.9.4艾恼、3.10.10住涉、3.11.6,更新至相應(yīng)的版本即可修復(fù)蒂萎,使用了語義化版本的直接重新安裝node_modules并重新下載即可秆吵。
最后他鄭重強調(diào),代碼里已經(jīng)沒有其他的彩蛋了五慈!未來也會繼續(xù)接受開發(fā)社區(qū)的監(jiān)督纳寂。
讓我以后怎么相信你了
Ant Design被稱為全世界最好的React前端組件庫之一,前端優(yōu)秀的框架泻拦,目前Github已經(jīng)有接近4萬的star. 因為其專業(yè)毙芜,穩(wěn)定,受到不少人的青睞争拐,國內(nèi)外不少企業(yè)都會選擇使用antd做前端開發(fā)腋粥。
如果只是普通的應(yīng)用場景晦雨,其實給提交按鈕增加這樣一個特效并無傷大雅。但需要注意的是隘冲,很多政府闹瞧、企業(yè)網(wǎng)站都在使用Antd的框架,而這些網(wǎng)站很多都是極其嚴肅的展辞,并不適合這些玩笑似的“彩蛋”奥邮。
尤其是這一彩蛋被設(shè)定在12月25日這天出現(xiàn),指向性的含義非常明顯罗珍,因此導致第三方開發(fā)者承受了不必要的壓力洽腺,給不少網(wǎng)站的維護人員帶來了很大的麻煩,甚至據(jù)說還有前端因此而丟掉飯碗覆旱。
有開發(fā)者半開玩笑說蘸朋,如果不是圣誕節(jié)而是中國的傳統(tǒng)節(jié)日也許就不會引起那么大的爭議了:因為有些單位有明令禁止過洋節(jié)的規(guī)定。
試想一下扣唱,如果這些禁止過洋節(jié)的網(wǎng)站(如個別政府網(wǎng)站)的按鈕都是圣誕節(jié)的 logo藕坯,對于那些特別敏感的人來講后果可想而知。
總之画舌,對于這種“毫無開源的責任意識”堕担、“非常不專業(yè)的做法”,不少開發(fā)者認為值得商榷 —— 至少你也該提供個 API曲聂,讓大家在想關(guān)閉的時候手動關(guān)閉啊佑惠!
開源軟件的每一個細節(jié)朋腋,都暴露在“陽光之下”,只要有心膜楷,人們都可以發(fā)現(xiàn)旭咽。所以理論上任何一點想拿開源產(chǎn)品“圖謀不軌”的做法都不會得逞。
但是赌厅,這起事件的發(fā)生穷绵,又反映了什么?為什么理應(yīng)有人看到并監(jiān)督的問題特愿,卻安靜地躺了兩個月都沒人發(fā)現(xiàn)仲墨?
不過,盡管由于Antd是開源項目揍障,根據(jù)協(xié)議即使這一彩蛋給開發(fā)者帶來困擾甚至害人丟了工作目养,開發(fā)者也很難追究添加彩蛋的運營人員的責任,因為開發(fā)者在使用Antd框架的時候并沒有付費毒嫡,該框架也并非用于盈利癌蚁。
但是這一事件給Antd項目的聲譽造成了嚴重的負面影響,一些開發(fā)者已經(jīng)著手在網(wǎng)站頁面中將Antd框架刪除。
總而言之努释,這次“彩蛋事件”雖然是個別人員的非主觀惡意造成的碘梢,但是卻給整個開源社區(qū)帶來了一場“信任危機”。
而這次事件也給廣大開發(fā)者敲響了警鐘伐蒂!
一直以來煞躬,很多開發(fā)者認為“開源”的東西一定的安全的,因為所有代碼對外開放饿自,任何人都可以查看汰翠。但是當一些大型的開源項目涉及到很多行代碼的時候,不一定有開發(fā)者能夠完整的閱讀所有的開源代碼昭雌。
而且像Antd這樣由團隊負責運營的開源項目复唤,很多時候默認就是安全的,人們使用它就是為了提高工作效率烛卧,不大可能把所有代碼都讀一遍佛纫。這就使得一些開源項目存在了隱患的可能。
這次僅僅只是加入了一個彩蛋总放,如果下次增加點后門什么的呈宇,后果不堪設(shè)想。
源:江戶川雨