Firefox: Wie ein 23-jähriger Entwickler einen 22 Jahre alten Fehler behob

Einem 23-Jährigen ist es gelungen, einen 20 Jahre alten Firefox-Fehler zu beheben, der zu winzigen, auf den Bildschirmen verbleibenden Tooltips führte.

In Pocket speichern vorlesen Druckansicht 92 Kommentare lesen
Firefox-Symbol auf einem Smartphone. Hintergrund ist lila.

(Bild: David Esser/Shutterstock.com)

Lesezeit: 6 Min.
Von
  • Kevin Purdy
  • Ars Technica
Inhaltsverzeichnis

Im Juni 2002 machte Ubuntu-Gründer Mark Shuttleworth seine ersten Erfahrungen im Weltraum, das Kartellverfahren des US-Justizministeriums gegen Microsoft stand kurz vor dem Abschluss, und Adam Price hatte auf seinem Mac ein Problem mit nicht verschwindenden Tooltips bei dem damals brandneuen Mozilla.

"Wenn ich mit der Maus über einen Link in der Toolbar fahre und eine Sekunde warte, erscheint ein kleines gelbes Kästchen mit der Beschreibung des Links. Wenn ich Mozilla mit Command-Tab in den Hintergrund schiebe, bleibt das kleine gelbe Kästchen im Vordergrund. Die einzige Möglichkeit, es loszuwerden, besteht darin, Mozilla wieder in den Vordergrund zu bringen und die Maus von der Symbolleiste zu entfernen", schrieb Price am 2. Juni 2002. Es gab noch einige andere Bugs, die mit diesem Problem zusammenhingen, aber Price identifizierte ein reproduzierbares Problem, das in den folgenden Wochen, Monaten, Jahren und Jahrzehnten von vielen anderen bestätigt wurde.

Firefox-Tooltip, der über einem Browser-Fenster in Mac OS X verweilt. Der Screenshot wurde vor 12 Jahren aufgenommen.

Im Laufe der Jahre meldeten sich immer wieder Leute in diesem Thread oder markierten denselben Fehler. Gelegentlich schien das Problem behoben zu sein, doch dann entdeckten Programmierer und Kommentatoren, dass es in verschiedenen Versionen wieder auftrat oder frühere Fixes wohl versehentlich erfolgten. Manchmal schien das Problem auch unter Windows oder Linux aufzutreten. Ein Kommentator merkte nach 21 Jahren an: "Angesichts seiner Langlebigkeit bin ich allerdings geneigt, es [den Fehler] für immer beibezuhalten. Es fühlt sich an, wie ein Relikt aus der Vergangenheit."

Dieses Relikt gibt es nicht mehr, da er Anfang September mit Bugfix 148624 behoben wurde, das in Build 119 enthalten ist. Ich habe versucht, den Tooltip-Fehler auf meinem noch nicht aktualisierten 118.0.1 Firefox-Browser auf dem Mac nachzubilden, konnte ihn aber nicht mehr replizieren. Der Patch selbst ist recht klein und fügt dem Code eine Überprüfung darüber hinzu, ob ein Dokument einen Fokus auf den Tooltip-Anzeigecode hat.

Yifan Zhu, der für den Patch für den Tooltip-Listener von Firefox verantwortlich ist, schrieb an Ars Technica, dass der Fehler zuerst in Thunderbird unter Linux auftrat, als "scheinbar zufällige Textsegmente auf meinem Bildschirm schwebten". Wenn er häufig zwischen virtuellen Desktops wechselte, blieben die Betreffzeilen auf dem Bildschirm, was "extrem ärgerlich" war. Zhu lernte, erst mal zu Firefox oder Thunderbird zu wechseln und den Cursor zu bewegen, bevor er zurückwechselte.

Aber das Problem wuchs Zhu ans Herz, also recherchierte er und versuchte, den Fehler zu melden, aber "zu meinem Entsetzen musste ich feststellen, dass dieser Fehlerbericht seit mehr als 20 Jahren offen ist und immer noch nicht behoben wurde." Da es sich um "ein kleines 'kosmetisches' Problem handelte, das keine Abstürze verursachte", erschien es wahrscheinlich, dass niemand den Fehler beheben würde, "es sei denn, ich mache es selbst", schrieb Zhu.

Zhu war motiviert und wusste, wie man programmiert, hatte aber "keine Erfahrung mit so komplizierten Projekten wie dem Firefox-Browser" und hatte "noch nie zu Open-Source-Projekten beigetragen". Aber es war der Sommer, bevor das Doktorandenprogramm begann. "Also, warum nicht?"

Der Start war, gelinde gesagt, ungünstig. "Ich suchte einfach in der gesamten Codebasis nach 'tooltip', prüfte das Material auf mögliche Kandidaten und fügte Debugging-Druckanweisungen ein, um die Ausführung zu verfolgen", schrieb Zhu. Dies führte schließlich zu weiteren Hinweisen. "Wenn die Maus über ein Element bewegt wird, wird ein Timer gestartet, um den Tooltip anzuzeigen. Dieser Timer wird bei einem Mouse-Out-Ereignis gestoppt, aber Firefox bemerkte dies nicht, wenn ich die Tastenkombinationen zum Wechseln zwischen Fenstern oder virtuellen Desktops verwendete".

Zhu pushte einen Commit, der die Anzeige eines Tooltips davon abhängig machte, ob Firefox den Fokus verlor und nicht davon, ob die Maus die Anwendung verließ. In den nächsten Stunden hörte er von Emilio Cobos Álvarez, der Zhus Ansatz verbesserte und half, den Commit in die Code-Basis zu bekommen. Die Korrektur hat zwar zu einigen Rückschritten geführt, aber auch an diesem Fehler wird gearbeitet.

Zhu, 1999 geboren, nur drei Jahre bevor der Fehler eingereicht wurde, hatte gerade den Bachelor- und Master-Abschluss in Stanford gemacht. Zhu begann gerade eine Doktorarbeit in Elektrotechnik und konnte nur raten, warum ein Fehler wie dieser den größten Teil seines Lebens überdauert hatte. Die Vermutung war, dass es daran liegt, dass es lediglich ein "Schönheitsfehler" war. Zudem war der Fehler umständlich zu reproduzieren. Dadurch hatten andere, schwerwiegendere Fehler immer eine höhere Priorität.

Cobos Álvarez, der Zhus Korrektur in einen Commit umwandelte, schrieb uns, dass "dieser Bereich ziemlich knifflig ist", da es verschiedene Firefox-Konfigurationen gibt und herauszufinden war, wie diese auf unterschiedlichen Betriebssystemen auf die Änderung reagieren. Eine Lösung zu finden, die elegant damit umgeht, war nicht leicht. "Ziemlich beeindruckend für den ersten Firefox-Beitrag!"

In den sozialen Medien, insbesondere bei Mastodon, gab es viel Jubel. Einige waren der Ansicht, dass dieser Bugfix ein hervorragendes Beispiel dafür ist, gegen "Stalebots" vorzugehen, die alte, ungelöste Probleme zur Löschung vormerken. Ein Mastodon-Nutzer kommentierte, dass der Entwickler als Kind einen Fehler entdeckt hatte und dann programmieren lernte, um ihn dann zu beheben.

Life goals

Dieser Artikel erschien ursprünglich auf Ars Technica.

(mack)