【新智元导读】导语:年仅23岁的斯坦福大学华人博士,修复了一个已有22年历史的bug。一夜之间在外网爆火,引得无数网友围观和赞赏。有人直呼,喜欢这个故事!
近日,又有一位华人小伙在外网爆火,原因是修复了一个存在22年的Bug。
自2002年以来,这个错误就一直潜伏在Firefox浏览器的核心代码中。
当时,这款应用程序还被称为Mozilla浏览器,处于其早期版本的阶段。
事实上,这个bug的存在已经如同Firefox浏览器的一部分一样久远。
这个问题不仅仅比Firefox浏览器自身的发布历史更早,而且已经伴随我们很长时间了。
早在2002年6月,在司法部针对微软的反垄断案件即将进入最终辩论阶段时,Adam Price在他的Mac电脑上使用当时被称为Mozilla软件的时候,不得不应对一个一直存在的问题——工具提示。
「如果我将鼠标悬停在工具栏链接上,并等待一秒钟,将会出现一个黄色小框,其中包含链接的描述信息。现在,如果我使用command-tab将Mozilla切换至后台,那么这个黄色小框将依然停留在前台。唯一摆脱它的方法就是再次将Mozilla切换到前台,并将鼠标移开工具栏链接。」此外,还存在一些与这个问题相关的其他错误,但Price确定了一个可以重复的错误情景。这个问题在过去几周、几个月、几年,甚至接近二十年的时间里,都被许多其他人所证实。
多年来,人们一直在检查该线程或者将其他错误标记为与该问题重复项。有时,这个问题似乎已经得到了修复,但程序员和评论者却发现它在不同版本中略有不同,或者之前的修复似乎是偶然的。有时,这个问题似乎也会在不同操作系统如Windows或Linux中出现。也有人不希望这个bug解决。在该问题的21周年之际,丹尼斯(denis)评论道:「我有点倾向于让它永远存在,感觉就像是过去的一个遗迹。」现在这个古老的问题已经不复存在,因为Bug 148624的修复已在九月初推送,这个修复已经包含在新的构建版本中。笔者特意尝试在一台尚未更新至118.0.1版本的Mac上的Firefox浏览器中重新复制工具提示问题,但却未能再次重现它。这次修复本身非常小巧,主要是添加了对文档是否具有焦点的检查,以确保工具提示的显示。修复这个长达二十多年bug的是华人Yifan Zhu。Zhu出生于1999年,而三年前人们刚发现这个bug。当Zhu开始研究这个问题时,他刚刚完成了斯坦福大学的本科和硕士学位。此时,他正在攻读电气工程博士学位,并受到本杰明·范·罗伊(Benjamin Van Roy)教授的指导。个人主页:https://fanzhuyifan.github.io/为Firefox的Tooltip Listener编写补丁的Yifan Zhu写信给Ars表示,他们首先在Linux上的Thunderbird中遇到了这个错误,屏幕上漂浮着看似随机的文本片段。在虚拟桌面之间频繁切换导致主题行漂浮在屏幕上,这非常烦人。Zhu学会了切换回Firefox或Thunderbird,并在切换回来之前移动光标。Yifan Zhu给Ars的信中说:他们首次遇到了这个问题是在运行Linux上的Thunderbird时,当在虚拟桌面之间频繁切换时,屏幕上会出现一些看似随机的文本片段,这真的很让人恼火。Zhu发现,要解决这个问题,就必须切换回Firefox或Thunderbird应用,然后在再次返回之前移动鼠标光标。因此,Zhu对这个问题越来越感兴趣,并着手进行研究,试图提交错误报告。然而,他开始感到担忧,因为这个bug已经存在了20多年,但却一直没有得到修复。因为这只是一个小小的外观问题,不会导致程序崩溃,所以很可能没有人会花时间修复它。Zhu很有动力并且知道如何编程,但是他在像火狐浏览器这样复杂的项目中零经验,并且以前从未为开源项目做出过贡献。然而这些困难并没有难到他,在他博士课程开始前的那个夏天,他写道:最终,Zhu提交了一个更新,使工具提示在Firefox失去焦点时显示,而不是在鼠标离开应用程序时。不久之后,Zhu收到了Emilio Cobos Álvarez的来信,Emilio改进了Zhu的方法,并协助将这个提交添加到代码库中。
虽然这个修复引入了一些新问题,但它也成功地解决了这个长期存在的错误。Cobos Álvarez称赞道:「他对Firefox的第一个贡献令人印象深刻!」在社交媒体上,Mastodon对Zhu的贡献进行了热烈庆祝,并感到十分地高兴。他感叹道,Bugzilla本身(bug报告工具)的存在时间甚至比bug还要长(截至8月已持续25年)。不是任何人都能做出伟大的承诺,但伟大的承诺可以来自任何地方。有些人甚至毫不犹豫地表示他们热爱这个故事,并随之而来的是大量的点赞和赞美。尽管有句话说得好,在你解决一个bug时,可能会引发更多bug的出现。然而,网友们对这位华人小伙的工作给予了非常高的赞誉。还有人感叹这就是开源的魅力,当你解决一个问题时候,所有人都能共享你的贡献,这是非常有意义的。https://arstechnica.com/gadgets/2023/10/22-year-old-firefox-tooltip-bug-fixed-in-a-few-lines-offering-hope-to-us-all/https://fanzhuyifan.github.io/