自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開源 | 老板問我“按鈕”為什么被狗啃了?

開發(fā) 前端
12 月 25 日是圣誕節(jié),在這個節(jié)日氣氛濃厚的日子里,眾多國內外前端開發(fā)者,卻因為一個突如其來的意外而坐立不安。

12 月 25 日是圣誕節(jié),在這個節(jié)日氣氛濃厚的日子里,眾多國內外前端開發(fā)者,卻因為一個突如其來的意外而坐立不安。 

[[253576]]

本文首發(fā)于航通社,原創(chuàng)文章未經授權禁止轉載。航通社 微信:lifeissohappy 微博:@航通社 

一覺醒來,他們發(fā)現(xiàn)由自己參與設計的網站、公司內網、辦事系統(tǒng)等網頁上,有一些按鈕的上面多了一團白色的“積雪”,在白背景下,看著有點像是被“咬掉”了一塊似的。

“老板問我按鈕為什么被狗啃了”,在代碼托管站點 GitHub 上,有人這么說。

不僅如此,將鼠標指向變化了的按鈕時,原本設定好的文字說明也統(tǒng)一變成了“Ho ho ho”,這是“圣誕老人”標志性的笑聲。

這毫無疑問是一個圣誕節(jié)的應景“彩蛋”。源代碼顯示,只有在系統(tǒng)判斷是 12 月 25 日當天,這個”彩蛋“才會出現(xiàn)。

不合時宜的”彩蛋“

在程序中植入“彩蛋”是程序員們在枯燥的編程生活中展現(xiàn)樂趣,同時聲明版權的一個悠久傳統(tǒng)。

我們廣泛使用的 Windows、Android 等操作系統(tǒng),以及 Office 辦公軟件的多個版本都埋有“彩蛋”。

然而,“彩蛋”不屬于軟件功能的一部分,所以一般都是在不能直接顯現(xiàn)的源代碼等地,或者需要通過極其復雜的方式才能找到,就像打游戲一樣。

早期的雅虎網站首頁,在左上角”Yahoo!“標志的感嘆號處,點擊那個小小的點,就會有個人唱出”雅虎~“的聲音。如果不是有人告訴你,你可能永遠也想不到這里是可以點的。 

正如張小龍在微信 7.0 發(fā)布當日引用的那句話:”你未看此花時,此花與汝同歸于寂;你來看此花時,則此花顏色一時明白起來。“一個優(yōu)秀的彩蛋,應當是只有在人們特意來看的時候,才顯現(xiàn)出來。

就算有時你想讓所有用戶都看到“彩蛋”,那么它所處的位置以及呈現(xiàn)的效果,也需要以不影響軟件功能正常實現(xiàn)為前提。

例如,谷歌和百度等都會在一些節(jié)日更改網站標識(logo),雖然所有用戶都看得見,但這個位置的展示不會影響使用。

相比之下,在圣誕節(jié)當天出現(xiàn)的這個“彩蛋”,對廣大前端開發(fā)者來說,就顯得相當不合時宜。 

它不分場合地出現(xiàn)在一些機關、企事業(yè)單位的內網界面,甚至據說,在不過圣誕節(jié)的中東國家也出現(xiàn)了。

只要想象一下,有一天你打開電腦,發(fā)現(xiàn)操作系統(tǒng)自作主張的給你換了皮膚,各種按鈕上也都”下雪“了,就能體會到這一事故給開發(fā)者、老板和客戶帶來的極大驚嚇。 

微博 @sss無常

微博 @這種名字也有人用嗎

一個生物科學類網站受到了影響: 

還有一個賣藏區(qū)產品的網站: 

甚至”湖南省發(fā)改委碳排放管理系統(tǒng)“都中招了: 

此外,還有留言說自己是”在伊朗工作的中國前端“的: 

還有說自己是某某委的,沒丟工作還得多虧了自己的小姨子: 

……

更重要的是,在它毫無預兆地呈現(xiàn)出來之前,使用這種按鈕的開發(fā)者們,沒有得到任何通知。

他們瘋狂地尋找到底是哪里出了問題,莫非是有黑客入侵,修改頁面做了個惡作劇?

