原文地址:blog.chriszacharias.com/a-conspirac…
发布时间:2019年5月1日
YouTube令人难以置信的增长带来的苦乐参半的后果是,许多故事将在所有的新油漆层下消失。这就是为什么我想讲述十年前,一个小的网络开发团队如何从YouTube内部密谋杀死IE6,并逃之夭夭的故事。
我不记得是什么具体的触发事件,导致我们的网络开发团队在YouTube食堂吃午饭的时候制定了杀死IE6的计划。也许是那次我推出了一个CSS样式表,在一个半支持的HTML元素上包含了一个属性选择器。任何一个合理的Web开发人员都会期望这一点会被不符合任务要求的浏览器所忽略。而旧版的IE浏览器却不是这样的。在非常特殊的情况下,IE中不支持的HTML元素上的属性选择器会产生内部递归,最好的情况是导致浏览器崩溃,最坏的情况是触发蓝屏死亡。也可能是我们的一位软件工程师第一百次无辜地推送了一个带有空src属性的<img>标签。没人能够预料到加入团队的人知道,在IE的早期版本中,浏览器会对空src属性加载根路径"/"。<img>标签会突然表现得像一个<iframe>,在可能成为一个指数级扩展的递归循环中加载我们的主页和所有依赖的资源。每当一个空的图片标签出现在主页上时,我们都会紧急查找并替换违规代码,以免我们的服务器被融化成纸片。
不管当时的事件是什么,它都是残酷的,而且与IE6有关。IE6一直是我们网站开发团队生存的祸根。每一个重要的冲刺周期,至少有一到两周的时间要用来修复IE6中出现的新UI。尽管如此痛苦,我们还是被告知必须继续支持IE6,因为我们的用户可能无法升级,或者可能在被锁定的公司工作。当时IE6用户占我们用户群的18%左右。我们明白,我们不能随便放弃对它的支持。然而,坐在那个食堂里,由于前几天每人只睡了几个小时,我们对这些用户的同情心已经完全消失了。我们开始集体幻想如何对IE6进行报复。一个想法浮出水面,迅速吸引了大家的注意力。与其直接放弃对IE6的支持,如果我们只是威胁要这样做呢?用户会有什么反应?他们会反抗YouTube吗?他们会像过去一样给我们的团队邮寄死亡威胁吗?或者他们会突然变成现代浏览器的大声拥护者?我们公开地做着白日梦,梦见全世界的小隔间工人突然发明了需要升级浏览器的创造性 "商业 "理由。爷爷奶奶会挟持他们精通技术的孙子,要求他们修复他们的 "YouTubes"。原本只是一次团队治疗的会议,后来却变成了一个实际的计划,我们很快意识到我们有独特的优势来执行这个计划。
这个计划非常简单。我们会在视频播放器上方放一个小横幅,只对IE6用户显示。它将写道:"我们将很快淘汰对您的浏览器的支持。请升级到这些更现代的浏览器之一。" 文本旁边会有当前主要浏览器版本的链接,包括Chrome、Firefox、IE8以及最终的Opera。这段文字故意含糊不清,时间线也完全没有确定。我们希望它的威胁性足以激励最终用户升级,而不强迫我们承诺任何实际的废弃计划。如果用户想忽略它或者以后再处理它,他们可以关闭这个警告。这段代码被设计得尽可能的微妙,这样就不会引起任何监控我们的检查人员的注意。除了网络开发团队之外,没有人经常使用IE6,所以我们知道不太可能有人会注意到我们的横幅出现在暂存环境中。我们甚至推迟了为国际用户翻译文本的时间,以便翻译人员在询问额外的上下文时不会无意中发现我们在做什么。接下来,我们只需要一种方法将代码滑入生产环境而不被任何人发现。
2009年YouTube上的IE6废弃旗帜
事实证明,我们中的少数人是在一个有趣的时间进入YouTube的......在YouTube被谷歌收购几个月后,但在谷歌开始将YouTube深度整合到他们更大的组织之前。早期的YouTube工程师们理所当然地有自己的领地,一开始对适应谷歌的基础设施和规范感到犹豫不决。由于他们对灰帽黑客、快车和烈性威士忌的嗜好,以及不常见的穿孔、纹身和轻微的逮捕记录,许多人在之前的谷歌面试中被拒绝。最终在YouTube,他们发现自己为了保持领先于指数级增长的流量而伤透了脑筋,同时又不得不不断抵御批评者解释谷歌视频如何会马上杀死他们。当他们被收购进入谷歌时,这些工程师中的许多人已经开始将他们的弃儿身份视为他们最终成功的关键因素。
为了在并入谷歌的过程中巩固他们对YouTube代码库的权威,早期的工程师们创建了一个名为 "OldTuber "的专门权限集。OldTuber赋予你完全绕过面向Google的新代码执行政策的能力,使任何持有它的人都可以直接向YouTube代码库提交代码,而任何人都只能对代码进行最粗略的审查。不需要代码的可读性。不需要详尽的测试。不需要维护代码覆盖率。如果你因为不当挥舞OldTuber身份而破坏了网站,那就会被扣在你的头上,你会立即失去这个特权,甚至是你的工作。所以你只需要做一个好公民,永远不要破坏网站。我们的老板,本身就是一个早期的YouTube工程师,他不惜一切代价讨好网站开发团队和其他早期YouTube工程师。在他的努力下,我们几个人最终发现自己拥有了OldTuber的身份,尽管从来没有成为原始团队的一员。就好像我们刚走在街上,就有人把我们误认为是代驾,把他们的法拉利钥匙交给了我们。无论好坏,我们都不是那种把钥匙交回去就走人的人。我们看到了一个永久削弱IE6的机会摆在我们面前,我们可能再也得不到了。如果这一切出了问题,我们中的一些人肯定会被解雇。我们最叛逆的网络开发者,一个原本说话很温柔的克罗地亚人,坚持用他的名字来检查代码,作为个人荣誉的象征,而我们其他人则利用我们的OldTuber身份来批准代码审查。代码合并到生产中,几天后我们的banner就上线了。
第一个来到我们办公桌前的是公关团队的负责人。他是一个聪明、帅气的男人,总是冒着活力和热情。除了这次。这一次,他一反常态地挑起了刺。他在原本正常的一天上班,却发现各大科技新闻刊物都发来了邮件,询问为什么全球第二大网站威胁要切断近五分之一用户的访问。幸运的是,这些出版物已经确定了一种说法,即这是互联网的重大利益。在他们的呼吁下,YouTube正带头为所有用户提供更快、更安全的网络体验。整个公关团队的Mac电脑都在运行Chrome浏览器,他们甚至无法看到我们所做的事情,更不用说向媒体发表任何评论了。他们完全不知情。我们急切地告诉他们我们所推出的一切,并帮助他们制作必要的谈话要点,以扩大媒体已经建立的叙事。公关团队负责人很满意自己可以重新回到故事的前面,他转身警告我们,在没有告诉他之前,千万不要做这样的事情。他不想再让这样的大好公关机会溜走。
接下来是律师。两名资深律师冲到我们的办公桌前,一副按捺不住的慌乱状态。他们立即要求我们撤掉横幅。我们解释说,我们需要SREs进行紧急推送,至少需要几个小时才能完成。其中一位律师沮丧地问:"为什么你们要把Chrome放在第一位?" 我困惑地解释说,我们并没有把Chrome放在任何优先级。我们的老板和我们一起参与了这个阴谋,他贴心地建议我们随机排列浏览器的顺序,然后为每个访问者设置随机种子,这样用户界面就不会在不同页面之间跳来跳去,我们已经这样做了。运气好的是,这两位律师仍然使用IE6访问某些遗留系统,而且最后都用随机种子将Chrome放在了第一位。他们担心的是,如果对Chrome浏览器给予优惠待遇,我们可能会刺痛已经在寻找任何反竞争行为的欧洲监管机构的耳朵。虽然律师们承认,我们所做的任何事情都不可能达到这种程度,但这是在他们眼皮底下发生的,他们并不领情。我反复清除了我的IE6副本中的cookies,并展示了每次刷新时浏览器的重新洗牌。律师们满足于演示,很快就退回了办公桌,没有再顾虑。
我以为下一个来的人是工程经理,而且他们会最愤怒,因为我们明显地滥用了OldTuber的身份。可疑的是,那天没有人过来。第二天,有少数工程师在看了网上的文章后,顺便来祝贺我们的横幅推出,但也仅此而已。我问老板有没有受到什么打击,他耸耸肩,表示还没有人把他拉到一边。看来,目前我们已经无事可做了。惊讶之余,我又无法理解,于是我探问其中一位经理,他对这次的横幅发布有什么看法。他回答说:"哦,我只是觉得你们抄袭了Google Docs打出的横幅。" 我当时就懵了。Google Docs怎么会在这个问题上打败我们呢?我用IE6打开Google Docs,果然,顶部显示了一个很像我们的横幅。它恳求他们的用户升级,以避免破坏功能,用的术语和我们的类似,很模糊。
我在研究一些共享Javascript库的时候,遇到了Google Docs团队的几个工程师。我找到了其中一位,问他们是如何得出推出自己的横幅的决定的。他向我解释说,他们一直想废弃IE6的支持,但他们的经理不让他们这么做,原因和我们一直听到的一样。他们的一位工程师在IE6上线后不久就注意到了YouTube的横幅,并立即把它拿给他们的经理,作为他们为什么也应该这样做的证据。此后不久,Google Docs的工程师们就制作了他们自己的IE6横幅,并将其投入生产,大概是错误地认为我们已经做了大量的工作,并获得了所有必要的批准。很多Googlers第一次听到关于IE6横幅的讨论是在电子邮件主题中,其他团队开始询问是否可以像Google Docs那样废弃IE6。幸运的是,这其中包括我们的许多经理。令人惊奇的是,我们以某种方式绕过了谷歌内部对IE6横幅的检测。
最后,YouTube的工程管理部门确实问过自己,最终是如何做出废弃IE6的决定的,因为它发生得如此之快,而且对于我们这样一个拥有如此广泛用户群的媒体网站来说,似乎明显为时过早。一旦他们意识到发生了什么,他们就向我们的老板逼问细节,努力解决我们行为的后果,并勉强得出结论:目的是对的。在YouTube、Google Docs和其他几个Google属性发布IE6横幅之间,Google已经允许网络上所有其他网站添加自己的横幅。IE6横幅突然开始到处出现。在一个月内,我们的YouTube IE6用户群减少了一半,全球IE6的流量下降了10%以上,而其他浏览器的流量都有相应的增加。这个结果比我们的网站开发团队预想的还要好。
不同IE浏览器版本的历史份额(www.w3counter.com/trends)
我们以某种方式逃脱了我们杀死IE6的计划,而没有面临任何有意义的纠正行动。很少有人知道我们参与其中,而那些知道的人,也不想引起人们的注意,或者冒着鼓励类似行为的风险。在旧金山的一个啤酒花园里,我们的老板使劲眨着眼睛,让我们发誓再也不做这样的事情。我们同意了,为IE6下降到个位数的百分比干杯,并且再也没有在生产中偷偷地做任何事情。
通过www.DeepL.com/Translator (免费版)翻译