幹掉 IE6!

IE6 是如何淹沒在時代的長河之中的?

萬萬沒想到,對於 YouTube 而言,IE6 的生死僅在其 Web 團隊於十年前的一次午餐間就被決定了。

幹掉 IE6!

作者 | CHRIS ZACHARIAS

譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

YouTube驚人的增長帶來的後果喜憂參半,很多背後的故事都被粉飾的太平掩蓋了。今天我想講述一個的故事,那是在10年前,YouTube內部的一個由Web開發人員組成的小團隊密謀幹掉IE6,並希望僥倖逃脫。

想要放棄 IE6 的緣由

我不記得究竟發生了什麼事情,只記得我們的Web開發團隊在YouTube的餐廳裡吃午餐的時候突然密謀幹掉IE6。也許是因為當時我提交了一個CSS樣式表,其在某個不完全支持的HTML上使用了屬性選擇器。任何Web開發人員都會認為不支持該選擇器的瀏覽器應當忽略它。然而,舊版本的IE卻並非如此。在非常特殊的條件下,在IE中針對不受支持的HTML元素使用屬性選擇器會創建一個內部遞歸,這會引發瀏覽器的崩潰,在極端的情況下還會導致電腦藍屏死機。我們的軟件工程師感覺很無辜,他們只是寫了一個帶有空src屬性的標籤。我們團隊中沒有人知道在IE的早期版本中,瀏覽器會為空的src屬性指定根路徑“/”。突然之間,

標籤表現得就像<iframe>一樣,加載我們的主頁及其所有相關的資源可能會引發指數級擴展的遞歸循環。每當一個空的圖像標籤加載到主頁時,我們就需要全員出動,在我們的服務器崩潰之前,刻不容緩地找到有問題的代碼並替換掉。/<iframe>

無論當時的情況如何,總之整個過程很殘酷,此外就是與IE6有關。對我們網站開發團隊來說,一直以來IE6都是一個禍根。每個主要衝刺,我們都需要花費1-2周的時間,修復IE6破壞的新UI。儘管苦不堪言,但我們仍然需要支持IE6,因為我們的用戶可能無法升級,或者可能在特定的公司工作。當時,我們的用戶群中有18%是IE6用戶。我們明白我們無法放棄對IE6的支持。然而,那天當我們坐在咖啡廳裡,想起過去的幾天裡我們只睡了幾個小時,瞬間感覺對這些用戶的同情化為烏有。我們開始集體幻想如何對IE6展開報復。有一個想法突然閃現,迅速吸引了我們所有人的注意。與其徹底放棄對IE6的支持,還不如來一次反殺呢。用戶會做何反應?他們會反抗YouTube嗎?他們會像過去那樣,給我們團隊發送威脅的信件嗎?還是說他們會突然變成現代瀏覽器的倡導者?於是,我們做起了白日夢:世界各地坐在小格子間裡的工作人員突然發現因為一些“業務”的原因需要升級瀏覽器。爺爺奶奶會把懂技術的孫子們抓來,幫他們修理“YouTube”。在這次“療傷”會議上,我們擬定了一個實際的計劃,一個很快我們就意識到我們需要立即執行的一個獨特的計劃。

YouTube放棄對IE6的支持的方法論

這個計劃很簡單。我們會在視頻播放器上面放一個小橫幅,只向IE6用戶顯示。上面寫著“很快我們就會停止對您的瀏覽器的支持。請升級到一個更現代的瀏覽器。”我們還會在文本旁邊顯示主流瀏覽器當前版本的鏈接,包括Chrome、Firefox、IE8以及Opera。我們故意把這個文本寫得很模糊,而且也完全沒有標明具體的時間。我們希望這會對用戶造成足夠的威脅,迫使他們升級,而實際上我們並不需要做任何實際的停止支持的計劃。如果用戶想稍後再處理,他們也可以關閉這個警告。我們的代碼寫得非常低調,所以不會引起任何時刻監視我們的人的注意。除了Web開發團隊之外,沒有人會經常使用IE6,因此我們知道不太可能有人注意到我們的預備環境中的橫幅。我們甚至還把為國際用戶提供翻譯文本的工作延後,免得負責翻譯的人為了挖掘該橫幅的動機而無意間曝光我們的行為。接下來,我們只需要悄無聲息地將代碼部署到生產環境中。

幹掉 IE6!

2009年YouTube放棄對IE6的支持的橫幅廣告

