Zum Hauptinhalt springen

Die letzten Tage in Griechenland, das Betrachten der täglichen News aus der "sicheren" Entfernung, das nur leichte Überfliegen der Nachrichten meiner Filterbubble und das Konzentrieren auf die wesentlichen Dinge (nämlich Entspannung und Zeit mit der Familie) haben mich ziemlich nachdenklich gemacht.

Es war mein erster Besuch von Griechenland und leider ein wenig zu touristisch geprägt. Etwas über eine Stunde nach Süden von Thessaloniki entfernt, gab es wenig Möglichkeiten mehr über dieses Land zu erfahren. Kulturell war dort echt tote Hose, alles war nur auf den Tourismus ausgelegt. Das wenige, was man über Griechenland erfahren konnte, war, dass es den Griechen echt nicht so prall gehen muss. 

Und dann liest man täglich, wie hier in Deutschland die politische Diskussion immer weiter vor die Wand gefahren wird. Und gefühlt ein Stillstand herrscht, was andere Themen außer der Asyl- und Flüchtlingsdebatte angeht. Es kann doch nicht sein, dass es in der politischen Debatte nur noch um Einwanderung geht und von Sektoren wie Bildung (das wichtigste überhaupt!), Gesundheit und Auffangen der unteren sozialen Schichten keine Rede ist.

Ich denke immer mehr darüber nach, mich in irgendeiner Weise politisch zu engagieren, um mir später nicht selber vorwerfen zu müssen, dass ich einfach nur zugeschaut habe, wie die rechten Idioten die Oberhand gewonnen und dieses Land kaputtgemacht haben. Ich weiß nur leider noch nicht wie, weil ich mich derzeit einfach mit keiner Partei identifizieren kann.

Eine vollkommene Deckungsgleichheit mit einem Parteiprogramm mit seinen Ideologien bekommt man ja sowieso nie hin, aber bei mir hapert es allein schon an der grundsätzlichen Ausrichtung. CDU und Konsorten scheiden aus, bei den Linken fand ich schon immer eigentlich nur Gregor Gysi ansprechend, die Grünen sind mir einfach nicht mehr ihrer Ideologie treu und die SPD richtet sich seit Jahren nur noch zu Grunde. Obwohl ich bei der SPD die größte Überschneidung mit meinen politischen Interessen finde, zögere ich noch, wohin die Reise gehen soll.

Auch wenn ich immer mehr das Gefühl bekomme, dass es so langsam Zeit wird, den Arsch hochzubekommen. Und aktiv zu werden.

Und schon ist der letzte Tag der Developer Days da. Schön wars, inspirierend und aufregend zu gleich. Es war ja mein erstes Event überhaupt in der TYPO3 Community und ich hatte von Anfang an das Gefühl integriert zu sein. Ich habe eine Menge netter Leute getroffen, die man bis jetzt nur von Twitter, Slack oder von ihren Arbeiten im TYPO3 Universum her kannte. Ich glaube, ich werde immer mal wieder auf Events vorbeischauen und auch die Form der Barcamps ausprobieren.

How to better maintain your (public) extensions

Nicole Cordes zeigte ihr TravisCI-Setup, mit dem sie eine Menge Tasks abfeuert: PHPLinter zum Überprüfen der Kompatibilität, Unit und Functional Tests, Überprüfen der Codequalität per SonarQube und abschließendes Veröffentlichen im TER, wenn alle Tests durchgelaufen sind.

Auf den gesamten DevDays kristallierte sich heraus, dass es ohne Automatisierung einfach nicht mehr funktioniert. Keiner möchte mehr diese Tasks manuell ausführen, weil es nur unnötig Zeit kostet. Aber diese Tasks einfach wichtig sind und immer wichtiger werden, vor allem, wenn man in Teams unterwegs ist. Dienste wie SonarQube können die Qualität des Codes erhöhen und vor allem auf einen fest definierten Standard bringen. Tests sorgen dafür, dass der ganze Kram in erster Linie funktioniert und Änderungen nichts kaputtmachen.

Es wird Zeit, dass alles auch zu automatisieren!

TYPO3 Performance

Speed ist alles, wenn man eine Website aufruft. Dauert das Laden/Anzeigen der Seite zu lange, ist der Tab schon wieder zu.
Marcus Schwemer von in2code präsentierte seine sieben Schichten der Performance Onion (Delivery, Frontend, TYPO3 Konfiguration, Extensions, TYPO3 Core, Services und Hardware).

