Letztes Jahr: danebengestanden
Letztes Jahr war ich zum ersten Mal auf den DevDays in Karlsruhe. An der Coding Night habe ich damals aber nicht teilgenommen. Ich saß stattdessen über den Unterlagen für meine Zertifizierung und habe mir gedacht: nächstes Mal.
Rückblickend war das eine vernünftige Entscheidung und trotzdem ein bisschen schade. Denn während ich gelernt habe, saßen nebenan Leute zusammen, arbeiteten an echten Core-Issues und hatten sichtlich Spaß dabei. Die Hemmschwelle, die ich vor Contributions hatte, wurde dadurch nicht kleiner.
Dieses Jahr: mitgemacht
Dieses Jahr also die Coding Night. Und was meine Erwartungen sofort über den Haufen geworfen hat, war das Setup.
Benni Mack hatte am ersten Tag ein Tryout-Repository vorgestellt, mit dem man in etwa fünf Minuten eine lauffähige Entwicklungsumgebung für den TYPO3 Core hat. Die erste Hürde war damit schon mal aus dem Weg geräumt.
Für die Coding Night hatte das Core Team im Vorfeld eine Liste mit Einsteiger-Issues zusammengestellt. Man musste sich nicht erst selbst durch den Issue-Tracker wühlen und einschätzen, ob ein Issue für einen Neuling machbar ist oder ob man sich damit drei Tage verrennt.
Der Bug
Ein Kollege und ich haben uns gemeinsam einen Bug aus der Liste ausgesucht: Der Linkvalidator stieg bei der Prüfung mit einem SQL-Fehler aus, Data too long for column 'headline'. Und dann passierte das, was in solchen Situationen offenbar dazugehört: Wir konnten das Problem erstmal überhaupt nicht reproduzieren.
Also Xdebug angeworfen und uns Schritt für Schritt durch den Code gehangelt. Breakpoint setzen, schauen, was in den Variablen steht, weiter. Nach etwa einer Stunde hat es klick gemacht. Wir hatten verstanden, unter welchen Bedingungen das Verhalten auftritt, und konnten es endlich gezielt nachstellen.
Der Fix war am Ende eine einzige Zeile. Das ist ein Ergebnis, über das man erst einmal schmunzelt. Eine Stunde Debugging für eine geänderte Zeile. Aber genau das ist die Erfahrung, die ich mitgenommen habe: Die Arbeit steckt fast nie im Fix, sondern im Verstehen des Problems. Und dieses Verstehen ist gleichzeitig der Teil, bei dem man am meisten über den Core lernt.
Der Workflow
Blieb noch der Teil, vor dem ich am meisten Respekt hatte: den Fix so einreichen, dass er auch tatsächlich reviewt wird.
Garvin Hicking aus dem Core Team hat sich dafür zu uns gesetzt und uns den Ablauf gezeigt.
Für Code Reviews nutzt TYPO3 Gerrit unter review.typo3.org. Man arbeitet immer auf dem Main-Branch und pusht seinen Commit nicht direkt ins Repository, sondern in ein Review. Dort wird er von anderen kommentiert, getestet und am Ende von einem Mitglied des Core Teams gemerged. Nachbesserungen kommen nicht als neuer Commit obendrauf, sondern werden per Amend in den bestehenden Commit eingearbeitet und als neues Patchset hochgeladen. Dazu kommen ein paar Konventionen für die Commit Message, über die der Commit mit dem Forge-Issue verknüpft wird.
Mit Anleitung war das in wenigen Minuten erledigt. Alleine hätte ich dafür vermutlich einen Abend gebraucht und mich dabei mehrfach gefragt, ob ich gerade etwas kaputt mache. Genau deshalb ist so eine Coding Night so wertvoll: Es sitzt jemand neben dir, der das schon hundertmal gemacht hat.
Drin ist das Ding
Im darauffolgenden TYPO3 Release war mein Bugfix enthalten.
Es ist nur eine Zeile Code, aber für mich war es ein großer Schritt und ein gutes Gefühl, auch mal etwas zurückgegeben zu haben.
Was ich mitnehme
Wenn du, wie ich, seit Jahren vorhast, mal etwas beizutragen, und immer wieder am Einstieg hängen bleibst: Nimm an der Coding Night teil. Inhaltlich wird es dort nicht leichter, aber es stehen genau die richtigen Mittel und Leute bereit. Ein Setup, das einfach läuft. Eine Liste mit Issues, die als Neuling machbar sind. Und Menschen, die den Workflow längst kennen und ihn dir in zehn Minuten zeigen, statt dich einen Abend lang raten zu lassen. Der Rest ist dann ganz normale Entwicklungsarbeit. Und die kannst du ja schon.
Wir sehen uns bei den nächsten DevDays.