2002年6月,Ubuntu创始人Mark Shuttleworth首次体验了太空之旅,与此同时,美国司法部针对微软的反垄断案正在进入最终辩论阶段,而Adam Price使用当时的Mozilla浏览器(运行在Mac上)遇到了一个持久工具提示的问题。
他在6月2日写道:“如果我将鼠标悬停在工具栏链接上并稍作等待,一个带有链接描述的小黄框会出现。如果我现在用command-tab将Mozilla切换到后台,那个小黄框仍然停留在前台。要想消除它,唯一的方法就是将Mozilla重新放到前台,再将鼠标移出工具栏。”在随后的几周、几月、几年,甚至超过二十年的时间里,许多其他人确认了这个问题——尽管还有其他与之相关的一些问题,但Price确实提出了一个可重复的问题。
在这些年里,人们时不时地查看这个问题线程或者将其他问题标记为此问题的重复内容。这个问题时而看似被解决了,只是为了后来让代码编写者和评论者发现,在不同版本中问题略有变化,或者先前的修复看起来似乎是无意中进行的。有时问题似乎也出现在Windows或Linux上。一名评论者denis在问题存在21年后指出:“我有点倾向于让它永远存在下去。它感觉就像是一个过去的遗迹。”
然而,这个遗迹现在已经消失了,因为在9月初对Bug 148624的修复被推送出去,修复体现在119版本的构建中。我尝试在我那台尚未更新至118.0.1版本的Mac上的Firefox浏览器中重现这个工具提示,但我无法亲自体验这一传统过程。这个补丁体积很小,只在工具提示的显示代码中增加了一个检查文档是否处于焦点的检查。
修复Firefox的Tooltip Listener的Yifan Zhu表示,他们首次在Linux的Thunderbird中遇到了这个bug,描述为“我的屏幕上飘浮着看起来随机的文本段落。”频繁在虚拟桌面之间切换让主题行浮动在他们的屏幕上,这“极为恼人”。Zhu学会了在切换前先切回Firefox或Thunderbird并移动光标。
但这个问题渐渐引起了他们的注意,因此他们开始研究,并试图提交bug。Zhu写道:“令我震惊的是,我发现这个bug报告已经存在了超过20年,而且还没有得到解决。”因为它“是一个不会引起崩溃的小‘外观’问题”,所以有很大的可能性没人会修复它——“除非我自己做。”这个观点。
虽然Zhu有动力,知道如何编程,但他们“在复杂得像Firefox浏览器这样的项目中没有任何经验”,并且“之前从未为开源项目做过贡献”。但这是在他们攻读博士学位的那个夏天。“那么,为什么不尝试一下呢?”
他们起步并不顺利。“我只是在整个代码库中搜索‘工具提示’,检查可能的候选内容,并插入调试打印语句以追踪执行流程,”Zhu写道。这最终带来了答案。“当鼠标悬停在某个元素上时,会启动一个定时器来显示工具提示。定时器将在一个鼠标移出事件上被取消,但是当我使用键盘快捷键切换窗口或虚拟桌面时,Firefox并未接收到它。”
Zhu提交了一个修改,将工具提示的显示依赖改为基于Firefox是否失去焦点,而非鼠标是否离开应用程序。在接下来的几小时里,他们收到了Emilio Cobos Álvarez的消息,后者优化了Zhu的方案,并帮助将修改合并到代码库中。尽管修复带来了一些新的问题,但这些新问题也在得到处理。
Zhu出生于1999年,仅在这个bug提交的三年后。在他们解决它时,他们刚刚完成了在斯坦福大学的本科和硕士学位学业。现在,他们正开始攻读电气工程博士学位。他们只能猜测为什么这个问题持续了他们大半生的时间。他们的猜测是,它既是一个外观上的不便,也很难复现,这使得其他更严重的问题始终排在更前面。
Cobos Álvarez,引导Zhu的修复成为了一个提交,给我们写道“这个区域相当棘手”,鉴于各种Firefox配置以及它们如何响应不同的操作系统。找到一个优雅地处理Mozilla应用失焦而没有操作系统输入的解决方案是棘手的。“对于他的第一个Firefox贡献来说,相当了不起!”
在社交媒体上,特别是你可能期望在Mastodon实例上找到对Mozilla的XML用户界面语言有意见的人,都为此欢呼。有些人表达了他们对Bugzilla(一个追踪bug的工具)比这个bug自身存在还要久(截至8月份已经有25年)的惊讶。一些人提出,这个修复对抗了“stalebots”(一种标记旧的、未解决问题以便删除的机器人)的盛行。还有人为此编排了一整个英雄之旅的故事:
伟大的提交不是任何人都能做出的,但伟大的提交可以来自任何地方。
#免责声明#
①本站部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
②若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
③如果本站有侵犯、不妥之处的资源,请联系我们。将会第一时间解决!
④本站部分内容均由互联网收集整理,仅供大家参考、学习,不存在任何商业目的与商业用途。
⑤本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与任何商业和非法行为,请于24小时之内删除!