SymfonyWorld Online 2020

In diesem Jahr wurde aus der SymfonyLive die SymfonyWorld Online 2020 und die fand – dem Namen entsprechend – komplett Online statt. Trotz des neuen Mediums wurde versucht, das grundsätzliche Konferenzformat beizubehalten. Es waren der zweitägigen Konferenz wieder zwei Tage Workshops vorangestellt. Die Workshops wurden mit Zoom durchgeführt, die Konferenz mit der spezialisierten Software Hopin.

Wir „besuchten“ die SymfonyWorld zu zweit über alle vier Tage. Wie schon in den letzten Jahren haben wir uns über das gesamte Programm aufgeteilt, um eine möglichst große Bandbreite abzudecken. Es folgt eine kurze Zusammenfassung der Workshops, an denen wir teilgenommen haben und Talks, die wir sahen.

Workshops

Mastering OOP & Design Patterns mit Titouan Galopin (2 Tage)

In diesem zweitägigen Workshop begann Titouan, seines zeichens brandneues Mitglied des Symfony Core Teams, über grundsätzlichen Sinn und Unsinn von Design Patterns zu erzählen. Spannend war die Sichtweise diese nur dann zu verwenden, wenn deren Verwendung künftige Änderungen an einem Projekt minimieren können.

Oft hört man als Hauptargument für Design Patterns, dass sie einem Entwicklerteam eine einheitliche Sprache für oft auftretende Konzepte an die Hand geben und durch deren Verwendung neue Entwickler schnell die Codebasis verstehen können. Dieser Ansatz kann im
Enterprise-Bereich dazu missbraucht werden, Entwickler leichter austauschbar zu machen, wenn so viele Design Patterns wie möglich verwendet werden. Da dies die Codebasis massiv verkompliziert, finde ich die im Workshop präsentierte Fragestellung sehr viel wertvoller.

Nachdem dieser Grundsatz geklärt war, wurden bis zur Mitte des zweiten Workshoptages etwa ein Dutzend Patterns vorgestellt und – so dies möglich war – eine Symfony Komponente dazu gezeigt, die dieses Pattern entweder vollständig implementiert oder für dessen wesentliche Funktionalität verwendet. Dieser starke Praxisbezug machte den Nutzen der Patterns sehr viel anschaulicher und gab gute Gelegenheit Symfony einmal genauer unter die Haube zu schauen.

Ein paar einfachere Patterns sollten zwischendurch durch die Workshopteilnehmer in kleineren Übungen implementiert werden.

Die letzte Tageshälfte nahm dann eine große Übungsaufgabe ein, in der wir mit Hilfe des Strategy Patterns und des Decorator Patterns einen API Proxy entwickeln sollten, der drei verschiedene Endpunkte mit Wetterinformationen unterschiedlichen Formates klammern sollte. Hier wurde das Zoom-Feature der Breakout Rooms häufig genutzt, um im Zweiergespräch Fragen zu klären oder den verbrochenen Code zu reviewen.

Alles in Allem war der Workshop fantastisch. Von der Vorbereitung über die eingesetzten Medien zur Wissensvermittlung bis zur Nutzung der Zoom-Features war der Workshop wirklich gut durchdacht.

All about Symfony’s new Security Component mit Ryan Weaver (1 Tag)

Vorweg: Ryan Weaver (@weaverryan auf Twitter) ist bereits ein sehr gutes Argument, sich für einen Workshop zu entscheiden. Als Gesicht von SymfonyCasts ist er ein sehr erfahrener Trainer für Symfony und Programmierung im allgemeinen. Und das geht – wie ich nun erfahren habe – über seine Videotutorials hinaus.

Der Link zum Workshop: https://live.symfony.com/2020-world/workshop#all-about-symfony-s-new-security-component

Die Security Komponente, mit der wir all unsere Projekte ausgestattet wissen, existiert bereits seit Symfony v2.0 und auch wenn sie sich immer weiter entwickelt hat, bleibt sie doch ein sehr sehr großer Monolit in der Welt der Symfony Bundles. Dies soll sich nun endlich verbessern und vor allem lesbarer werden. Ab Sf Version 5.2 wird daher die neue Komponente mit dem Status „experimentell“ integriert. Natürlich vollkommen „Backwards-Compatible“.

Der neue Umfang hält sich dabei augenscheinlich in Grenzen: Wir konfigurieren die Komponenten fast genau so wie bisher, bauen weiterhin auf Events sowie Voter und können zwischen Login-, JSON- und anderen vordefinierten Authentifizierungsmöglichkeiten wählen. Was sich wirklich ändert ist nämlich der Unterbau – und der wurde gehörig ausgemistet. Die Authentifizierung basiert nun auf Passport und Badges, also einem Pass und den darauf geklebten „Abzeichen“. Man wollte hier die Begriffe Nachricht und Stempel vermeiden, wobei der Aufbau dem Messenger sehr ähnelt.

