Bei den Olympischen Spielen 1972 in München erlebte der 22-jährige deutsche Student Norbert Südhaus seine warholsche Viertelstunde Ruhm – oder vielmehr Schande. Als Streich schlich er sich kurz bevor der Gewinner des Marathons, der Amerikaner Frank Shorter, zur Siegesrunde eintreffen sollte, ins Stadion (die Sicherheitsvorkehrungen waren damals viel laxer). Wie in Wikipedia beschrieben, näherte sich Shorter dem Stadion, als der deutsche Student Norbert Südhaus in westdeutscher Leichtathletikuniform das Stadion betrat, dem Rennen beitrat und den letzten Kilometer lief. Das Publikum, das ihn für den Sieger hielt, begann ihn zu bejubeln, bevor die Offiziellen den Betrug bemerkten und Südhaus von der Sicherheit von der Bahn eskortiert wurde. Shorter, der 35 Sekunden später eintraf, war verwirrt, jemanden vor sich zu sehen und die Buhrufe und Pfiffe zu hören, die für Südhaus bestimmt waren.
Nun, wie die meisten Menschen befand ich mich nie in der exakten Situation, in der sich Frank Shorter an diesem Tag befand, aber wie schwer ist es, sich vorzustellen, wie er sich dabei gefühlt haben muss? Es geht nicht nur darum, dass er an diesem Tag das Rennen lief und zufällig gewann. Nein, was er an diesem Tag erreichte, war die Krönung jahrelanger harter Arbeit und Hingabe. Doch dieser Moment, der ein Glanzlicht in seinem Leben sein sollte, wurde durch diesen unreifen Spaßvogel Südhaus ruiniert.
Ich denke, man kann mit Sicherheit sagen, dass, wenn wir diesen Vorfall beschreiben, jeder mit Shorter sympathisiert und niemand mit Südhaus. Tatsächlich würden wir wahrscheinlich tiefes Misstrauen gegenüber jedem empfinden, der nicht so fühlt. Wenn jemand anfangen würde zu sagen, Shorter sei ein Bösewicht und Südhaus sei ungerecht behandelt worden, würden wir denken: Du meine Güte! Was stimmt nicht mit diesem Kerl?
Nun, so würden wir reagieren, wenn wir davon überzeugt wären, dass die Person es ernst meint. (Aber wie könnte er das?) Sicherlich, wenn jemand Unterstützung für Norbert Südhaus ausdrücken würde, wäre dies nur ironisch gemeint. All das scheint so offensichtlich. Es gibt jedoch noch einen weiteren Punkt zu diesem Szenario zu bedenken: Nichts des Vorangegangenen hat etwas damit zu tun, wie sympathisch Frank Shorter war (oder ist) oder dergleichen. Es ist einfach nicht relevant. Shorter gewann das Rennen und verdiente seinen Moment des Ruhms.
Höchstwahrscheinlich ist Frank Shorter ein netter Kerl und eine sehr bewundernswerte Person – aber das gesagt, weiß ich es tatsächlich nicht genau. Doch noch wichtiger ist:
Es ist mir egal!
Ob Shorter ein netter Kerl oder ein Rüpel ist, ob er die angemessenen politisch korrekten Ansichten vertritt oder nicht… all das spielt keine Rolle. Er lief das Rennen und gewann, und seine Leistung muss anerkannt werden. Nun, sicherlich wurde sie größtenteils anerkannt. Ich nehme an, sobald die Verwirrung geklärt war, erhielt er den verdienten Applaus vom Publikum. Und zweifellos, als er in seine Heimatstadt in Amerika zurückkehrte, wurde er als Held empfangen. Natürlich wurde er das. Er erreichte, was er erreichte, und hatte es sich verdient.
Nun, worum es bei all dem letztlich geht, ist elementare Sportlichkeit – wirklich grundlegende Anständigkeit. Und nicht nur bei sportlichen Leistungen.
Leistungen müssen anerkannt werden.
Nun, der aufmerksame Leser, der die Situation kennt, in der ich mich mit meinen Bemühungen zur Wiederbelebung dieses JavaCC-Projekts befinde, mag ahnen, wohin ich damit will. Ich empfinde es als eine heikle Angelegenheit, dieses Thema anzusprechen, da ich die Befürchtung habe, wie ein Jammerlappen zu klingen oder so etwas. Dennoch habe ich das Gefühl, dass bestimmte Dinge gesagt werden müssen. Der Mangel an jeglichem Sinn für grundlegende Sportlichkeit, der in diesem Bereich der Open-Source-Software vorherrscht, ist absolut frappierend. Ich verstehe es auch nicht wirklich. Aber ich sehe es, auch wenn ich vielleicht so tun soll, als ob ich es nicht sehen könnte. Schließlich habe ich das Gefühl, dass ich mir ein paar Dinge von der Seele reden muss.
Meine ganz persönlichen “Frank Shorter-Momente”
In meiner Arbeit an JavaCC gab es verschiedene bedeutende technische Meilensteine, die durchaus als “Frank Shorter-Momente” betrachtet werden könnten. Als ich 2008 die INJECT-Direktive implementierte, als das Projekt noch FreeCC hieß, war dies im Nachhinein etwas Besonderes. Ich hatte die Tools JavaCC und JJTree zu einem einzigen Tool vereint und ein großes Problem gelöst, das JJTree (die automatische Baumkomponente des Legacy-JavaCC-Pakets) so problematisch in der Anwendung machte.
So wie Frank Shorter an diesem Tag im Jahr 1972 (und abgesehen vom Norbert-Südhaus-Vorfall sicherlich auch) Anerkennung für seine Leistung verdiente, so glaube ich, dass ich vom JavaCC-“Community” einige Anerkennung für die saubere Lösung des gesamten Problems des Nachbearbeitens der generierten XXXNode-Dateien in JJTree verdient hätte. Leider profitierten nur sehr wenige Menschen von meiner Arbeit. Dies lag daran, dass die “Gatekeeper”, die “Nothingburger-Künstler”, die das kanonische JavaCC-Projekt hüteten, sich entschieden, Monat für Monat und Jahr für Jahr, schließlich Jahrzehnt für Jahrzehnt, so zu tun, als ob die von mir geleistete Arbeit einfach nicht existierte.
Vor Kurzem erreichte ich einen weiteren solchen technischen Meilenstein. Wie ich vor einigen Monaten hier berichtete, habe ich endlich den langjährigen Fehler behoben, dass der verschachtelte syntaktische Lookahead nicht funktionierte. So wie Frank Shorter, richtig verstanden, das, was er erreichte, nicht an diesem einen Tag erreichte, sondern es die Krönung jahrelanger harter Arbeit war, so war es auch mit diesem Bugfix. Tatsächlich, ehrlich gesagt, hatte ich mir nicht bewusst vorgenommen, diesen Bug zu beheben. Was geschah, war, dass ich nach einem weiteren Zyklus von Code-Bereinigung und Refactoring plötzlich sah, dass dieser langjährige Bug trivial zu beheben war! Dies ist übrigens etwas, was “Nothingburger-Künstler” nie wirklich verstehen, dass echte Softwareentwicklung ein Prozess ständiger kreativer Zerstörung ist und es häufig vorkommt, dass nach einer Bereinigungsrunde bestimmte Funktionen, die einem zuvor nicht eingefallen waren, sich plötzlich von selbst anbieten! Und dies geschieht, indem man eine sehr aggressive, furchtlose Haltung gegenüber der Codebasis einnimmt. Die ängstliche Haltung der “Gatekeeper”, die Angst haben, den Code anzufassen, kann einfach keinen sinnvollen Fortschritt hervorbringen.
Der “Norbert Südhaus Fanclub”
Das ordnungsgemäße Funktionieren des verschachtelten syntaktischen Lookaheads ist ein Game Changer, denn es bedeutet, dass alle möglichen eleganten Lösungen für Parsing-Probleme, die hätten funktionieren sollen, aber aufgrund dieses Bugs nie funktionierten, jetzt funktionieren.
Es erschien mir (und ich schätze, immer noch) grenzwertig unglaublich, dass jemand weiterhin das Legacy-JavaCC-Tool verwenden würde, in dem dies defekt ist, anstatt meiner Version, in der es behoben ist – zumindest, wenn sie wüssten, dass meine Version existiert! (Ah, da liegt der Haken!) Ich folgerte auch, dass keine ethisch handelnde Person guten Gewissens die Verwendung des defekten, veralteten Legacy-JavaCC-Tools weiterhin befürworten könnte. (Ich sehe, da lag ich völlig falsch!)
Was ich also unmissverständlich anprangere, ist diese absolut unsportliche Weigerung, die von mir geleistete Arbeit anzuerkennen. Nochmals, wie ich oben ausgeführt habe, hat es nichts damit zu tun, ob man mich mag oder mich für einen netten Kerl hält oder dergleichen. Ich habe die Arbeit geleistet, und ein ehrlicher, ethisch handelnder Mensch muss das doch anerkennen!
Hoffentlich habe ich meinen Standpunkt dazu verdeutlicht, aber erstaunlicherweise geht es sogar darüber hinaus. Was an dieser Situation, in der ich mich befinde, bei diesem zweiten Versuch, das alte, verkrustete JavaCC wiederzubeleben, das effektiv seit 20 Jahren verlassen wurde, wirklich außergewöhnlich ist, ist, dass es tatsächlich Menschen gibt, die glauben (oder sie sagen, sie glauben es…), dass ich etwas furchtbar Falsches tue. Sie denken, dass ich, Jon Revusky, Leute wie Sreeni Viswanadha oder sein Mini-Me, Francis André, oder einen der anderen “Nothingburger-Künstler”-Gatekeeper, die an diesem alten Nothingburger-Projekt sitzen, schikaniere.
Irgendwie kommt es ihnen nicht in den Sinn, dass es diese “Gatekeeper” sind, die nicht nur mich, sondern jeden schikanieren, der von der aktiven Entwicklung des Projekts profitieren würde! Darüber hinaus glauben sie anscheinend, dass diese Art von Menschen ein unantastbares Recht hat, endlos an einem bekannten Open-Source-Projekt zu sitzen, jahrelang und schließlich jahrzehntelang nichts Sinnvolles zu tun – und wenn jemand tatsächlich beschließt, die Sache in die Hand zu nehmen und etwas damit zu tun, dann sind es diese Leute, die etwas falsch machen!
Nun, um Himmels willen! Sun Microsystems hat den Code im Juni 2003 als Open Source freigegeben, und in 17 Jahren haben die Leute, die an dem Projekt saßen, all diese Releases (von 2.x bis 7.x) herausgebracht, und keine davon enthält eine einzige neue Funktion oder irgendeine neue Idee! (Ist das nicht mehr oder weniger als ein totaler Betrug?) Jedenfalls…
War die Absicht dieser Open-Source-Operation, den Code für weitere Entwicklung zu öffnen oder einem Haufen “Gatekeeper” zu ermöglichen, an der Sache zu sitzen und nicht nur selbst nichts zu tun, sondern aktiv zu verhindern, dass jemand anderes etwas tut?
Wie kann das jemand glauben? Doch sie halten an dieser Position fest, obwohl sie diejenigen sind, die direkt von meiner Arbeit profitieren würden! In den letzten Monaten habe ich Fehler behoben, die über zwanzig Jahre alt sind!
Wie verachtenswert von mir!
Und tatsächlich ist das oben Gesagte, wenn überhaupt, eine übermäßig großzügige Charakterisierung der Situation. Diese “Gatekeeper” tun nicht nur selbst nichts, sondern sie leisten nicht einmal die geringsten Wartungsarbeiten. Zum Beispiel unterstützt das Legacy-JavaCC-Projekt nur eine 10 Jahre alte Version der Java-Sprache (JDK 7), und das auch nur, weil jemand die inkrementelle Arbeit dafür gespendet hat. Ich hatte eine private Korrespondenz mit der Person, die diesen Patch spendete, und er erzählte mir, dass es etwa ein Jahr dauerte, bis sie seinen Patch überhaupt angesehen haben. Jedenfalls wäre es eine minimale Basis an Projektaktivität, das bestehende Tool mit der Entwicklung der Java-Sprache auf dem Laufenden zu halten, sodass es, wenn sie das selbst ablehnen, effektiv “Abandonware” ist.
Ich bin ziemlich davon überzeugt, dass die Haltung dieser Leute im Großen und Ganzen so absurd ist wie die Vorstellung, dass Frank Shorter derjenige war, der Norbert Südhaus schikanierte!
Armer Norbert!
Nicht lange nach Behebung des Fehlers mit dem verschachtelten syntaktischen Lookahead schrieb ich Theo Norvell, der mindestens ein Jahrzehnt lang der Betreuer der JavaCC-FAQ gewesen war und immer noch regelmäßig JavaCC-bezogene Fragen auf StackOverflow beantwortet, und teilte ihm mit, dass ich dieses langjährige Problem behoben hatte. Ich hatte ein vages Gefühl, dass Theo mich nicht besonders mochte (nicht klar warum, da ich ihm nie etwas getan hatte), aber ich dachte immer noch, er hätte genug Sportsgeist, um eine gratulierende Nachricht zurückzuschreiben.
Nun, ich lag falsch. (Es ist eine unglückliche Tatsache, dass ich es einfach nie schaffe, einen dieser Leute zu unterschätzen.) Nun, was soll man von eingefleischten Mitgliedern des Norbert-Südhaus-Fanclubs erwarten? Norvell schrieb mir weder eine solche gratulierende Nachricht – noch überhaupt eine Nachricht. Ich sehe auch, dass er weiterhin Fragen zu JavaCC auf StackOverflow beantwortete, ohne jemals zu erwähnen, dass es eine fortschrittlichere, behobene Version gab – d.h. meine Arbeit.
Das war meine vorletzte E-Mail an Norvell. Ich schrieb ihm später noch einmal (manchmal ist es schlicht unmöglich, einen Juckreiz nicht zu kratzen) und drückte einfach aus, wie ich mich über sein Verhalten fühlte. Hier ist ein wichtiger Auszug:
Dieser ganze Ansatz, den Sie anscheinend verfolgen, der im Grunde darin besteht, so zu tun… (Ich weiß, das ist nicht besonders schmeichelhaft, aber ich finde kein anderes Wort…) Monat für Monat, Jahr für Jahr so zu tun, als ob die wirkliche Arbeit in einem Bereich nicht einmal existiert.
Schnitt…
Ich mache es ganz kurz. Der Punkt ist dieser: Wie wirken Menschen, die sich so verhalten, auf andere? Zumindest auf einen aufmerksamen Beobachter. (Zugegeben, man kann immer hoffen, dass es nur sehr wenige aufmerksame Beobachter gibt!) Aber auf den aufmerksamen Beobachter wirken Sie einfach… nun, nicht wirklich wie ein sehr guter Mensch, eher engstirnig und ungroßzügig. Und es ist im Grunde ein sehr unehrliches Verhalten. Offensichtlich ist mein Hauptproblem damit, dass es mir gegenüber ungeheuer ungerecht ist, aber richtig verstanden, geht es nicht wirklich speziell um mich. Nochmals, Sie können tun, was Sie wollen, aber Sie können nicht überrascht tun, wenn ich es Ihnen übelnehme. Richtig?
Diese Nachricht erhielt ebenfalls keine Antwort. (Diesmal überraschte mich das nicht. Ich kann sehr langsam sein, aber irgendwann lerne ich die Lektion.)
Natürlich habe ich keine Gewissheit über Norvells Ansichten zu all dem, da er meine E-Mails nicht beantwortet. Ich vermute jedoch, dass er zu jenen Menschen gehört, die glauben, dass ich die Leute im Legacy-JavaCC-Projekt irgendwie schlecht behandelt habe.
Zu glauben, dass ich Sreeni und den Rest der “Nothingburger-Künstler”, die diese “Community” bilden, schlecht behandelt habe, ist ungefähr so, als würde man glauben, dass Frank Shorter Norbert Südhaus irgendwie schlecht behandelt hat. Schließlich wissen wir alle, dass Norbert der rechtmäßige Sieger des Olympischen Marathons 1972 war! (Wenn Frank Shorter sich darüber offen empört, zeigt das nur, was für ein schlechter Kerl er ist!)
So ist es also.
Drei Hoch auf Norbert Südhaus! Hip Hip Hurra!
Die Moral der Geschichte ist klar: Ob im Sport oder in der Softwareentwicklung, Leistungen verdienen Anerkennung, und grundlegender Sportsgeist und Fair Play sind unerlässlich für eine funktionierende und ethische Gemeinschaft. Die Verweigerung dieser Prinzipien schadet nicht nur den Einzelnen, sondern auch dem Fortschritt als Ganzes.