Angefangen beim Ausliefern an den Browser mit angepassten Caching-Hinweisen (Expire-Header, Cache-Control-Header), über minimiertes und gezipptes Ausliefern von Ressourcen, über das Verwenden von Cache-Extensions wie staticfilecache, Optimierung der GarbageCollection der TYPO3-Cache-Tabellen, das Verwenden des Caching-Frameworks beim Entwickeln eigener Extensions bis hin zur Optimierung der PHP-Konfiguration und schlußendlich dem Verbessern der Hardware-Architektur war alles dabei.

Am dritten Tag war ich etwas zwiegespalten, welche Sessions ich besuchen wollte, weil es leider ein paar Überschneidungen gab. Auf der einen Seite wollte ich mir die PHPUnit-Session anschauen, um nochmal einen Tritt in den Allerwertesten zu bekommen, viel mehr Unit-Testing zu betreiben, auf der anderen Seite hat mich aber die Nachmittagssession über das "perfekte" composer-Setup interessiert. Letzteres hat dann gewonnen.

How TYPO3 can help you with GDPR

Und schon wieder eine GDPR-Session! Wer des Themas noch nicht überdrüssig ist, kann sich gerne mal neben den GDPR-Änderungen in den TYPO3-Cores von 6.2 ELTS bis hin zum Master auch die gdpr-Extension von Georg Ringer, der den Talk gehalten hat, anschauen.

Georg zeigte am Anfang den Scheduler-Task und die IP Anonymization API, die in TYPO3 enthalten ist, wobei diese nur Definitionen für sys_log und indexed_search bereithält, für andere Extensions muss man dann seine eigenen Konfigurationen schreiben bzw. werden hoffentlich diverse Extensions angepasst.

Daneben gibt es ja die schon vorhandenen Tasks des GarbageCollectors und vom Recycler den Task zum Entfernen gelöschter Inhalte aus der Datenbank.

Im Zuge der DSGVO muss man ja vielleicht sogar ein Verfahrensverzeichnis erstellen, was dann einhergehen sollte, dass Backend-Zugriffe restriktiver gehandhabt werden. Denn nicht jeder BE-User muss persönliche Daten einsehen können.

Neben so Allgemeinplätzen wie dem Einbinden von Inhalten fremder Plattformen wie YouTube, ging es dann noch um die in der GDPR/DSGVO verankerten Notwendigkeit von Datenlöschung und Export von personenbezogenen Daten bis hin zur Verschlüsselung von sensiblen Daten direkt in der Datenbank.

Zum Schluss stellte er noch seine gdpr-Extension vor, die es auch in einer zahlungspflichtigen Variante gibt. Diese enthält dann ein Backend-Modul zum Löschen und Pseudonymisieren von Datensätzen mittels Faker.

Slides zu der Session kann man hier finden.

Create your perfect TYPO3 (Composer) project setup

In der Vorbereitung auf die TCCI-Prüfung musste ich mich mit der "normalen" Installation von TYPO3 beschäftigen und stellte mal wieder fest, wie einfach nicht nur die Installation, sondern auch das Verwalten von Abhängigkeiten mit composer geworden ist.

Das "perfekte" composer Setup von Helmut Hummel kommt meinem schon recht nahe (beziehungsweise umgekehrt): es wird alles nur noch per composer verwaltet, mit TYPO3 Console wird die PackageStates geschrieben, die Datenbankstruktur wird auf den neuesten Stand gebracht und die Verzeichnisstruktur wird angepasst.

Auch die Trennung von web und vendor halte ich für obligatorisch. Konfigurationsdateien und ähnliches gehören einfach nicht ins Webroot. Warum man, wie am Beispiel von T-Mobile Austria erwähnt, ein komplettes git-Verzeichnis auf einen Live-Server deployed werden konnte: naja, jeder hat mal einen schlechten Tag.

Ganz so hart wie man es mit Helmuts typo3-secure-web anstellen kann treibe ich es zwar noch nicht, aber das werde ich mir mal anschauen, ob man das Package auf alle Hosting-Umgebungen, mit denen ich es zu tun habe, verwenden kann.