最終,人們查明了問題:這些“中招”的開發(fā)者們,都在項目中使用了 Ant Design(簡稱 AntD),這是由支付寶母公司螞蟻金服設計團隊制作的一套開源的前端框架。

受害者們涌入 GitHub 上的 AntD 項目主頁留言控訴。隨著管理員下午開始清理,你現(xiàn)在再過去看,恐怕已經看不到什么了。

牽一發(fā)而動全身

在當代互聯(lián)網環(huán)境下,前端框架可以看作是20多年前拿光盤裝的“網頁素材庫“的繼承者。

早期網頁設計中,要想做出個性化的按鈕、滾動條、下拉菜單、單選框、表單等網頁控件,要么需要完全自己重寫一遍,要么需要先在 PS 里面把網頁畫出來,再切圖,把圖片插入網頁。

此后,YUI、JQuery、Prototype 等由大公司或者開源社區(qū)貢獻出來的公用”素材庫“,逐漸成為業(yè)界的主流選擇。畢竟,有大公司已經做好的組件在那兒,自己就沒必要”重新造輪子“。

以螞蟻金服的 AntD 為例,在網頁中引用它的一小段代碼之后,只需要在寫網頁時規(guī)定一個按鈕的位置、大小和顏色,你就能得到一個優(yōu)雅的,稍微有一點點圓角弧度的按鈕,鼠標指向和按下按鈕時,還會有凸起和凹陷的視覺效果。

如此一來,使用公用的前端框架可以大大節(jié)省開發(fā)者的時間和精力,讓他們把重心放在整體頁面的”謀篇布局“上,甚至為機器自動生成網頁創(chuàng)造了條件。

AntD 不僅提供網頁組件的快捷引用,本身還是一種成體系的設計語言。因此,它已經被大范圍應用在支付寶這款軟件上,以及螞蟻金服內部的數百個中后臺應用。

通俗的說,只要正確使用 AntD,就會讓你做出的網頁產品或移動端,在細節(jié)上和支付寶網站或 App 相一致。這或許不會體現(xiàn)設計師的個性,但至少不會讓你犯一些低級錯誤。

AntD 的代碼托管于被微軟收購的代碼托管網站 GitHub 上,即使是中國境內的開發(fā)者,目前也可以自由引用來自 GitHub 的代碼,而不用擔心訪問不了的問題。

據螞蟻金服設計團隊今年 9 月的數據,Ant Design 1.0 在發(fā)布之后的 8 個月中,就已經在 GitHub 上收獲了 11686 個”星標“。

這意味著至少有這些數量的程序員關注,并使用了 AntD 到自己的項目上:https://zhuanlan.zhihu.com/p/43593326

就是這一得到業(yè)界廣泛關注和使用的基礎組件,突然在毫無預警,也沒有功能開關的前提下,給所有使用者的按鈕控件”下了一場雪“——而且還是在”生產環(huán)境“中,也就是說,根本不給開發(fā)者后悔的機會。

這場”雪災“也讓我們有機會看到該框架的應用范圍之廣泛,以及破壞力之巨大。

AntD 犯了什么錯

就像它的前輩 YUI 一樣,AntD 也是一個典型的”大公司的小產品“,是員工利用工作之余開發(fā)出來,并在工作之外仍能產生廣泛影響的產品。

YUI 當年由盛極一時的雅虎前端程序員貢獻出來,經過人們多年來不懈的努力,在雅虎本身幾經易手之后,YUI 仍然能作為一個開源項目具有長久的生命力。

在本次”彩蛋“風波之前,AntD 為前端提供了模仿谷歌 Material Design、JQuery 等有限幾套框架之外的新選擇。

它富有活力,又簡約大氣,所以確實受到業(yè)界的歡迎,也提升了螞蟻金服在開發(fā)者中的形象。

AntD 的主要維護人員 afc163(微博 @高端工程師 )早在今年 9 月的一次維護中,就默默地提交了這個”彩蛋“的相關代碼,可是在后來幾個月當中,一直沒有人發(fā)現(xiàn)——也許如果事先告知了,就不叫”彩蛋“了吧。

