火爆外網(wǎng)!23歲華人博士修復(fù)22年歷史漏洞,網(wǎng)友:我喜歡這個(gè)故事
近日,又有一位華人小伙在外網(wǎng)爆火,原因是修復(fù)了一個(gè)存在22年的Bug。
自2002年以來,這個(gè)錯誤就一直潛伏在Firefox瀏覽器的核心代碼中。
當(dāng)時(shí),這款應(yīng)用程序還被稱為Mozilla瀏覽器,處于其早期版本的階段。
事實(shí)上,這個(gè)bug的存在已經(jīng)如同F(xiàn)irefox瀏覽器的一部分一樣久遠(yuǎn)。
這個(gè)問題不僅僅比Firefox瀏覽器自身的發(fā)布?xì)v史更早,而且已經(jīng)伴隨我們很長時(shí)間了。
早在2002年6月,在司法部針對微軟的反壟斷案件即將進(jìn)入最終辯論階段時(shí),Adam Price在他的Mac電腦上使用當(dāng)時(shí)被稱為Mozilla軟件的時(shí)候,不得不應(yīng)對一個(gè)一直存在的問題——工具提示。
「如果我將鼠標(biāo)懸停在工具欄鏈接上,并等待一秒鐘,將會出現(xiàn)一個(gè)黃色小框,其中包含鏈接的描述信息?,F(xiàn)在,如果我使用command-tab將Mozilla切換至后臺,那么這個(gè)黃色小框?qū)⒁廊煌A粼谇芭_。唯一擺脫它的方法就是再次將Mozilla切換到前臺,并將鼠標(biāo)移開工具欄鏈接。」
這是Price在6月2日的描述。
此外,還存在一些與這個(gè)問題相關(guān)的其他錯誤,但Price確定了一個(gè)可以重復(fù)的錯誤情景。這個(gè)問題在過去幾周、幾個(gè)月、幾年,甚至接近二十年的時(shí)間里,都被許多其他人所證實(shí)。
BUG難以修復(fù)
多年來,人們一直在檢查該線程或者將其他錯誤標(biāo)記為與該問題重復(fù)項(xiàng)。
有時(shí),這個(gè)問題似乎已經(jīng)得到了修復(fù),但程序員和評論者卻發(fā)現(xiàn)它在不同版本中略有不同,或者之前的修復(fù)似乎是偶然的。
有時(shí),這個(gè)問題似乎也會在不同操作系統(tǒng)如Windows或Linux中出現(xiàn)。
也有人不希望這個(gè)bug解決。在該問題的21周年之際,丹尼斯(denis)評論道:「我有點(diǎn)傾向于讓它永遠(yuǎn)存在,感覺就像是過去的一個(gè)遺跡。」
現(xiàn)在這個(gè)古老的問題已經(jīng)不復(fù)存在,因?yàn)锽ug 148624的修復(fù)已在九月初推送,這個(gè)修復(fù)已經(jīng)包含在新的構(gòu)建版本中。
筆者特意嘗試在一臺尚未更新至118.0.1版本的Mac上的Firefox瀏覽器中重新復(fù)制工具提示問題,但卻未能再次重現(xiàn)它。
這次修復(fù)本身非常小巧,主要是添加了對文檔是否具有焦點(diǎn)的檢查,以確保工具提示的顯示。
華人小伙修復(fù)BUG
修復(fù)這個(gè)長達(dá)二十多年bug的是華人Yifan Zhu。
Zhu出生于1999年,而三年前人們剛發(fā)現(xiàn)這個(gè)bug。
當(dāng)Zhu開始研究這個(gè)問題時(shí),他剛剛完成了斯坦福大學(xué)的本科和碩士學(xué)位。此時(shí),他正在攻讀電氣工程博士學(xué)位,并受到本杰明·范·羅伊(Benjamin Van Roy)教授的指導(dǎo)。
個(gè)人主頁:https://fanzhuyifan.github.io/
為Firefox的Tooltip Listener編寫補(bǔ)丁的Yifan Zhu寫信給Ars表示,他們首先在Linux上的Thunderbird中遇到了這個(gè)錯誤,屏幕上漂浮著看似隨機(jī)的文本片段。
在虛擬桌面之間頻繁切換導(dǎo)致主題行漂浮在屏幕上,這非常煩人。Zhu學(xué)會了切換回Firefox或Thunderbird,并在切換回來之前移動光標(biāo)。
Yifan Zhu給Ars的信中說:他們首次遇到了這個(gè)問題是在運(yùn)行Linux上的Thunderbird時(shí),當(dāng)在虛擬桌面之間頻繁切換時(shí),屏幕上會出現(xiàn)一些看似隨機(jī)的文本片段,這真的很讓人惱火。
Zhu發(fā)現(xiàn),要解決這個(gè)問題,就必須切換回Firefox或Thunderbird應(yīng)用,然后在再次返回之前移動鼠標(biāo)光標(biāo)。
因此,Zhu對這個(gè)問題越來越感興趣,并著手進(jìn)行研究,試圖提交錯誤報(bào)告。
然而,他開始感到擔(dān)憂,因?yàn)檫@個(gè)bug已經(jīng)存在了20多年,但卻一直沒有得到修復(fù)。因?yàn)檫@只是一個(gè)小小的外觀問題,不會導(dǎo)致程序崩潰,所以很可能沒有人會花時(shí)間修復(fù)它。
Zhu在信中寫道:除非我親自來解決。
Zhu很有動力并且知道如何編程,但是他在像火狐瀏覽器這樣復(fù)雜的項(xiàng)目中零經(jīng)驗(yàn),并且以前從未為開源項(xiàng)目做出過貢獻(xiàn)。
然而這些困難并沒有難到他,在他博士課程開始前的那個(gè)夏天,他寫道:
「那么,為什么不呢?」
最終,Zhu提交了一個(gè)更新,使工具提示在Firefox失去焦點(diǎn)時(shí)顯示,而不是在鼠標(biāo)離開應(yīng)用程序時(shí)。
網(wǎng)友贊不絕口
不久之后,Zhu收到了Emilio Cobos álvarez的來信,Emilio改進(jìn)了Zhu的方法,并協(xié)助將這個(gè)提交添加到代碼庫中。
雖然這個(gè)修復(fù)引入了一些新問題,但它也成功地解決了這個(gè)長期存在的錯誤。Cobos álvarez稱贊道:「他對Firefox的第一個(gè)貢獻(xiàn)令人印象深刻!」
在社交媒體上,Mastodon對Zhu的貢獻(xiàn)進(jìn)行了熱烈慶祝,并感到十分地高興。
他感嘆道,Bugzilla本身(bug報(bào)告工具)的存在時(shí)間甚至比bug還要長(截至8月已持續(xù)25年)。
有人贊嘆了Zhu的英雄之旅:
不是任何人都能做出偉大的承諾,但偉大的承諾可以來自任何地方。
有些人甚至毫不猶豫地表示他們熱愛這個(gè)故事,并隨之而來的是大量的點(diǎn)贊和贊美。
盡管有句話說得好,在你解決一個(gè)bug時(shí),可能會引發(fā)更多bug的出現(xiàn)。然而,網(wǎng)友們對這位華人小伙的工作給予了非常高的贊譽(yù)。
還有人感嘆這就是開源的魅力,當(dāng)你解決一個(gè)問題時(shí)候,所有人都能共享你的貢獻(xiàn),這是非常有意義的。