PHPDD: Developer Day 2024

Am 20.09.2024 veranstaltete die PHP User Group aus Dresden den jährlichen Developer Day.

Wir konnten insgesamt 8 großartige Vorträge genießen.

Die Themenfelder waren breit gestreut: von Open Source und worauf man bei der Übernahme von totgeglaubten Projekten achten sollte, über Learnings aus Refactoring von Microservices und Monolithen bis hin zu eigenen PHPStan-Regeln schreiben.

Es gab viel Raum, um uns auszutauschen – es war super. Hier eine kleine Zusammenfassung.

Resurrecting the Dead – Juliette Reinders Folmer

If something „just“ works, it generally means someone in the background is putting a shi*load of effort into it to keep it running smoothly.

Du übernimmst ein Open Source Projekt und suchst nach Erfahrungen, wie es andere gemacht haben? Here you go. Juliette teilt hier ihre Erfahrungen und Einschätzungen.

Highlights:

  • Gesunde Projekte haben viele Contributors.
  • Also mach es Leuten einfach, am Prozess teilzunehmen (z.B. durch Dokumentation, Issues mit „Good First Issue“ labeln).
  • Als Maintainer baue eine Vision für das Projekt auf, aber halte dich zurück, die Erwartungen der Community zu früh zu wecken.
  • Versuche, weitere Maintainer in das Projekt einzubeziehen, und gehe das strukturiert an. Bevor du die Schlüssel zum Schloss übergibst, baue Vertrauen auf.
  • Reagiere zeitnah auf offene Issues.
  • Finanzielle Unterstützung ist nicht optional. Juliette spricht hier von Funding, nicht von Sponsoring. Der Gedanke ist super: Sponsoring bedeutet, Geld zu verschenken, während Funding eine Investition in ein Open-Source-Projekt ist, um dessen nachhaltiges Bestehen zu sichern und es zu verbessern.

So You Think You Know PHPUnit – Sebastian Bergmann

Inspiriert durch „So You Think You Know Git“ zeigt Sebastian, der Erschaffer und Maintainer von PHPUnit, ein paar Features, die seiner Meinung nach zu wenig genutzt werden.

Highlights:

  • Nutze Metadaten, um Tooling zu vereinfachen:
    • #[Small], #[Medium], #[Large] Tests markieren verschiedene Testtypen (z.B. Unit, Integration, Acceptance Tests).
    • #[UsesClass] und #[CoversClass] zur expliziten Angabe genutzter Klassen.
    • Beispielsweise werden #[Small] Tests als „Risky“ markiert, wenn sie länger als 1 Sekunde dauern.
  • CLI-Learnings:
    • –list-groups, –list-tests um die aktuelle Testbasis auszulesen.
    • –testdox macht Test Ergebnisse lesbar.
    • –debug zeigt wertvolle Infos für Performance-Debugging an.
  • Config:
    • Konfigurationen wie ignoreSuppressionOfDeprecations, ignoreDirectDeprecations und ignoreIndirectDeprecations helfen, alle relevanten oder teil relevanten Deprecations zu sehen.
  • Package-Empfehlung:
    • ergebnis/phpunit-slow-test-detector – zur Optimierung der Testperformance.

How to Write Unmaintainable Code – Sebastian Kurfürst

Sebastian teilt seine Erkenntnisse darüber, was er vor 15 Jahren gedacht hat und wie er heute denkt.

Highlights:

  • Vermeide Magie: Magic Code ist schwer zu verstehen und zu erweitern.
  • Dokumentierender Code ist guter Code.
  • Intrinsische Ähnlichkeit: Neuen Code im gleichen Stil wie bestehenden Code schreiben.
  • Libraries over Frameworks: Kleine Module sind bevorzugt.
  • Mehr Kommentare – erkläre das Warum.
  • Code sollte für Menschen verständlich sein.

Writing Custom Rules for PHPStan – Ondřej Mirtes

Ondřej zeigt, wie man eigene Regeln für PHPStan schreibt.

Highlights:

  • Paket-Empfehlung: staabm/phpstan-todo-by, um Fälligkeiten im Code zu dokumentieren.

Monolith to Microservices and Back – Sebastian Feldmann

Sebastian beschreibt den Pain von Monolithen und Microservices und wie er einen Mittelweg fand.

Highlights:

  • Modulith – eine Mischung aus Modul und Monolith.
  • Microservices sind komplexer, aber flexibler, während Monolithen oft chaotisch sind.
  • Der Talk ist gefüllt mit tiefen architektonischen Einblicken und Sebastian schafft es die Dinge einfach zu bennenen. Quasi… erklär mir Strangler Pattern ohne Strangler Pattern zu sagen. Super.