Äußerst interessant fand ich auch sein Konzept des Environment-Handlings mit typo3-config-handling, dass die gesamte Konfiguration und sogar das Extconf-Handling in Yaml-Dateien auslagert. Ich benutze dafür noch den ApplicationContext, der dann je nach Kontext die LocalConfiguration mit anderen Werten überschreibt, die ich zum Beispiel in Development benötige.

Die Slides seiner Präsentation kann man hier finden.

Docker based demo server

Hannes Lau präsentierte am Freitag, wie man TYPO3 in einem Docker Cloud Server mit Jenkins bereitstellt. Dazu gab es einen Workshop, in dem auf einer Instanz von DigitalOcean Docker-Droplets gestartet wurden. Leider gab es zu wenig freigegebene Droplets, so dass es recht kuschelig wurde in den Teams.

DigitalOcean ist ein Cloud-Provider, der für Docker-Container eine API zur Verfügung stellt, um leicht Instanzen per API-Call hochzufahren. Wenn man solch ein Verfahren nicht tagtäglich verwendet, kommt es einem schon vor, als würde man eher eine Rakete zum Start ins Weltall klarmachen, aber es war schon interessant zu sehen, wie man TYPO3 in einem Dockerimage über Jenkins an eine Cloud-Instanz pushed, die dann auch noch per Loadbalancer-System überwacht wird. Für größere Projekte bestimmt mal interessant, in denen es darauf ankommt, zeitnah auf unterschiedliche Anforderungen auf die Systemlast zu reagieren.

How do I get my deployment for a project / TYPO3 extension running with GitLab CI

Den unterhaltsamsten Workshop hat bisher Thomas Löffler gegeben, in dem er Einblick in seinen Gitlab-Workflow gab, wie er zum Einen Code auf unterschiedliche Systeme deployed und zum Anderen Tests auf seine Extensions fährt. 

Ich frage mich ja, warum GitHub seit Jahren diesen Teil des Entwicklerlebens verschläft und nicht selber Tools für Continuos Integration und Delivery anbietet. Hat man seinen Code bei GitHub liegen, muss man auf externe Dienstleister zurückgreifen, um seinen Kram auf diverse Server zu packen.

Gitlab bietet einem dies an und es war nett anzuschauen, wie ähnlich sich die ganzen Integrationen doch sind. BitBucket hat mit seinen Pipelines ein sehr ähnliches Werkzeug geschaffen, wobei die Umsetzung von Gitlab in der Webansicht schöner gestaltet ist. Auch wenn man das eigentlich nicht braucht, denn was ist schon schöner als ein Task, um den man sich nicht kümmern braucht, weil er sich sowieso bei einem Fehlschlag per E-Mail meldet?

Coding Night

Never change a running system! Never! Auch nicht aus "Gier" endlich einen Dark Mode in seinem macOS haben zu wollen. Denn das Update auf die Beta hat mir den Abend vermiest. Zwar war ich dann doch in der Lage über ddev mir das TYPO3 zu installieren, aber als dann nach meinem ersten Code-Review überhaupt, Docker abgeschmiert ist und den Container mitgerissen hat, hatte ich ganz schlechte Laune. Vielleicht auch einfach zu wenig Bier getrunken...

Etwas aufgeregt bin ich zu meinen ersten TYPO3 Developer Days gefahren. Auf der einen Seite, weil ich endlich mal meine Zertifizierung zum Integrator ablegen wollte, auf der anderen, um auch mal die Gesichter zu den ganzen Commits, Extensions und Twitter-Accounts kennenzulernen, die einen über die ganzen Jahre während des Tages begleiten.

Keynote

Christian Kerschbaum, Anwalt für IT-Recht, hält die Keynote über Data Protection, GDPR/DSGVO und ihre Auswirkungen und deren Anforderungen an die IT. Es war ein nettes Resümee der letzten Wochen, in denen bestimmt bei jedem der ein oder andere Kunde angerufen hat, um seine Website fit zu machen und das drohende Damoklesschwert abzuwenden, das einem medial immer wieder vor Augen geführt wurde.

Seine Ausführungen zur Verwendung von Google Analytics (setzen eigentlich so wenige Google Tag Manager ein?), dem Verwenden von Cloud Hosting, dem Einbinden von Social Networks wie Facebook bestätigen die Entscheidungen, die in letzter Zeit umgesetzt wurden. Auch das leidige Einbinden von Cookie Bannern sieht er genauso kritisch, denn ein einfaches Hinweisen auf Cookies ohne OptIn ist ja eigentlich auch sinnlos. Da reicht es, in den Datenschutzbestimmungen darauf hinzuweisen. Vor allem, weil in dem Moment des Hinweises in den meisten Fällen die Cookies schon gesetzt sind. Und wie speichert man eigentlich die Zustimmung oder Ablehnung von Cookies ab? In einem Cookie?

Dann ging es noch um die Kommunikation per unverschlüsselter E-Mail, was ja streng genommen auch nicht mehr zu verantworten ist. Denn in jeder E-Mail an und von Kunden sind sensible Daten zu Geschäftsvorgängen enthalten, die geschützt werden wollen. Aber wer schon einmal versucht hat, technisch nicht so versierten Gesprächspartnern das Konzept von Verschlüsselung (vor allem über PGP/GPG) beizubringen, weiß, wie große Augen und Kopfschütteln aussehen.

Weitere Themen waren die allgemeinen Dinge der DSGVO wie das Anlegen eines Verfahrensverzeichnisses (sollte jeder wenigstens in Kurzform bereithalten, auch wenn er aufgrund der Mitarbeiterzahl nicht darunterfällt) und die Frage, wie gut man denn eigentlich seine Kunden kennt. Wer kann aus der Hüfte Verantwortliche benennen, die überhaupt zeichnungs-/entscheidungsberechtigt sind oder wen man eigentlich im Notfall belangen kann?

Zum Schluss ging es dann noch um Dokumentation von Lizenzen/Nutzungsrechten von Bildern, die man vielleicht in Produkten/Webseiten seinen Kunden weiterverkauft hat. Sollte man auf jeden Fall besitzen, um im Fall einer Abmahnung des Kunden auf der sicheren Seite zu sein.

Frontend Prototype Integration

In der Session wurde gezeigt, wie man Twig als Template-Engine verwendet. Der Gedanke an dieser Art der Implementation war, dass die Frontend-Entwickler den Prototypen komplett unabhängig von TYPO3 entwickeln und man ohne weiteren Aufwand diese Templates dann in TYPO3 einbinden kann. Also ohne erneut diesen Code in irgendeiner Form anfassen zu müssen. 

Dafür wurden eigene Controller entwickelt, die sich komplett um die Datenaufbereitung kümmern und an die Twig-Templates dann nur noch ein Daten-Array schieben. In den Templates findet dann keine weitere Logik mehr statt, wie man sie zum Beispiel in der Integration von Fluid in TYPO3 findet. Zum Beispiel werden URLs direkt im Controller aufgelöst und nicht per ViewHelper wie in Fluid.

Interessante Herangehensweise jedenfalls, wenn man, wie in vielen großen Firmen üblich, strikt getrennte Frontend- und Backend-Entickler hat, wobei die erste Fraktion wirklich nur HTML/CSS/Javascript entwickelt. Meiner Meinung nach verschiebt sich hier aber nur der Aufwand und die Kommunikation nach vorne, da zwischen Back- und Frontend vorher noch klarer kommuniziert werden muss, welche Daten in welcher Form im View ankommen.
Von der Trennung zwischen Controller und View ist dies aber aber eigentlich zu begrüßen, weil streng genommen ja eigentlich keine Logik im View (außer Schleifen und Abfragen, ob Partials überhaupt abgefeuert werden sollen) vorhanden sein soll.

10 Tips for TYPO3 Upgrades

Sanjay Chauhan, CTO einer indischen TYPO3-Agentur, führte in zehn Punkten für Marketing, Entwickler und Integratoren Punkte auf, warum es wichtig ist, TYPO3-Installationen auf dem neuesten Stand zu halten, wie man vorgeht und welche Tools sie dafür so einsetzen. 

Im Marketing-Teil ging es vor allem um Argumente, Kunden die Vorteile (Sicherheit, Geschwindigkeit, neues Backend) schmackhaft zu machen. Für Integrator und Anwender gab es Einsichten, wie sie vorgehen, um die verwendeten Extensions, Core und Konfigurationen zu analysieren, um dann ein Upgrade-Konzept zu verfassen.

Mehr so grundsätzliches Wissen wurde vermittelt, was für den ein oder anderen bestimmt Neuland war, wenn man nicht täglich damit zu tun hat.