我們中的一小部分人加入YouTube的時機非常有意思……那正是在YouTube被Google收購之後幾個月,在Google還沒來得及將YouTube深入整合到Google之前。早期的YouTube工程師屬於這片領土,最初他們很猶豫是否應該順從Google的基礎設施和規範。由於他們喜歡灰帽黑客,開快車,喝高度數的威士忌,而且很多人還穿了耳洞,有紋身,甚至還有不太嚴重的被捕記錄,因此很多人曾在Google的面試中被拒。最後,他們都加入了YouTube,之後他們不顧一切地工作以滿足指數級增長的流量的需要,同時不得不經常與那些鼓吹Google Video很快會幹掉YouTube的評論家們抗爭。在被Google收購後,很多工程師認為他們被拋棄了,但是他們把這種悲痛化作最終走向成功的動力。

為了在整合到Google期間鞏固他們對YouTube代碼庫的權威,早期工程師創建了一套名為“OldTuber”的專有權限。OldTuber授權的一套權限可以完全繞過新的面向Google的代碼執行政策,直接將代碼提交到YouTube代碼庫,最多隻需要找個人來審核代碼。不要求代碼的可讀性,也不要求無需詳盡的測試。更不要求維護代碼覆蓋率。但如果你通過不正當地使用OldTuber搞壞了網站,那麼你就會立即喪失這些權限,還有可能丟工作。所以,你必須乖乖地,永遠不要破壞網站。我們的老闆,他自己就是早期的YouTube工程師,他費盡心思讓網絡開發團隊討好早期的YouTube工程師。在他的努力之下,我們中的一些人終於拿到了OldTuber身份,雖然他們並不是當初那個團隊的一員。就好像走在大街上,有人誤把我們當成了代客泊車的服務員,把他們法拉利的車鑰匙交給了我們。姑且不論好壞,我們也不是乖乖地把鑰匙還回去的人。我們看到我們的面前擺著一次機會,我們可以利用這次機會重創IE6,而且過了這個村可就沒這個店了。我們之中最為“叛逆”的人是一位說話很溫和的克羅地亞網絡開發人員,他堅持以他的名義提交代碼,他將之視作個人榮譽的徽章,我們其餘人則利用我們的OldTuber身份批准代碼審查。代碼順利地合併到了生產環境中,幾天後我們的橫幅就開始顯示了。

第一個找上門的人是公關團隊的負責人。他是一個聰明,衣冠楚楚的男人,總是充滿活力和熱情,除了這次——這次他異常地生氣。他像往常一樣走了進來,找到主流科技新聞出版商的電子郵件,然後問我們為什麼這個星球上的第二大網站威脅要切斷其近五分之一用戶群的訪問。對我們來說幸運的是,那篇新聞稿的定論是:這對互聯網來說是一件好事。在他們看來,YouTube正致力於為所有用戶提供更快、更安全的網絡體驗。整個公關團隊都用Mac運行Chrome,所以他們甚至沒有親眼看到我們的所作所為,更不用說向媒體發表任何評論了。他們絲毫不知情。我們熱切地希望告訴他們這一切都是我們發起的,我們還想幫他們制定一些談話的要點,以便擴大他們的定論。公關團隊的這位負責人對於能夠掌握整件事情的原委而感到非常滿意,於是,他警告我們下次在事先不告知他的情況,不能再做這樣的事情,然後就轉身離開了。他不希望這樣偉大的公關機會再次溜走。

接下來是律師。兩位資深律師氣勢洶洶地衝到我們的辦公桌前,要求我們立刻刪除那條橫幅。我們解釋說,我們需要讓SRE們做緊急推送,這至少需要幾個小時才能完成。其中一位律師非常沮喪地說:“你為什麼要把Chrome放在第一位?”我感到很困惑,我解釋說我們並沒有優先考慮Chrome。我們的老闆(也有份參與我們的密謀)是一位思慮周全的人,他建議我們按照隨機順序顯示瀏覽器,然後為每個訪問者的cookie隨機種子,這樣UI就不會在頁面之間跳轉,而我們也是按照他說的做的。事情非常湊巧,這兩位律師仍然在使用IE6訪問某些遺留的系統,並且他們的隨機種子最終都將Chrome放在了第一位。因此,他們擔心為Chrome提供優惠的待遇可能會引起歐洲監管機構的注意,因為他們在時刻尋找任何反競爭行為。雖然律師們承認,我們所做的一切並不會升級到這種程度的犯罪行為,但是我們在他們眼皮底下做了這樣的事,他們當然不高興了。我反覆清除了我的IE6中的cookie,證明了每次刷新時瀏覽器的順序都會被打亂。兩位律師對我們的演示很滿意,於是他們也迅速退回到他們的辦公桌前,沒有任何進一步的擔憂。

我以為下一個人會是工程經理,尤其是想到我們那麼明顯地濫用OldTuber權限,他們肯定會非常憤怒。然而,奇怪的是那天並沒有人來。第二天,一小撮工程師在網上看到了消息之後,前來祝賀我們推出橫幅廣告,僅此而已。我問我的老闆,是否有人反擊他,他聳了聳肩,表示沒有人找他麻煩。照目前的情形來看,我們相安無事。面對這種情況,我感到很驚訝,也很難理解,我向一位經理探了探口風,問他對橫幅發佈的看法。他回答說:“哦,我以為你們只是複製了Google Docs提出的banner。”我很困惑。Google Docs怎麼能與我們相提並論呢?我在IE6中打開了Google Docs,果然,其頂部顯示的橫幅與我們的非常相像。他們的橫幅請求用戶升級,以避免某些功能無法正常使用——措辭與我們的非常類似。