Hinzu kommt, dass sämtliche Logik auf Event-Subscriber verteilt wurde, die auf eines der neuen Events hören und ggf. die Badges auswerten. Da sich an der Mechanik der Guards kaum etwas geändert hat, sollte sich die Umstellung auf die neue Security Komponente recht einfach realisieren lassen.

Ryan stellte uns neben Zoom weitere Tools zur Verfügung: Einen eigenen Slack-Kanal für den Workshop im Symfony-Developer Slack, in dem er regelmäßig nach dem Stand aller Teilnehmer fragte und Meinungen einholte. Zudem CodeBunk – was eigentlich für Code/Job Interviews gedacht ist – jedoch auch gut für kollaborative Dokumentation funktioniert. Hier schrieb er alle Anweisungen, Code-Schnippets und Dokumentation für uns auf, sodass auch ein späteres Nachvollziehen des Wokshops möglich ist.

Wie bereits angemerkt war dieser Workshop fantastisch vorbereitet. Die Aufgaben waren sinnhaft und in eine logische Reihenfolge gebracht. Für alle neuen Funktionen und Schnittstellen der Komponente wurde unser Projekt mit Anwendungsbeispielen erweitert. Mit meinem neuen Wissen könnte ich direkt einige unserer aktuellen Projekte auf das neue Security Feature umschalten. So muss das laufen!

Efficient Doctrine ORM mit Andreas Hucks (1 Tag)

Der Link zum Workshop: https://live.symfony.com/2020-world/workshop#efficient-doctrine-orm

Aller Anfang ist holprig und wir starteten mit Andreas (@meandmymonkey auf Twitter) etwas verspätet in den Workshop zur größten ORM für Symfony. Angedacht war dieser für fortgeschrittene Doctrine Nutzer, jedoch wurden zuerst die Grundkenntnisse auf einen Stand gebracht. Nach etwa einer Stunde durften wir endlich das Workshop-Symfony-Projekt auf die lokale Maschine klonen und uns nach und nach an den Aufgaben versuchen.

Wir starteten mit bereits bekannten Bundles, wie Migrations und Fixtures, bevor wir zu den unterschiedlichen Möglichkeiten der Ausführung von Abfragen kamen:

  • Doctrine Query Language (DQL),
  • QueryBuilder,
  • Mischungen dieser und
  • der native Query Einbettung

Gerade der letzte Ansatz war mir auch noch nicht bekannt, sodass ich zum ersten mal etwas zum ResultSetMappingBuilder hörte. Auch die verschiedenen Formen der Table-Inheritance sowie das Setzen der Indizes waren anschaulich erklärt.

Zuletzt sollten eigene Variante der Hydration, Locking von Resourcen und optimiertes Caching im Detail betrachtet werden. Für die letzteren beiden hatten wir leider keine Zeit mehr und haben nur noch die Theorie behandelt. Zum Schluss erzählte uns Andreas Hucks noch ein paar Anekdoten aus seiner Welt – der Optimierung von Symfony Projekten anderer Kunden. Häufige Fehler die durch falsche Konfiguration entstehen oder die falsche Nutzung der fetch="EAGER" Annotation. Ehrlich gesagt hätte ich mir sogar einen ganzen Workshop nur zu diesen Anekdoten vorstellen können.

Ich bin nicht sicher, ob Andreas als Vertretung eingesprungen ist oder vielleicht im letzten Moment noch die Planung umgeworfen wurde, aber alles in allem war dieser Workshop kein Vergleich mit dem vom Vortag. Der Toolstack beschränkte sich einzig auf Zoom, was einfach nicht optimal funktionierte. Wir haben insgesamt zu viel Zeit für die offensichtlichen Sachen und Grundkenntnisse gelassen, bevor der Workshop wirklich den Titel „Effizient“ verdient hätte. Schade!

Dennoch eine gute Zusammenfassung und lehrreich für alle, die bisher wenig Kontakt mit einer ORM hatten. Vielleicht können wir zu einem späteren Zeitpunkt noch einmal an die übrigen Aufgaben des Workshops anknüpfen.

Konferenz

Format

Aus den Räumlichkeiten von SensioLabs heraus, wurde die Konferenz mit der Software Hopin abgebildet. Hopin bietet einen Rezeptionsbereich, in dem man sich zur besuchten Veranstaltung belesen kann, den Bereich Sessions, in dem die drei parallelen Konferenz-Tracks abgebildet wurden, einen Networking Space, in dem man sich zufällig mit anderen Konferenzteilnehmern verbinden kann und die Expo, in der sich die Sponsoren präsentieren können. Dazu gab es einen allgemeinen Konferenzchat und je einen für die Konferenztracks und die Sponsorenstände.