Hamburg ist ja wirklich die einzige Großstadt in Deutschland, in der ich mir vorstellen könnte zu wohnen und zu arbeiten. Vielleicht nicht mittendrin, sondern irgendwie im Speckgürtel mit S-Bahn-Verbindung. Auch wenn sie so langsam mal den Hafen und die Landungsbrücken mal wieder in den Griff bekommen sollten. Aber ich glaube ja, wenn man in Hamburg wohnt, dass man sowieso dort dann selten ist.

Trotzdem macht es immer wieder Spaß nach Hamburg zu fahren und drei bis vier Mal im Jahr schaffen wir es auch. Dieses Mal habe ich dann mal die Wasserseite entdeckt, da wir mit Speedbooten auf der Elbe unterwegs waren. Wie so richtige Touris halt.
Ich kann aber jeden Mal empfehlen diese Tour mitzumachen: 90 Kilometer pro Stunde auf einem Element, das bei dieser Geschwindigkeit bestimmt die Härte einer Backsteinmauer hat, sind schon eine einmalige Erfahrung.

Ich weiß nicht, was mich damals geritten hat, Wordpress als CMS für diese Seite zu verwenden. Klar, es ist einfach eingerichtet und durch die tausenden Plugins leicht zu erweitern. Themes gibt es auch mehr als genug in freien Varianten oder für einen kleinen Obulus zu kaufen. Mit Wordpress kann man sehr leicht sogar als technisch nicht so versierter Anwender ein Blog oder sogar kleine Webseiten mit aufziehen.

Und trotzdem hat es mich immer gestört, dass ich nicht TYPO3 benutze. In meinem Alltag arbeite ich zu 99% mit TYPO3. Sei es, um Anwendungen zu integrieren oder im TYPO3-Framework umzusetzen, Installationen zu administrieren bis hin zum Schreiben von Frontend-Sachen wie CSS oder JavaScript. Meiner Meinung nach gibt es nichts, wofür man TYPO3 nicht verwenden könnte, um Webseiten oder Anwendungen im Web zum Leben zu erwecken.

Und jetzt habe ich an diversen Abenden die Inhalte der Wordpress-Installation in ein frisches TYPO3 migriert. Man sieht zwar der Seite an, dass ich absolut kein Frontenddesigner bin und das Ganze basiert auch auf Bootstrap, aber ich nehme das erstmal als einen Anfang, der stark verbesserungswürdig ist. In erster Linie ging es mir darum, die Inhalte weitestgehend zu übernehmen. Bei gleicher URL-Struktur (weil sie vollkommen okay ist) und vor allem mit den gesamten Möglichkeiten, die einem TYPO3 bietet. Und Wordpress nicht.

Die Umstellung und die vor kurzem in Kraft getretene DSGVO habe ich dann noch zum Anlass genommen diverse Features (vorerst) auszubauen. Auch wenn ich die Seite erstmal weiter als Blog sehe, gibt es keine Kommentarfunktion. Ich plane diese aber wieder in naher Zukunft wieder einzubauen. Bis dahin kann man gerne per E-Mail (PGP steht hier) oder über Twitter mit mir reden.

Am Wochenende haben wir der Konfirmation der Tochter einer Freundin beigewohnt. Und ich habe mal wieder gesehen, dass ich mit Religion im Allgemeinen und Kirche im Speziellen einfach nichts anfangen kann.
Das fängt an mit der Fixierung auf diese ominösen Geschichte auf der alles basiert und geht hin bis zu der seltsamen Art, die religiöse Leute in meinen Augen an sich haben.

Ich würde nicht auf die Idee kommen, jemanden abzusprechen gläubig zu sein. Nur ich kann mit Glauben und Religion nichts anfangen, da ich das Konstrukt, auf dem das Ganze basiert, nur für eine ziemlich schlechte Geschichte halte. Gewürzt mit Allgemeinplätzen und Vorgaben, wie ich mein Leben zu führen habe, die meiner Meinung nach, recht wenig mit der Realität oder einer wünschenswerten Idee zu tun haben.

Hinzu kommt noch, dass sich keiner aus der Kirche darüber aufregt, dass politische Parteien und auch andere Vereine sich das Wort "Christlich" auf die Fahne schreiben, mit der Inklusion, die in der Kirche in Predigten gerne unterstrichen wird, recht wenig zu tun haben.

Das Gute ist, dass keiner weiß, was (und ob überhaupt) einem nach dem Tod erwartet. Das wird bestimmt lustig und aufregend werden.