SymfonyWorld Online 2020
Der Virus konnte zwar die Teilnahme an der SyfmonyLive in Persona verhindern, jedoch wird kein Virus die Symfony Community stilllegen! Dieses Jahr fand unsere Konferenz mit dem Zusatz „World“ vom 1. zum 4. Dezember online statt und wir waren wieder dabei! Hier meine Erfahrungen der diesjährigen SynfonyWorld Online 2020.
Die Aufstellung
Auch eine Online-Konferenz will gut vorbereitet sein, weshalb das Event dieses Jahr etwas später statt fand, als üblich. Auf der anderen Seite war dies auch eine „World“ Veranstaltung und nicht beschränkt auf ein einzelnes Land oder gar eine Stadt. Wie auch im vergangenen Jahr wurden Teilnehmer 2 Tage mit Konferenzen – und wenn gewünscht – auch mit 2 weiteren Tagen an Workshops versorgt. Dabei wurden diesmal auch Workshops über beide Tage angeboten. Wie immer gingen diese der Konferenz voraus. An Tag fünf (Samstag) sollte es außerdem einen Hacking-Day geben.
Dieses Jahr wurde die Veranstaltung wieder von der VCAT Consulting GmbH für meinen Kollegen Sebastian und mich gesponsert. SensioLabs hat die Organisation sowie die Monetarisierung für diese Veranstaltung komplett auf ihre Website verlagert. Wir bekamen nach der Anmeldung jeweils einen „Voucher“, was einer Zeichensequenz entspricht, den wir in unserem Symfony-Connect Account hinterlegen konnten. Damit waren wir offiziell Teilnehmer und hatten (etwa eine Woche vor Beginn) die Möglichkeit, die Workshops für die ersten beiden Tage zu planen. Bei Workshops und Konferenz wollten wir möglichst das gesamte Programm unter uns aufteilen.
Die Workshops
Während sich mein Kollege für den zweitägigen Workshop „Mastering OOP & Design Patterns“ entschied, wollte ich auch erst einen zweitägigen Workshop wählen. Kurz vor Beginn des Event wurde dieser jedoch als eintägig eingestuft und ich bekam noch mehr Auswahl geschenkt.
Alle Workshops wurden innerhalb von Zoom Meetings ausgetragen. Alle weiteren Tools waren für Veranstalter und Teilnehmer optional. Wir rechneten daher mit Gruppen in dreistelliger Teilnehmerzahl, wurde aber eines besseren belehrt: In unseren Wokshops nahmen gerade einmal 30 Entwickler teil.
„All about Symfony’s new Security Component“ mit Ryan Weaver
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
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.
Die Konferenzen
Da dies die erste Live Konferenz für die Symfony Community war, war auch das Tool HopIn für uns alle Neuland. Es funktionierte jedoch sehr gut und hat den Charakter einer Konferenz wunderbar nachbilden können.
Die Website bildet eine Bühne ab, auf der die Hauptveranstaltung läuft sowie eine Seite für die Sessions, auf der parallel einzelne Vorträge angeboten werden. Zusätzlich gibt es einen Chat, der nach Räumen aufgeteilt oder auch für alle einsehbar ist. Auch Abstimmungen sind möglich. Neben den Räumen gibt es einen Networking Space, in dem man sich mit einer zufälligen anderen Person für 3 Minuten verbinden kann. Auch wenn ich persönlich kein Fan dieses Features bin, habe ich doch gerne auf der Expo vorbei geschaut. Hier hatten die Sponsoren ihren eigenen Kanal, um Produkte zu zeigen oder auf ihr Können aufmerksam zu machen. Wie immer hatte SensioLabs einiges vorbereitet.
Die Keynotes
Wie jedes Jahr startet und endet eine Symfony Konferenz mit einer Überraschung. Gleich zu Beginn wurden wir also mit der Symfony UX Initiative beglückt. Diese bringt das Framework mit JavaScript in Kontakt, wobei der Aufwand so gering wie möglich sein soll. Mit nur wenigen Einstellungen und dem Hinzufügen von Composer-Paketen(!), werden Websites nun also mit mehr Benutzerfreundlichkeit durch natives JS aufgehübscht. Im Talk wurde dafür das Symfony Projekt aus dem Buch um ein Picture-Upload erweitert, wobei sich das Bild zuschneiden ließ.
Wir erhielten außerdem einen Einblick in die Wartungsroutinen und die Weiterentwicklung des Frameworks. Es wurden neue Core-Team Mitglieder vorgestellt sowie die Möglichkeiten, mit der die Community am Projekt mitarbeiten kann. Dann sprach Mark Nottingham über die Bedeutung der Ingenieure in der der heutigen Zeit, dem Konsum von Wissen und Medien sowie dessen Bedeutung für „die breite Masse der Menschheit“ in seinem Talk „For the users: tech, ethics and you“.
Kurz vor Schluss hörten wir Nikita Popov mit einer Zusammenfassung zur neuen PHP 8.0 Version. Die neue Version verspricht wieder Verbesserungen in hohem Maße und wird dafür fast gar keine Breaking Changes einführen. Neben völlig unerwarteten Tools kommen auch langersehnte Features endlich in die Sprache. Wir warten nun alle schon sehr gespannt auf unseren ersten Anwendungsfall mit der neuen PHP Version.
Ganz zum Ende der Konferenz wurden wieder die zukünftigen Konferenzen veröffentlicht. Wie auf der Webseite den Symfony Konferenzen zu sehen, wird in den kommenden Monaten wieder auf Live-Events gesetzt. Da für Covid-19 auch noch kein Ende zu erkennen ist, war dies zu erwarten. Schön ist jedoch, dass es nicht nur eine weitere „World-Conference“, sondern auch die „lokal beschränkten“ Konferenzen für mehrere Länder wieder geben wird.
Die Sessions
Zuallererst: Alle Speaker haben einen wahnsinnig guten Job gemacht! Die Talks waren perfekt auf Länge gebracht, immer interessant und aktuell. Auch die Fülle der Themen war großartig: Von ORM bis Resource Locking, von Diversity Themen bis PHP + Minecraft und auch viele Anekdoten sowie die gute alte Mathematik – hier war wirklich alles dabei. Die Organisation war mindestens genauso gut: Da die Konferenz in zwei Zeitzonen statt fand, wurde die Talks zuvor aufgezeichnet und zur passenden Zeit abgespielt. Hierbei waren die Speaker immer anwesend und reagierten im Chat, sowie nach dem Talk per Video, auf die Fragen der Zuschauer.
Auf einige wenige Talks möchte ich an dieser Stelle noch eingehen.
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.
Ein großes Lob möchte ich auch für alle Speaker aussprechen, die sich – vor allem nach der Konferenz – den Fragen des Publikums gestellt haben (zum Beispiel per Twitter) und auch ihre Slides zur Verfügung stellen. Vielen Dank an alle Speaker!
Fazit
Symfony mal anders, aber dennoch großartig! Technische Probleme hielten sich in Grenzen, die Organisation hat gut funktioniert und die Teilnehmer erschienen zahlreich. Die Talks waren durch die Bank weg sehr gut, die Sponsoren hatten Platz, um sich vorzustellen und wir haben auch nach der Konferenz die Möglichkeit, die Videos einzusehen. So hatte ich mir eine Online Konferenz auch vorgestellt!
Die vier Tage voller Wissen und neuen Ideen waren wirklich toll und wir kommen dann gerne im nächsten wieder auf die SymfonyWorld! Jetzt wird erst einmal ausprobiert und die neuen Tools getestet.