Zur Bespielung der drei Tracks haben alle Speaker ihre Vorträge aufgezeichnet, so dass diese vom Organisationsteam in den passenden Zeitslots eingespielt werden konnten. Der Speaker war während dessen im Chat, um Fragen für die anschließende Q&A Session zu sammeln oder direkt zu beantworten und stand im Anschluss etwa 5 Minuten lang per Video zur Verfügung.

In den Pausen hatten die Sponsoren die Möglichkeit sich im Expo-Bereich zu präsentieren und persönlich mit den Teilnehmern in Kontakt zu kommen. In meinen Augen am besten nutzte das blackfire.io Team diesen Raum, die zu jeder Gelegenheit Live Demos von ihrem Profiler zeigten. Von den anderen Sponsoren habe ich dies nicht mitbekommen.

Nach jedem Konferenztag wiederholte sich dieser Ablauf noch einmal für die Planetenbewohner, für die die europäische Zeitzone nicht so bequem ist.

Keynote: Bridging Communities via Symfony UX – Fabien Potencier

Mit dem Startschuss der Konferenz stellte Symfony’s CEO Symfony UX vor. Ein Weg, um HTML Elemente aus PHP Code heraus mit Javascript aufzumotzen. Ob die Welt ein weiteres Javascript Ökosystem braucht, ist mir nicht so klar. Um einen Prototypen für einen Kunden etwas aufzuhübschen, könnte es ganz nützlich sein, falls dieses Konzept von der Community angenommen wird und es bald mehr als nur eine Handvoll dieser Komponenten gibt.

Fabien’s keynote in practice: new JavaScript tools for Symfony – Titouan Galopin

Das neue Mitglied im Core Team ist zuständig für die Entwicklung von Symfony UX. Er gab eine etwas ausführlichere Einführung in dieses neue Konzept, das die technischen Hintergründe mehr beleuchtete.

Serializer Demystified – Denis Brumann

Denis Brumann erklärte, was alles beim Prozess der (De-)Serialisierung passiert und wie man selbst dort erweiternd eingreifen kann. Für mich, der sich diese Komponente noch nie genau angesehen hat, sehr informativ.

Streaming: an alternative to CRUD & batch processing – Samuel Roze

Symfony Core Maintainer Samuel Roze erklärte am Beispiel einer eCommerce Plattform die Vorteile einer Architektur, die per Event-Streaming funktioniert, gegenüber klassischen CRUD Applikationen. Dabei ging er auf die Besonderheiten und Fallstricke so eines Systems ein. Sehr informativ und sehr charmant mit handgemalten Skizzen illustriert.

Elasticsearch with Symfony, from development to production – Damien Alexandre

Für den Fall, dass man aus einer Symfony Applikation heraus mit einer Elasticsearch Instanz sprechen möchte, gab Damien Alexandre seinem Publikum Taktiken, Best Practices und passende Pakete mit auf den Weg.

Keynote: Modern Security with Symfony’s Shiny new Security Component – Ryan Weaver

Den Abschluss des ersten Tages bereitete Ryan Weaver – of SymfonyCasts fame – mit der Beleuchtung der neuen Security Komponente. In seiner unnachahmlich energetischen Art und Weise stellte er die neue und alte Arbeitsweise gegenüber, blickte etwas unter die Haube und zeigte einen möglichen Migrationsweg. Das war alles sehr unterhaltsam und spannend.

Keynote: For the Users – tech, ethics and you – Mark Nottingham

Tag zwei eröffnete mit einer Keynote, die der letztjährigen inhaltlich sehr ähnelte. In dieser hob Mark Nottingham mahnend den Zeigefinger mit Blick auf ethische Fragen, die sich die großen Plattformen, aber auch wir Entwickler stellen müssen, um nicht Stereotypen, Vorurteile und andere ausgrenzende Faktoren in unsere Systeme einzubacken.

Ein wichtiges Thema, bei dem die Verantwortung klar bei den Technologisten liegt, da der langsame (welt-)politische Apparat keine Chance hat, mit der rasanten Geschwindigkeit sich entwickelnder Technologien regulierend mitzuhalten.

Composer 2 – Nils Adermann, Jordi Boggiano

Die beiden Maintainer des Dependency Management Tools Composer erklärten in ihrem Talk was sie für die neue Major Version alles verbessert haben und wie sich dies auf Geschwindigkeit und Speicherverbrauch auswirkt.

The absolute beginner’s guide to Domain Driven Design with Symfony – Neal Brooks

Den für mich wohl besten Talk der Konferenz – sowohl von der Infomationsdichte als auch thematisch – war der rasante Talk von Neal Brooks zum Thema Domain Driven Design.