在處理一些共享的Javascript庫時,我遇到了Google Docs團隊中的一些工程師。我找到了其中一位,詢問為何他們決定推出自己的 banner。他向我解釋說,一直以來,他們都很想放棄對IE6的支持,但是他們的經理也因為相同的理由不同意他們這麼做。他們的一位工程師在測試IE6的時候,很快就注意到了YouTube banner,並立刻找到了他們經理,說明他們也應該這麼幹。此後不久,GoogleDocs工程師就推出了他們自己的IE6 banner,並推到了生產環境中,因為他們以為我們已經獲得了領導層的認可。而絕大多數Google員工開始討論IE6 banner,是因為一些團隊開始在Email中問他們是否可以像Google Docs那樣停止對IE6的支持。幸運的是,其中也包括我們的許多經理。不可思議的事情發生了,我們以某種方式繞過了檢測,成為Google內部IE6 banner的發起者。

由於像我們這樣大規模、擁有如此眾多用戶的媒體網站放棄IE6支持的消息傳播得非常迅速,最後YouTube的工程管理層終於找到了自己的團隊,問他們為什麼要決定放棄對IE6的支持。當意識到事情的原因後,他們開始抓住我們的老闆詢問細節,最後不情願地得出結論:他們認為我們的手段是正當的。除了YouTube、Google Docs和其他幾個發佈IE6 banner的Google網站之外,Google開始允許其他所有網站自行添加橫幅。結果IE6 banner像雨後春筍般地出現在各處。在一個月內,YouTube上IE6用戶數量減少了一半,全球IE6流量下降了10%,而所有其他瀏覽器的數量則有所增加。這個結果比我們的Web開發團隊預想得還要好。

幹掉 IE6!

歷年來不同IE瀏覽器版本的市場份額(https://www.w3counter.com/trends)

我們想盡辦法逃脫了監管,成功地幹掉了IE6,而且還不用面臨任何嚴肅的糾正措施。很少有人甚至知道我們參與其中,而那些確實參與其中的人也不想引起注意,更不想鼓勵類似的行為。有一次,在舊金山的一個啤酒花園裡,我們的老闆讓我們發誓再也不會這樣做了。我們都同意了,既然IE6的訪問量已經降低到了個位數,那麼以後再也不用偷偷地將任何代碼帶進生產環境中了。

網友說

在回顧這一事件之際,網友們對此也展開了激烈的討論:

評論1:天啊,好精彩的故事。

無論工程師們怎樣秘密地計劃這件事,一旦發佈,媒體就能立刻注意到。

但是,最棒的部分就是Google的工程師們看到橫幅後的第一反應是:“我們也應該這麼幹”(儘管他們也需要獲得領導的授權才能有所動作,但有了YouTube的先例後,他們就可以說:“你看YouTube肯定經過了仔細的研究,才決定這麼幹的”,如此一來,獲取授權就容易多了)。

你們打了漂亮的一戰!

我不知道為什麼你們沒有被開除。我指的是所有人,包括那些以前設置了“OldTuber”權限的那些人。

但是……一切都很完美!這個故事應該銘記史冊,聽上去像是20多年前的那幫程序員做這件事時一無所求,只為了心中的正義(而不是為了工作的要求)。我原以為,這種行為在現在這個更加專業化的行業中不太可能發生了。

評論2:關於他們為什麼沒有被開除,我能想到兩個原因:

  • 他們贏了這場賭局。顯然,時機已經成熟,所以這樣做對組織並沒有什麼實際的負面影響,所以不需要懲罰任何人。
  • OldTubers們是團隊中最有經驗的骨幹。開除任何擁有該權限的人都可能對整個團隊的技術能力帶來毀滅性的打擊。真要這麼幹YouTube就死了。

後一點是個非常強大的交涉條件,許多工程師甚至都沒意識到自己有這個條件。比如,我的團隊有許多難度非常大的工作崗位(我們對這些崗位很挑剔,而且說實話我們的面試流程很糟糕)。因此,開除一個人的成本非常高,卻無法帶來相應的好處。也許那個人做了過分的事情,但這件事還會再次發生嗎?我知道我的團隊中的一些人並不是最優秀的,但還不至於到沒有他們更好的地步。

原文:http://blog.chriszacharias.com/a-conspiracy-to-kill-ie6

本文為 CSDN 翻譯,轉載請註明來源出處。


分享到:


相關文章: