Zum Hauptinhalt springen

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.

Auf Twitter wird gerade der Hashtag #gamestruck4 durch die Welt gejagt. Man soll in einem Tweet die vier Spiele benennen, die einen beeinflusst haben. Das ist verdammt nochmal total schwierig!

Wenn ich da auch nur kurz drüber nachdenke, komme ich vom Hölzchen aufs Stöckchen und ich müsste mir eigentlich ein Ranking einfallen lassen, um das wirklich beantworten zu können, ohne dass mir im selben Moment noch weitere Spiele einfallen, die es mehr verdient hätten, meine größten Influencer gewesen zu sein.

Wo fängt man da überhaupt an? Beim 086er, der bei meinem Vater im Büro stand? Beim C64? Beim NES des Kumpels? Und dann? Die ganzen Spiele, die man auf dem C64 gezockt hat, auf dem Amiga, dann meine (gefühlt goldene) Zeit in der Jugend, in der man alles gespielt hat, was nicht bei drei installiert war. Oder später, wenn man aufgrund Zeitmangels noch selektiv Spiele gespielt hat?

Es wird Zeit für eine Liste.

Die Zeiten, als ich mit Hardware beschäftigt habe und genau wußte, welche Grafikkarte, welches Mainboard und welcher RAM gerade der heisseste Scheiss sind, sind schon lange vorbei. Mit Einzug von Apple-Geräten und auch dem Abflauen des Apple-Hypes, in dem man sich noch jede Keynote angeschaut hat, besteht die Notwendigkeit, sich mit diesen Themen zu beschäftigen, nicht mehr. Apple-Geräte sind einfach viel zu teuer, haben selten die neueste Technologie verbaut, funktionieren aber.

Früher hat man bestimmt auch den ein oder anderen Bekannten gehabt, der immer die neuesten Software-Cracks hatte, seine PlayStation 1 mit einem Mod-Chip versehen hat und sich Spiele aus der Videothek auslieh, um sie schnell zu brennen und einfach nur zu sammeln.

Der Wired-Artikel "The teens who hacked Microsoft´s Xbox empire" beschäftigt sich mit dieser Szene und einem speziellen Hacker, dessen Geschichte damals irgendwie an mir vorbeiging. Lag wahrscheinlich daran, dass ich noch nie eine Microsoft-Konsole mein Eigen nannte (PlayStations waren schon immer besser! ;-) ).

Dann gibt es noch ein Interview mit Matthias Schreiber, dem Geschäftsführer der TYPO3 GmbH, in dem man es in erster Linie um die Entwicklung und Ziele von TYPO3 9 geht. Sehr lesenswert.

Der pile of shame an ungelesenen Artikeln wächst und wächst, die Projekte, die ich mir so vorgenommen habe, werden auch nicht weniger (im Gegenteil) und vielleicht ist es eine Idee, durch Niederschreiben von Ideen, Verlinken von Artikeln und Webseiten diese bewußter wahrzunehmen und einzuordnen.

Durch einen Artikel auf kottke inspiriert, dem (noch nicht vollständigen) Schließens meines Facebook-Accounts geschuldet habe ich mir vorgenommen, mein digitales Erbe hier anzutreten. Wie schon mehrere Male vorher fest vorgenommen, versuche ich ab sofort für mich mehr zu bloggen.

Anfangen werde ich damit, dass Tab meines Blogs immer im Browser offen sein wird, um Artikel, die ich lese und spannend finde, zu verlinken und vielleicht sogar zu kommentieren und meine Gedanken dazu niederzuschreiben.

DSGVO

Ich muss mich mal darum kümmern, ob die DSGVO für mich gilt. Wahrscheinlich nicht, weil dieses Blog keine Werbung schaltet, keinen Umsatz in Form von Spenden a la Patreon oder so aeinfährt und auch sonst von keinem Belang ist. Trotzdem mal nach der entsprechenden Passage suchen, da ich ja auch Tracker in der Seite habe. Die könnte ich in dem Zug auch mal ausschalten.

Lustiger wird es heute nicht

Martin Sonneborn hat mal wieder eine Rede im EU-Parlament gehalten. Zum Thema Syrien und Angriffskriege im Allgemeinen. Recht kurz und ich bin immer noch zwiegespalten, wie ich mit der Partei Die Partei umgehen soll. Ob Satire wirklich konstruktiv Politik machen kann oder ob es nur dazu dient, kurz eine Anregung zum Nachdenken zu erhalten.

In meiner Kindheit habe ich Comics verschlungen. Angefangen mit Mickey Mouse und Fix und Foxi über Asterix und später dann die Perlen aus dem Carlsen Verlag wie Gaston und Clever & Smart.
Als das iPad herauskam, gab es auch schnell Apps, mit denen man sich ganze Reihen von Batman-Comics herunterladen konnte. Was sich bei mir schnell im Geldbeutel bemerkbar machte, da so eine Reihe relativ kostengünstig (ich glaube so um die 4-5 Euro, wenn ich mich nicht falsch erinnere) war, aber der Klick, um die nächsten Comics zu lesen, war auch zu schnell gemacht.

In den letzten Jahren habe ich mir dann immer den neuesten Asterix geholt und auch den besten Band (Asterix bei den Schweizern!), aber so richtig gepackt hat es mich nicht. Irgendwie waren die Geschichten einfallslos und der klassische Aufbau von Asterix-Panels konnte mich auch nicht hinter dem Ofen hervorholen. Auch wenn man das den neuen Machern zugutehalten kann, dass sie dem Stil treu bleiben und Asterix nicht einfach kaputtmachen.

Kurz nach Weihnachten bin ich in den hiesigen Comicladen gestolpert und habe mich mal umgeschaut. Wobei mir gleich die Serie "Die Saga der Zwerge" aufgefallen ist und ich mir den zweiten Band mitgenommen habe. Der erste Band war leider vergriffen und so ließ ich ihn noch bestellen.

Und was soll ich sagen: zwar sind die beiden Bände jetzt kein literarisches Artefakt, aber sehr stimmig und (für mich) hervorragend gezeichnet. Und vor allem ziemlich lang und umfangreich. Da sitzt man schon mal ein wenig mehr als eine Stunde, um bis an das Ende zu gelangen. Mal schauen, wohin meine neu entflammte Faszination mich treiben lässt...

Ich weiß nicht, ob es eine ultimative Art gibt, TYPO3-Projekte, in denen man selber Erweiterungen entwickelt, mittels composer aufzusetzen. Von daher beschreibe ich mal mein Setup und bin gespannt, wie man es besser machen könnte.

Allgemein gehe ich davon aus, dass eine Website auf Basis von TYPO3 entwickelt werden soll. Sprich: es wird TYPO3 CMS als Core-System verwendet, ein paar Extensions aus dem TER und dann noch ein paar Erweiterungen, die man selber entwickelt und die nicht öffentlich im TER verfügbar sind. Template-Erweiterungen und so weiter.

Für die Website gibt es dann ein Repository, in dem sich bei mir zwei composer.json-Dateien befinden, da ich Projekte momentan mittels TYPO3 Surf auf ein Test- und Livesystem deploye. Eine Datei heißt composer.json und ist für den Aufbau des Test- und Livesystems verantwortlich. Die andere Datei heißt composer-dev.json und verwaltet alle Abhängigkeiten für mein Entwicklungssystem. Warum ich nicht in der composer-Datei den "require-dev"-Zweig nutze, wird gleich klar.

 

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://composer.typo3.org/"
    },
    {
      "type": "path",
      "url": "../_Extensions/*"
    }
  ],
  "name": "my-vendor/my-typo3-cms-distribution",
  "require": {
    "typo3/cms": "^8.7",
    "helhum/typo3-console": "^4.6",
    "vendor/my_extension": "^1.0"
  },
  "scripts": {
    "package-states": [
      "./vendor/bin/typo3cms install:generatepackagestates --activate-default"
    ],
    "folder-structure": [
      "./vendor/bin/typo3cms install:fixfolderstructure"
    ],
    "post-autoload-dump": [
      "@package-states",
      "@folder-structure"
    ]
  },
  "extra": {
    "helhum/typo3-console": {
      "install-extension-dummy": false
    },
    "typo3/cms": {
      "cms-package-dir": "{$vendor-dir}/typo3/cms",
      "web-dir": "web"
    }
  }
}

 

Im repositories-Zweig verweise ich auf den Ordner _Extensions, der sich auf gleicher Ebene wie das Projekt-Repository befindet. Hier kann natürlich auch auf ein projektbezogenen Unterverzeichnis verwiesen werden (mache ich auch so, habe es nur vereinfacht). In diesem _Extensions-Verzeichnis befinden sich die Repositories der Erweiterungen für dieses Projekt, die ich selber entwickele. In diesem Fall die Erweiterung my_extension. Diese Erweiterung besitzt natürlich auch eine entsprechend gepflegte composer.json-Datei um unter anderem das Autoloading zu gewährleisten, Abhängigkeiten aufzulösen und notfalls Umbenennungen vorzunehmen.

Mittels

 

COMPOSER=composer-dev.json composer update

 

wird das Entwicklungssystem aufgesetzt. TYPO3 Console übernimmt hierbei auch das Erstellen der PackageStates.php und erstellt notwendige Verzeichnisse. Meine Erweiterungen werden per Symlink in die jeweiligen Repository-Verzeichnisse aufgelöst. Erweiterungen aus dem TER werden wie gewohnt "normal" unterhalb von web/typo3conf/ext/ kopiert.

Nun kann ich in den jeweiligen Erweiterungs-Repositories entwickeln, versionieren, taggen und so weiter. Wenn ich einen Stand erreicht habe, der getestet oder sogar veröffentlicht werden soll, werden meine Erweiterungen beziehungsweise die Symlinks (per Bash-Skript) entfernt und folgende Composer-Datei aufgerufen:

 

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://composer.typo3.org/"
    },
    {
      "type": "vcs",
      "url": "https://github.com/KaffDaddy/my_extension"
    }
  ],
  "name": "my-vendor/my-typo3-cms-distribution",
  "require": {
    "typo3/cms": "^8.7",
    "helhum/typo3-console": "^4.6",
    "vendor/my_extension": "^1.0"
  },
  "scripts": {
    "package-states": [
      "./vendor/bin/typo3cms install:generatepackagestates --activate-default"
    ],
    "folder-structure": [
      "./vendor/bin/typo3cms install:fixfolderstructure"
    ],
    "post-autoload-dump": [
      "@package-states",
      "@folder-structure"
    ]
  },
  "extra": {
    "helhum/typo3-console": {
      "install-extension-dummy": false
    },
    "typo3/cms": {
      "cms-package-dir": "{$vendor-dir}/typo3/cms",
      "web-dir": "web"
    }
  }
}

 

Wie man sieht, ist der einzige Unterschied im repositories-Zweig zu sehen. Hier müssen entsprechend alle Repositories der Erweiterungen angegeben werden, die installiert werden sollen. In diesem Fall ist es nur eine, aber das kann dann schon mal ausarten. Wenn man nun composer update ausführt, werden die Erweiterungen alle "normal" installiert.