Running PHP-Applications in a Multi-Process Container – Anne-Julia Seitz

Docker in Kombination mit mehreren Prozessen bereitet in der Regel Probleme. Anna zeigt uns, warum das so ist und wie wir das Problem anhand eines PHP-FPM- und NGINX-Containers lösen können.

Highlights:

  • s6-overlay
  • Ein kurzer Ausflug in Init-Systeme bzw. Stages. Häufig gehört und gelesen, aber nie wirklich Gedanken darüber gemacht.
  • Sehr konkrete Beispiele, wie man s6 einsetzt. Goil.
  • s6-cli, um Container zu linten und sogar mit Mermaid einen Graphen zu dokumentieren.

How to Build Sustainable Web Applications – Need a MACH-ready Search Engine? Choose Gally – Stephan Hochdörfer

Elastic ist kompliziert? Gally bringt die Lösung, und Stephan Hochdörfer zeigt uns, wie das aussieht.

Highlights:

  • Gally bietet ein Backend, das auch für Nicht-Techies nutzbar ist.
  • Früher lag der Fokus bei Gally auf E-Commerce. Jetzt geht die Entwicklung in Richtung allgemeine Suchanwendungen.
  • Ein Praxisbeispiel anhand des BitExpert-Blogs.
  • Gally unterstützt auch Vektorsuche.

How to Build Sustainable Web Applications – Carsten Windler

Nachhaltigkeit ist das Thema 2024, und Carsten erklärt, was wir Techies tun können, um unseren Teil dazu beizutragen.

Highlights:

  • Persönlich fiel mir auf, dass Nachhaltigkeit und Sparsamkeit relativ nah beieinander liegen. Vermutlich erklärt die aktuelle Lage diesen Trend.
  • Es gibt vier große Bereiche, auf die wir Einfluss haben: Infrastruktur, (Software-)Architektur, Code und Carbon Awareness.
  • Ein paar Fragen, die mich zum Nachdenken gebracht haben:
    • Müssen Test- und Staging-Umgebungen auch am Wochenende laufen?
    • Müssen Test- und Staging-Umgebungen die gleichen Ressourcen wie die Produktion haben?

Fazit

Mein erster Besuch in Dresden. Ich war sehr beeindruckt von der PHP User Group. Jeder, der in der Nähe wohnt und sich mit PHP-Nerds austauschen möchte, dem sei die User Group wärmstens empfohlen. Es findet bimonatlich ein Meetup mit Vorträgen statt. Mehr Infos zur UG findet man hier.

Was nachhaltig im Gedächtnis bleiben wird:

  • Das Open-Source-Ökosystem funktioniert, weil es Menschen wie Juliette und Sebastian (Bergmann) gibt. Die Perspektive von Juliette zu hören und vor welchen Herausforderungen die jetzige und auch die zukünftige Generation steht, war bereichernd. Open Source braucht finanzielle Unterstützung, damit es nachhaltig funktioniert. Daher mein Appell an alle Entscheider: unterstützt investiert finanziell *in Open-Source-Projekte.
  • Custom PHPStan-Regeln sind cool. Ich denke darüber nach, inwieweit man Custom PHPStan-Regeln nutzen könnte, um Immutable/Pure Value Objects rein durch Static Code Analysis zu prüfen. Und Folgefrage könnte es den Aufwand für Unit Tests bei Platzhalterklassen reduzieren.
  • Sebastian Feldmann hat erneut einen Vortrag gehalten, den ich auf meine Liste für Empfehlungen setze, wenn mich jemand fragt: „Marc, wie kann ich besser werden?“.
  • Im Gally-Vortrag wurde erwähnt, dass wir bei der Vektorsuche eigene Modelle in Gally einbinden können. Das brachte mich auf die Idee, dass man auch vorhersagende Modelle integrieren könnte. Wenn das möglich wäre, könnte man Gally oder Elastic nutzen, um nicht nur Suchfunktionen zu ermöglichen, sondern auch Datenüberschneidungen zu finden und das mergen von Datenquellen vereinfachen. Ich denke weiter darüber nach.
  • S6-Overlay rocks.
  • Einige Libraries haben das Problem, dass sie Dinge „hydrieren“ (Zend, Neos, Symfony). Ich wünschte, wir hätten einen PSR-Standard dafür.

Trotz totaler Übermüdung habe ich jede Minute genossen. Nächstes Jahr wieder.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert