火爆外網(wǎng)!23歲華人博士修復(fù)22年歷史漏洞,網(wǎng)友:我喜歡這個故事
近日,又有一位華人小伙在外網(wǎng)爆火,原因是修復(fù)了一個存在22年的Bug。
自2002年以來,這個錯誤就一直潛伏在Firefox瀏覽器的核心代碼中。
當(dāng)時,這款應(yīng)用程序還被稱為Mozilla瀏覽器,處于其早期版本的階段。
事實上,這個bug的存在已經(jīng)如同F(xiàn)irefox瀏覽器的一部分一樣久遠(yuǎn)。
這個問題不僅僅比Firefox瀏覽器自身的發(fā)布?xì)v史更早,而且已經(jīng)伴隨我們很長時間了。
早在2002年6月,在司法部針對微軟的反壟斷案件即將進(jìn)入最終辯論階段時,Adam Price在他的Mac電腦上使用當(dāng)時被稱為Mozilla軟件的時候,不得不應(yīng)對一個一直存在的問題——工具提示。
「如果我將鼠標(biāo)懸停在工具欄鏈接上,并等待一秒鐘,將會出現(xiàn)一個黃色小框,其中包含鏈接的描述信息。現(xiàn)在,如果我使用command-tab將Mozilla切換至后臺,那么這個黃色小框?qū)⒁廊煌A粼谇芭_。唯一擺脫它的方法就是再次將Mozilla切換到前臺,并將鼠標(biāo)移開工具欄鏈接。」
這是Price在6月2日的描述。
此外,還存在一些與這個問題相關(guān)的其他錯誤,但Price確定了一個可以重復(fù)的錯誤情景。這個問題在過去幾周、幾個月、幾年,甚至接近二十年的時間里,都被許多其他人所證實。

BUG難以修復(fù)
多年來,人們一直在檢查該線程或者將其他錯誤標(biāo)記為與該問題重復(fù)項。
有時,這個問題似乎已經(jīng)得到了修復(fù),但程序員和評論者卻發(fā)現(xiàn)它在不同版本中略有不同,或者之前的修復(fù)似乎是偶然的。

有時,這個問題似乎也會在不同操作系統(tǒng)如Windows或Linux中出現(xiàn)。

也有人不希望這個bug解決。在該問題的21周年之際,丹尼斯(denis)評論道:「我有點傾向于讓它永遠(yuǎn)存在,感覺就像是過去的一個遺跡。」

現(xiàn)在這個古老的問題已經(jīng)不復(fù)存在,因為Bug 148624的修復(fù)已在九月初推送,這個修復(fù)已經(jīng)包含在新的構(gòu)建版本中。

筆者特意嘗試在一臺尚未更新至118.0.1版本的Mac上的Firefox瀏覽器中重新復(fù)制工具提示問題,但卻未能再次重現(xiàn)它。
這次修復(fù)本身非常小巧,主要是添加了對文檔是否具有焦點的檢查,以確保工具提示的顯示。
華人小伙修復(fù)BUG
修復(fù)這個長達(dá)二十多年bug的是華人Yifan Zhu。
Zhu出生于1999年,而三年前人們剛發(fā)現(xiàn)這個bug。
當(dāng)Zhu開始研究這個問題時,他剛剛完成了斯坦福大學(xué)的本科和碩士學(xué)位。此時,他正在攻讀電氣工程博士學(xué)位,并受到本杰明·范·羅伊(Benjamin Van Roy)教授的指導(dǎo)。

個人主頁:https://fanzhuyifan.github.io/
為Firefox的Tooltip Listener編寫補丁的Yifan Zhu寫信給Ars表示,他們首先在Linux上的Thunderbird中遇到了這個錯誤,屏幕上漂浮著看似隨機(jī)的文本片段。
在虛擬桌面之間頻繁切換導(dǎo)致主題行漂浮在屏幕上,這非常煩人。Zhu學(xué)會了切換回Firefox或Thunderbird,并在切換回來之前移動光標(biāo)。
Yifan Zhu給Ars的信中說:他們首次遇到了這個問題是在運行Linux上的Thunderbird時,當(dāng)在虛擬桌面之間頻繁切換時,屏幕上會出現(xiàn)一些看似隨機(jī)的文本片段,這真的很讓人惱火。
Zhu發(fā)現(xiàn),要解決這個問題,就必須切換回Firefox或Thunderbird應(yīng)用,然后在再次返回之前移動鼠標(biāo)光標(biāo)。
因此,Zhu對這個問題越來越感興趣,并著手進(jìn)行研究,試圖提交錯誤報告。
然而,他開始感到擔(dān)憂,因為這個bug已經(jīng)存在了20多年,但卻一直沒有得到修復(fù)。因為這只是一個小小的外觀問題,不會導(dǎo)致程序崩潰,所以很可能沒有人會花時間修復(fù)它。
Zhu在信中寫道:除非我親自來解決。
Zhu很有動力并且知道如何編程,但是他在像火狐瀏覽器這樣復(fù)雜的項目中零經(jīng)驗,并且以前從未為開源項目做出過貢獻(xiàn)。
然而這些困難并沒有難到他,在他博士課程開始前的那個夏天,他寫道:
「那么,為什么不呢?」
最終,Zhu提交了一個更新,使工具提示在Firefox失去焦點時顯示,而不是在鼠標(biāo)離開應(yīng)用程序時。

網(wǎng)友贊不絕口
不久之后,Zhu收到了Emilio Cobos álvarez的來信,Emilio改進(jìn)了Zhu的方法,并協(xié)助將這個提交添加到代碼庫中。
雖然這個修復(fù)引入了一些新問題,但它也成功地解決了這個長期存在的錯誤。Cobos álvarez稱贊道:「他對Firefox的第一個貢獻(xiàn)令人印象深刻!」
在社交媒體上,Mastodon對Zhu的貢獻(xiàn)進(jìn)行了熱烈慶祝,并感到十分地高興。
他感嘆道,Bugzilla本身(bug報告工具)的存在時間甚至比bug還要長(截至8月已持續(xù)25年)。


有人贊嘆了Zhu的英雄之旅:

不是任何人都能做出偉大的承諾,但偉大的承諾可以來自任何地方。
有些人甚至毫不猶豫地表示他們熱愛這個故事,并隨之而來的是大量的點贊和贊美。

盡管有句話說得好,在你解決一個bug時,可能會引發(fā)更多bug的出現(xiàn)。然而,網(wǎng)友們對這位華人小伙的工作給予了非常高的贊譽。

還有人感嘆這就是開源的魅力,當(dāng)你解決一個問題時候,所有人都能共享你的貢獻(xiàn),這是非常有意義的。




