Er gab ein kurze Einführung in Begrifflichkeiten und Kernkonzepte, um dann an einem praktischen Beispiel vorzuführen, wie man DDD in einer Symfony Applikation umsetzen könnte.

Zu dem Thema werde ich dann wohl mal ein Buch lesen müssen.

The modern and fast HttpClient – Bruno Henrique De Souza

Der HttpClient dürfte den meisten mittlerweile ein Begriff sein. Dieser Talk war eine gute Einführung in dessen Konfigurationsmöglichkeiten und Benutzung.

Password Hashing and You – Chris Holland

Diese Grundlagenveranstaltung von Chris Holland grenzte zunächst die Begrifflichkeiten Encoding, Encryption und Hashing von einander ab, um dann die Unterschiede zwischen Passwort-Hashing und dem Hashing von Payloads zu Integritätssicherung zu beleuchten. Dabei ging er ausführlich darauf ein welche Algorithmen sich warum für welchen Zweck besonders eignen. Nicht viel neues, aber sehr gut aufbereitet.

PHP + Minecraft

Thomas Berends fragte sich wohl einige Zeit, wie man zwei Hobbies miteinander verbinden kann, bevor er Minecraft mit Symfony zusammen brachte. Was dabei heraus gekommen ist, sah jedenfalls unheimlich interessant aus und hat mich inspiriert, auch wieder mehr mit meinem Minecraft Server herum zu spielen.

Ergebnis: Auslesen der Spielstände von Minecraft, um damit zu interagieren oder einfach nur neue Informationen zu gewinnen. Zum Beispiel eine Google-Maps ähnliche Karte der Minecraft-Welt mit leaflet.js. Geil!

Dependency Injection demystified

Dass Alexander M. Turek als Freelancer auch viel zum Symfony Framework beisteuert, wusste ich schon vorher. Dass er zudem die Dependency Injection vollständig durchdrungen hat, konnte er uns an diesem Tag vorführen. Sein Talk war sehr aufschlussreich und hat mit einigen Beispielen die Funktionsweise des ominösen „Containers“ hinter Symfony erklärt. Danke dafür!

Lock & Semaphore: The gatekeepers of your resources

Jérémy Derussé ist Core-Team Mitglied für das Framework und verantwortlich für ein Bundle, welches er uns hier vorstellte. Hintergrund ist das Sperren einer Ressource (Datenbank oder Datei), sodass nur ein einzelner Nutzer gleichzeitig daran arbeiten kann. Damit verhindert man Datenverluste, sollte es jemals zur gleichzeitigen Bearbeitung einer Ressource kommen.

Der Talk strotzte nur so vor Anwendungsbeispielen und Lösungen für all diese Problem. Ich wusste zuvor nicht einmal, dass es einen Unterschied zwischen Semaphore und dem Lock gibt. Neugierig? Hier gibt es die Slides!

WebAuthn – Technology and integration in a Symfony project

Gleich zu Beginn zeigte uns Stefan Richter (@brokoskokoli auf twitter) einen Login Vorgang, ohne dabei ein einziges Passwort eintippen zu müssen. Noch vor etwa 2 Jahren habe ich selbst die U2F Bibliothek von Google in ein Projekt eingebaut, um mich mittels YubiKey zu authentifizieren. Heute heißt das „WebAuthn“ und ist aus Sicht eines Entwicklers noch einmal viel einfacher geworden. Dafür hat Stefan zwei verschiedene Bundles getestet und uns präsentiert.

Keynote: What’s new in PHP 8.0? – Nikita Popov

Den Rausschmeißer der Konferenz spielte Nikita Popov – einer der drei Vollzeit PHP Maintainer – der die wichtigsten Neuigkeiten in der brandneuen PHP Version 8.0 vorstellte. Da die neue Major Version einige tolle Features enthält, kam diese Keynote auch besonders gut beim Publikum an.

Unser Fazit zur SymfonyWorld 2020

Auch in dem neuen ungewohnten Format funktionierte die SymfonyWorld sehr gut. Technische Probleme hielten sich in Grenzen, die Organisation war straff und die Qualität der Talks und Workshops war wie gewohnt hoch. Man kann so eine Konferenz also auch sehr gut aus den eigenen vier Wänden besuchen.

Zu wenig genutzt und schlecht kommuniziert waren die Live Demos an den Sponsorenständen und das Dauerproblem der Diversität war auch in diesem Jahr zugegen. Von den 30 Speakern waren nur zwei weiblich und auch aus dem Organisationsteam war nur eine Frau sichtbar. An den Sponsorenständen habe ich nur Männer gesehen. Das ist nach wie vor sehr schade und meiner Ansicht nach ein echtes Problem für die Community.

Trotzdem waren die vier Tage toll und wir kommen im Sommer gerne zur nächsten
SymfonyWorld. Auch virtuell.

Schreibe einen Kommentar

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