這位維護人員一開始也沒有意識到問題的嚴重性。他先是說這么點小事,不值得在產品更新說明中體現(xiàn)出來。

然后又說”早就做好了被罵的準備“:

他直到今天下午才發(fā)布官方聲明,道歉并撤銷了這個引起巨大震蕩的”彩蛋“,同時,項目組負責人也保證不會在代碼庫中再加入與功能無關的代碼:

https://github.com/ant-design/ant-design/issues/13848

只不過,由這個自作主張的”彩蛋“引發(fā)的對 AntD 整個項目的信任危機,也許才剛剛開始。

典型的留言是:”今天你慶祝圣誕節(jié)下雪了,明天清明節(jié),按鈕上是不是還要加一個墓碑?“

不同于操作系統(tǒng)打補丁,官方做出的任何更改,都只能寄希望于使用它的開發(fā)者們自主更新到新版,并不能即時”推送“到每一個項目上。

有比較悲催的前端就說,他們老板看到之后大發(fā)雷霆,他建議發(fā)一個新版解決問題,然而老板說不能因為這個發(fā)布新版,所以無法補救。

afc163 承諾代碼中再也沒有其他任何這類”彩蛋“,盡管如此還是有人建議將官方代碼復制一個子版本出來(術語叫做 fork),并由熱心的社區(qū)繼續(xù)維護這一分叉,以免再出什么意外。

事件之后,自然有喜歡 AntD 的用戶跑上去安慰作者,說這就是無心之失;但恐怕由此引發(fā)的用戶流失,也就是不得不替換新框架(找新的”輪子“)的情況,可能會更多。

AntD 開發(fā)者并不需要為受到損失的使用者承擔任何責任,因為這是一個采用了 MIT 許可協(xié)議的開源項目。

大多數情況下,開源的意思是你可以任意使用我做的這個東西,不需要標注版權,不用付費,也可以隨意修改到爹都不認識;但與此同時,我不會為你的任何潛在的損失承擔責任。這次也不例外。

既然做開源項目放到 GitHub 上就是賺個吆喝,不為盈利,也不承擔法律責任,那么很顯然,”信任“就是一個項目最為金貴的核心價值。

大家都是拿出業(yè)余時間無償參與到產品的改進和貢獻中的,如果其中的信任缺失了,那么至少作為項目發(fā)起人本人來說,他辜負了其他參與者的熱情和努力,就必須面對自己在項目中”涼了“的前景。

開源的深層悖論

有一個經典的比喻,說商業(yè)軟件的開發(fā),是一個自上而下的系統(tǒng)工程,就像建造一座”大教堂“。

而開源軟件的開發(fā)過程是一群級別平等的人,共同為某個事物貢獻自己的一點力量,聚沙成塔,資源互換,更像一座熱鬧的”集市“。

”大教堂與集市“的對比,讓堅持開源路線的人們頗為自豪。中心化的商業(yè)軟件開發(fā)流程,容易受到防不勝防的外界侵襲,也不能對新涌現(xiàn)出來的需求做即時,快速的反應,顯得步調遲緩笨拙。

相比之下,開源軟件的每一個細節(jié),都暴露在”陽光之下“,只要有心,人們都可以發(fā)現(xiàn),所以理論上任何一點想拿開源產品”圖謀不軌“的做法都不會得逞。

正如有人懷疑 AntD ”下次會不會直接用代碼挖礦“這樣的擔憂,就應該是沒有必要的。

但是,今天這起事件的發(fā)生,又反映了什么?為什么理應有人看到并監(jiān)督的問題,卻安靜地躺了兩個月都沒人發(fā)現(xiàn)?

航通社認為,答案可能就出在大企業(yè)作為初始貢獻者,給用戶們帶來的這份”安心感“。

以”因為信任,所以安全“作為口號的支付寶,雖然一度曾經做過”社交“的嘗試,但至少在管好我們廣大網民的錢袋子這個本職工作上,還能說是盡職盡責,讓人放心的。

螞蟻金服開發(fā)的 AntD 也因為清亮的設計語言,以及嚴謹,簡約的代碼寫作而受到程序員們的好評,還是體現(xiàn)出了大企業(yè)規(guī)范的開發(fā)流程,和靠譜的開發(fā)人員的好處。

不過,可能恰好因為這一點,使用 AntD 的人們會在不知不覺間,忘記這是一個開源軟件,而且它誕生的本意是支撐螞蟻金服內部產品的前端設計。

在螞蟻金服內部的工作環(huán)境里,員工們可能都喜歡過圣誕,都能讀出彩蛋背后的含義,并正確地理解它。

所以,一次性把所有按鈕都加上彩蛋,如果在螞蟻內部的話,可以說無可厚非。

當 AntD 的適用范圍走出螞蟻內部之后,開源社區(qū)本來應該盡到代碼審查的義務。

在實際使用之前,每個單獨的用戶都要仔細看這個代碼的各部分是否已經充分滿足了自身業(yè)務的需要,有什么不足或多余的地方,如果是能影響到很多人的問題——就比如”下雪“,就應該及時反饋給初始開發(fā)者,讓他們改進。

因為對螞蟻作為大公司的”信任“,這次應用 AntD 并不幸中招的前端同學們,可以說都沒有再花心思去審查代碼。”最安全的地方“也就變成了”最危險的地方“。

現(xiàn)在,大公司擁抱開源,將非核心業(yè)務甚至部分核心業(yè)務代碼開源,依靠訂閱服務而不是單獨產品賺錢,已經成為一種通行做法,像微軟、IBM 這樣的大公司,其從商業(yè)”教堂“到開源”集市“的大轉彎更讓人瞠目結舌。

大多數時候,多些商業(yè)公司做開源,總是好事。代碼共享出來了,就會有更多人的精力被解放,不至于”重新造輪子“;而全球研發(fā)人員的智慧也能一定程度共享,依靠全球社區(qū)的力量,更能建造一座完美的”通天塔“。

只是,正如上面提到的一樣,這一切的基礎,都應該是基于”信任“這個核心價值。

不管是 AntD 這種”好心辦壞事“,還是早前 Facebook 曾針對 React Native 設下的專利”陷阱“,都挫傷了社區(qū)對于項目的信任。

其結果,本來安心使用的客戶們倉皇出逃,尋找替代品,一切從頭再來,大量增加無效的重復建設的成本。

我們都說,現(xiàn)在你裝個 App,連許可協(xié)議和隱私協(xié)議都懶得看,都是一路下一步的,那人家遞給你的現(xiàn)成品,你還要拆開看看它有沒有害你,是不是太神經過敏了,也太強人所難了?

要想大家都舒服一點,那除非所有自認為擁抱開源的大公司,都更認真的對待自己在社區(qū)的角色,通過更嚴格的自律和自我審查,才能讓大家繼續(xù)安心用著你的產品,真正的為開源做出貢獻。

責任編輯:龐桂玉 來源: 51CTO技術棧
相關推薦

2018-12-25 22:25:22

開發(fā)者技能命令

2021-11-15 12:45:44

協(xié)同過濾算法架構

2021-11-23 10:50:29

關聯(lián)規(guī)則推薦推薦系統(tǒng)開發(fā)

2020-04-10 08:03:04

分布式鎖Redlock算法流行算法

2021-11-12 11:51:03

基于內容的推薦查詢推薦

2020-12-04 09:11:50

CTOAPI網關

2020-10-15 09:35:27

亂碼UTF-8GBK

2023-10-28 00:02:55

2015-02-13 10:42:31

前端工具Dreamweaver

2021-12-14 07:40:07

企業(yè)內部開源

2015-02-12 09:26:07

2022-02-17 08:54:44

Service開發(fā)Mybatis

2021-11-05 11:10:13

MyBatisSQL查詢

2020-03-30 17:20:54

B+樹SQL索引

2021-10-25 08:49:32

索引數據庫MySQL

2023-04-04 11:11:52

2009-10-28 09:14:43

員工分析軟件

2020-07-13 07:49:38

Kubernetes容器架構

2016-02-25 18:10:16

WiFi信號WiFi
點贊
收藏

51CTO技術棧公眾號