15 Jahre Serendipity als Entwickler - ein Rückblick und ein Ausblick
Es ist jetzt ziemlich genau 15 Jahre her, dass ich das erste mal als Entwickler an der Blogsoftware Serendipity gewerkelt habe. Zumindest sagt so mein Archiv. Und mir ist in dieser Winterzeit melancholisch, sodass ich zurückblicken will, gleichzeitig suche ich einen Ort um Zukunftspläne für Serendipity aufzuschreiben. Mach ich beides doch hier.
Rückblick
Ich hatte nie vor, an Serendipity zu arbeiten. Es war kein geplantes Projekt. Es war vielmehr so, dass ich meinen Blog von einer Blogplattform (twoday.net) umzog, Dirk mir Zuflucht aus seinem Server anbot und dabei Serendipity als Blogsoftware vorschlug. Als ich die Software einmal am Laufen hatte, wollte ich auch meinen Blog anpassen. Das tat ich. Und als ich dann merkte, dass auch im Projekt selbst Platz dafür wäre, rutschte ich da langsam rein.
Beginn mit Plugins, Dokumentation und kleinen Anpassungen
Es war ein Plugin zur Livevorschau der Kommentare, das ich damals zuerst in den Blog stellte. Erinnere ich mich richtig war das meine erste Begegnung mit PHP und jQuery. 2008 dürfte ich im Informatikstudium gewesen sein, bekam dadurch also etwas Programmierübung, brauchte aber dringend mehr. Serendipity bot sich dafür damals sicher an.
Generell hatte mich der Kommentarbereich ziemlich gepackt. Den wollt ich in meinem Blog so gut wie möglich haben. Daher wohl auch das Plugin. Ich ergänzte das dann durch Änderungen am Design des Bereichs selbst. Noch heute sind mir Kommentare wichtig – und für mich ist es auch amüsant, das solche Nutzbarkeitsüberlegungen später mal mein Beruf wurden. Bei manchen Dingen war ich die letzten Jahre ziemlich konstant.
Es folgt ein Plugin für Markupbuttons im Kommentarformular, das existiert vom Konzept heute noch so und ist immer noch praktisch. nl2p danach war eine Fortführung meiner Auseinandersetzung mit dem Webteam von UbuntuUsers, die sich geweigert hatte Nutzer neue Zeilen ohne nötige Leerzeile setzen zu lassen – mir war es wichtig zu beweisen, dass die technische Argumentation dagegen vorgeschoben war. Der Code dafür lebt heute im nl2br-Plugin, von Stephan gründlich überarbeitet. Autotitel danach war eine gute Idee, es setzte den Titel der verlinkten Seite als Titel des Links. Es krankte aber an den Limitierungen der PHP-Plattform; Das müsste im Hintergrund geschehen, was aber nicht ging (nicht geht sogar!), daher setze ich es heute nicht mehr ein.
Das wichtigste Plugin war aber sicher das Bayes-Plugin, eine Kooperation mit dem Forumnutzer kleinerChemiker. Wir nahmen einen Bayes-Filter und ließen den zur Spamerkennung über Blogkommentare laufen und stellten fest: Das funktioniert super. Gleiches gilt heute noch, auch wenn der Code deutlich überarbeitet wurde und die neueste Version des verschlankten Plugins den Bayes-Filter als Library nutzt. Das Bayes-Plugin läuft heute noch hier und in einigen anderen Serendipity-Blogs.
Als ein guter Schlusspunkt für diese Zeit taugt die Anleitung zum Pluginschreiben, traute ich mir also inzwischen zu sowas zu verfassen. Und dann wurde es etwas ruhiger. Es gab noch den Template-Editor, woraus man heute wahrscheinlich was nutzbareres formen könnte. Aber im Grunde war ich mit den Pluginideen durch und genug damit beschäftigt, die meinen am Leben zu halten.
Wenn ich mir die Artikel von damals ansehe kommen neben den Plugins nun langsam andere Überlegungen dazu. Zum Beispiel die, dass man die Suche verbessern könnte. Auch, dass Archiv-URLs stabil sein sollten, was inzwischen wirklich fest im Kern ist und absolut richtig war. Oder ich erwähnte früh, dass dem Adminbereich eine Überarbeitung gut tun würde. Und genau das sollte später folgen.
Die 2.0-Überarbeitung
Mit Serendipity 2.0 war ich dann wirklich als Serendipity-Entwickler aktiv. Vorher hatte ich ein paar kleinere Patches eingebracht und wie oben gezeigt an meinen eigenen Plugins gearbeitet. Aber 2.0 war eine andere Dimension.
Wir – 2.0 war eine große Teamarbeit – hatten damals erkannt, dass Serendipity ein Problem hatte: Der Adminbereich war damals eine ziemlich wüste Implementierung. Er bestand komplett aus PHP-Dateien, die den Großteil der Logik sowie das gesamte HTML beinhalteten. Meine vorherigen Ideen zur Verbesserung des Bereichs waren so überhaupt nicht umsetzbar, das HTML war nicht editierbar. Und das war ein Tabellenlayout, natürlich, wohl geschrieben von vor-CSS geprägten Entwicklern. Was nicht abfällig klingen soll, so hatte ich es ja auch zuerst gelernt.
Das Großprojekt in 2.0 war also die Smartifizierung des Blog-Backends. Smarty, weil das die Template-Sprache war, die auch in den existierenden Blog-Themes genutzt worden war. Wir machten das so: Wir rissen das HTML aus den PHP-Dateien, packten sie in Smarty-Templates, und wo immer vorher in den PHP-Dateien Logik die HTML-Ausgabe steuerte wurde stattdessen eine Variable gesetzt, die dann an die Smarty-Templates übergeben wurde. Wir, das waren meiner Erinnerung nach in dem Fall ophian und ich. Gleichzeitig war YellowLed dran, das so entstehende HTML zu verbessern und mit einem CSS-Design zu versehen. Wobei ich auf Backendseite half. Dafür trafen er und ich uns sogar in Mumble und besprachen die Änderungen. Das Ergebnis ist der heute noch genutzte Adminbereich.
Den stellte YellowLed sogar in einem Video vor:
Serendipity 2.0 war mir so wichtig, dass ich andere Probleme von Serendipity mit angehen wollte. So hieß es eine Weile, ein Problem für die Adaption von Serendipity sei ein fehlendes Theme für Bilderblogs. Also baute ich eines. Und weil ich schon dabei war gleich noch ein zweites, gedacht als Alternative für textlastige Blogs. Es freute den inneren Kern ersichtlich, aber hatte ansonsten nicht den gewünschten Effekt.
Wie auch Serendipity 2.0, wenn man ehrlich ist. Die große Anstrengung bewahrte vielleicht die Nützlichkeit der Software für moderne Browser (und Telefone!). Aber sie bewirkte nicht den großen Popularitätssprung, den zumindest ich mir für Serendipity erhofft hatte. Vielleicht war es zu wenig zu spät (wir brauchten viel länger als gedacht), vielleicht waren die Alternativen zu gut, vielleicht hatten wir Pech oder es war einfach nie in den Karten. Aber ich glaube wirklich, man kann den negativen Effekt davon am nächsten Abschnitt sehen.
PHP 7, 8 und das Team
Nach 2.0 wurde es bei mir im Blog etwas ruhiger um Serendipity.
Im Idealfall hätten wir 2.0 neue große Releases nachgeliefert. Aber das schafften wir nicht, die Luft war raus. Nachfolgende Releases hatten durchaus noch Neuerungen: Responsive Bilder und die Bildergalerien per Mediendatenbank, echtes UTF-8 für MySQL-Datenbanken, ein neuer Cache, Komfortverbesserungen wie das Aktualisieren aller Plugins auf einmal. Das fällt zumindest mir direkt ein. Aber das ist wenig im Vergleich zu einem neuen Backend, von der Sichtbarkeit und vom Aufwand her. Während also neue Entwickler die Lücke hätten füllen müssen, blieben die bis auf ein paar Ausnahmen aus – oder rannten gegen die gewünschte Backwards-Kompatibilität und gaben auf, das beobachtete ich gleich dreimal.
Auch neue Plugins von mir wurden seltener. Das VGWort-Plugin als nächstes größeres Plugin z.B. brauchte ein paar Jahre. Es ist kein Zufall, dass ich mich später zu einer Serendipity-Entwicklerwoche erst aufraffen musste (gute Idee übrigens, da kamen nette Sachen bei raus).
Es kamen mehrere Dinge zusammen. Tatsächlich war es nicht (nur) die Enttäuschung über dem fehlenden Nachhall von 2.0. So wechselte ich mein Studium bzw meinen Job und hatte mit jedem Wechsel weniger Zeit – Zeit, die sich Serendipity mit meinen anderen und inzwischen mir auch sehr wichtigen Projekten teilen musste, insbesondere PC-Kombo und Pipes. Und das zwischenzeitliche Auswandern nach Frankreich war auch ein Lebensumbruch, wo s9y erst später wieder reinpasste.
Aber so ähnlich ging es scheinbar auch den anderen, die an 2.0 beteiligt gewesen waren. Jeder wird seine Gründe gehabt haben. Aber Fakt ist: Nach 2.0 war der Code teils verbessert, das Projekt aber nicht gesünder, sondern es fehlten Entwickler. Und ich war im Konflikt: Sinnvoller, das Projekt sich heilen zu lassen und sich rauszuhalten? Oder im Gegenteil Arbeit reinzustecken, um Entwicklungen zu beschleunigen?
Gleichzeitig wurde wiederholte Anstrengung nötig, ob wir wollten oder nicht, was dann für mich entschied. Und zwar aufgrund der PHP-Updates. Sowohl bei PHP 7 (da war z.B. Serendipity 2.3 für die Versionen nach 7.1), als auch bei PHP 8, jede Punktversion dieser Versionen brach alten PHP-Code auf neue Art und Weise. Und Serendipity ist vollständig alter PHP-Code. Zwei Glücksfälle kamen bei PHP 8.0 zusammen und ermöglichten Serendipity 2.4: Ich hatte durch einen Jobwechsel wieder mehr Zeit und neue (bzw neue alte) Entwickler tauchten wie für PHP 7 eben doch auf, wie surrim, sodass das Projekt die Codemigration stemmen konnte. Trotzdem war PHP 8.0 für Serendipity ein Monster, das sich zum Glück seitdem nicht wiederholt hat.
Es gab also die großen Entwicklungsbemühungen durchaus noch. Auch von mir. Aber anstatt in schön sichtbares und präsentierbares zu fließen ging viel der Energie für die schnöde Kompatibilität mit neuen PHP-Versionen drauf. Dafür kann das Projekt nichts, aber es schadete ihm. Oder vll stimmt das nichtmal, vll ist Serendipity einfach erwachsen genug, dass weitere Änderungen abseits von Wartungsarbeit kaum nötig waren?
Ein möglicher Ausblick
Und damit kommen wir zum Ausblick. Serendipity ist eine ziemlich großartige Blogsoftware und ein Projekt, das sich jetzt viele Jahre gehalten hat, sich also viele weitere Jahre halten wird. Aber es ist auch ein Projekt geworden, das sich langsamer entwickelt und bei Releases hinterherhinkt. Für etablierte Software ist das in Teilen gut, es ist sogar Projektphilosophie, so stabil wie möglich zu sein. Aber klar, die Gefahr ist, dass irgendwann zu wenig Bewegung im Projekt ist, um neue Entwicklungen mitzugehen und die Software deswegen irgendwann sogar stirbt. Und nebenbei: Wenn ich mir die untere Liste anschaue beantworte ich meine Frage von oben mit nein, s9y hätte durchaus mehr aktive Entwicklungsarbeit gut vertragen können, das Innehalten war nicht nur Zeichen der fertigen Entwicklung.
Es ist jetzt leider ganz konkret davon auszugehen, dass ich in Zukunft wieder weniger oder sogar eine Weile gar keine Zeit haben werde – ich rechnete stattdessen mit mehr Zeit, aber es kam etwas dazwischen. Andere werden das abfangen. Aber was wird das Projekt überhaupt in Zukunft machen? Was würde ich angehen, wenn ich mehr statt weniger Zeit hätte, wenn gar jemand Entwicklungsarbeit an Serendipity sponsern würde? Das sind meine Überlegungen dazu:
Kompatibilität mit neuen PHP-Versionen
Weil das PHP-Projekt auf Rückwärtskompatibilität scheißt wird es ein gewichtiger Teil der zukünftigen Arbeit werden, Serendipity einfach am Laufen zu halten. PHP 8.3, gerade veröffentlicht, hat wieder Breaking Changes, es wird bei 8.4 nicht anders sein. Bestimmt treffen die uns. Und weh dem, der Serendipity an PHP 9.0 anpassen muss.
Dazu ist es ja nicht nur der Kern von Serendipity, der hier Arbeit erfordert. Sondern auch die vielen Plugins, von denen der Großteil keinen aktiven Maintainer hat. Warum auch, sie funktionierten Jahrzehnte vor sich hin. Die Themes genauso, sie können viel Arbeit erfordern, wenn wieder wie bei PHP 8.0 Smarty versagt und die Codeänderungen nicht auf der Ebene der Template-Engine abfedert.
Gleichzeitig ist diese Kompatibilität auch die Arbeit, die auf jeden Fall gemacht werden wird. Zu viele Entwickler nutzen Serendipity für ihre eigenen Blogs. Wenn nicht die derzeitigen Entwickler handelten, würden andere zugunsten ihrer eigenen Blogs die nötigen Codeänderungen schreiben und bestimmt auch teilen. Es ist die auf den ersten Blick besorgniserregendste Herausforderung, aber auf den zweiten die ungefährlichste.
Automatisierte Tests
Die Arbeit an den PHP-Versionen ist auch deswegen schwer, weil das Projekt hier nicht gut aufgestellt ist. Es fehlen automatisierte Tests für Serendipity selbst. Sie fehlen auch besonders für die Spartacus-Plugins. Es bräuchte einmal ein System, das interne Codestellen durch Unit-Tests absichert – das wäre mit Github auch gut umsetzbar und wir haben mit ersten Tests den Ansatz dafür. Aber es braucht vor allem zweitens ein Testsystem, das alle Plugins installiert und prüft, dass zumindest die Kernfunktionen des Blogs weiterhin funktionieren. Und das jeweils mit allen PHP-Versionen, den neuen wie den alten.
Das wäre einmalige Arbeit, vll eine Heidenarbeit sogar, die letzten Endes aber Arbeit sparen würde.
Webmentions
Von mir initial geschmäht, gab es in den letzten Jahren eine Bewegung namens IndieWeb. Grundsätzlich kompatibel mit der Idee von Blogs, scheinen die Akteure nicht in der alten Blogosphäre verhaftet gewesen zu sein. Ergo bauten sie Webmentions und erfanden Trackbacks neu, gerade so abgewandelt, dass sie inkompatibel sind.
Trotz meiner negativen Bewertung denke ich mittlerweile, dass Serendipity den Standard trotzdem unterstützen sollte. Neben Trackbacks und Pingbacks ist die Aufnahme von Webmentions kein technisches Problem. Es wäre fürs Projekt wichtig, solche neuen Impulse aufzunehmen und ggf. so neue Entwickler anzusprechen. Ich denke dabei ganz konkret beispielsweise an Beko Pharm – sein ist ein Blog, wie er früher mit Serendipity gebaut worden wäre, wofür sich Serendipity aber wahrscheinlich mehr in sein Dienstenetzwerk eingliedern müsste.
ActivityPub
Gleiche Denkrichtung: ActivityPub. Wir reden schon ewig davon, dass Kommentare zu Blogartikel in sozialen Netzwerken auch im Blog gespiegelt werden sollten. Denn der Blog sei das Zentrum der Netzpräsenz, die Heimat. Genau das wäre mit ActivityPub möglich, wenn auch nicht mit Facebook, so doch mit Mastodon und anderen föderalisierten Diensten. Genau so wäre es möglich, Blogs ohne den Umweg RSS direkt in Mastodon etc zu abonnieren, wenn Serendipity ein paar Daten aussenden und empfangen würde.
Es gibt dafür mit ActivityPhp sogar ein passend erscheinendes PHP-Projekt, mit dem das als Plugin oder Teil des Kerns relativ vernünftig umsetzbar erscheint.
Theme-Archäologie
Gleichzeitig sollte Serendipity seine Identität bewahren. Ich meine, seine Geschichte vielleicht sogar herausstellen. Ich zumindest beobachte an mir echte Freude, wenn ich einen klassischen Blog mit klassischem Design sehe. Und genau davon hat Serendipity eine Riesenauswahl im Spartacus-Repository.
Diese Themes sind aber wirklich alt. Gerade mit Serendipity 2.0 (bzw 2.1?) gingen sie teils richtig kaputt: Wir hatten damals auch das Standard-Frontend auf 2k11 umgestellt und damit weg vom tabellenbasierten vorherigen default-Theme. Damit können viele der alten Themes aber immer noch nicht umgehen. Teils habe ich sie für PHP 8.0 etwas repariert, aber da sind immer noch Darstellungsfehler. Plus: Auch das HTML ist teilweise arg veraltet.
Es wäre toll, das alles wirklich zu reparieren. Die alten Themes technisch so zu modernisieren, dass sie erstens ein responsives CSS-Layout ausgeben, zweitens richtig mit dem von Serendipity ausgegebenem neuem HTML und CSS (wie im Kommentarformular) zusammenarbeiten. Damit wäre ein derzeit kaputter Teil von Serendipity für Nutzer wieder ohne den derzeit entstehenden negativen Eindruck nutzbar und Serendipity würde gleichzeitig seine Geschichte betonen.
Spartacus modernisieren
Und schließlich würde ich Spartacus modernisieren.
Bei Spartacus stören mich drei Dinge:
- Um zu erkennen, ob ein Plugin eine neue Version verfügbar hat, muss die aktuelle Version ausgelesen und dafür die PHP-Datei (des Plugins auf dem eigenen Server) interpretiert werden. Stattdessen sollte die Versionierung über eine .INI oder .toml-Datei laufen, also per Metadatendatei. Das würde auch bei Inkompatibilitäten mit neuen PHP-Versionen helfen.
- Gleichzeitig muss für Spartacus auf einem Server jeden Tag XML-Dateien generiert werden. Die gehen dann an die Blogs, so wissen sie welche Versionen es auf Spartacus gibt. Eine Lösung ohne diesen Generierungsschritt wäre ausfallsicherer. Vielleicht könnten wir im Git-Repository durch einen Git-Task diese Liste der aktuellen Pluginversionen automatisch erstellen, wann immer sich eine der Metdatendateien ändert?
- Spartacus aktualisiert derzeit Themes nicht, nur Plugins. Themes werden einmalig heruntergeladen, aber Updates werden nicht erkannt. Gerade im Hinblick auf das obere Theme-Projekt wäre das aber nötig, plus auch um Updates für zukünftige Smarty-Versionen ausliefern zu können.
Spartacus ist ein Kernbestandteil der Nutzung von Serendipity, Änderungen daran wollen wohlüberlegt sein. Und die alte Infrastruktur ist für sich gesehen ziemlich beeindruckend. Trotzdem fände ich es wirklich gut, wenn Serendipity sich hier verbessern könnte.
Nutzeranforderungen und Nutzertests
Als letzter Zusatz: Serendipity war jetzt so lange Entwickler- und Feedback-gesteuert, dass man auch hier nochmal ansetzen könnte. Was machen Nutzer mit Serendipity, was sind die Stolpersteine, Anwendungsfälle.
Da könnte viel bei rauskommen, was dann weitere Entwicklungen steuern könnte. Und ich habe inzwischen wirklich die Erfahrung, solch eine Erhebung und Auswertung ordentlich durchzuführen. Aber für die dann angesagten Entwicklungen müsste das Projekt danach eben auch die Kapazitäten haben, sonst wäre der Aufwand verschwendet.
Soweit meine Überlegungen. Ich hoffe, die Retrospektive ist für den einen oder anderen Serendipity-Blogger interessant. Ob sie sich mit euren Eindrücken deckt? Es ist ja alles nur meine Perspektive, gefiltert durch ein paar verstrichene Jahre und durch das, was ich eben nicht in den Blog getan und seitdem vergessen habe. Und viel wird bewusst unterschlagen, der Artikel war eh schon zu lang.
Zu den Zukunftsplänen, ich habe natürlich keine Ahnung, ob irgendwas davon Realität werden wird. Vielleicht entwickelt sich ja sogar das PHP-Projekt in Zukunft verantwortungsbewusster und selbst die Gewissheit der Anforderungen von dort fällt flach. Ansonsten sind die Ideen vielleicht für den einen oder anderen Entwickler ansprechend und werden dadurch Wirklichkeit, selbst wenn ich nicht dazu komme. Oder meine verfügbare Zeit entwickelt sich ganz anders, als ich derzeit glaube… Vielleicht aber haben andere auch ganz andere Pläne, auch das könnte völlig okay sein.
Linksammlung 47/2023
Diese Woche fand ich besonders erwähnenswert:
Ubuntu Linux Squeezes ~20% More Performance Than Windows 11 On New AMD Zen 4 Threadripper, ein sehr gutes Zeichen für den Zustand der Linuxplattform.
Ein schlechtes Zeichen für Flutter ist Reflecting on 18 years at Google, wo der Entwickler Hixie seinen Weggang von Google beschreibt, mit sehr viel unverstellter Enttäuschung. Hixie war im Flutterprojekt sehr aktiv, seinen Avatar hatte ich auf Github in vielen Bugreports gesehen. Er will dem Projekt erhalten bleiben, das mag positiv sein, aber wenn Google das Projekt nicht mehr ordentlich tragen kann ist das problematisch.
Nochmal Google, YouTube slows down video load times when using Firefox war ein großer Aufreger die Woche. Die Sabotage scheint subtiler zu sein als es erst hieß, es ist nicht einfach ein Timeout, sondern steht wohl im Kontext der Adblocker-Blocker? Trotzdem mittlerweile leider typisch für Google, mit solchen Aktionen Firefox zu treffen.
Sowas trifft besonders, weil YouTube tatsächlich tolle Videos hat. Mir gefiel I built a PC, but it moves (Video) diese Woche besonders. Nicht nur ist das Ergebnis ein PC-Gehäuse mit beweglichen Teilen in der Vorderseite, das Video arbeitet auch mit vielen Tricks bei den Transitionen und Visualisierungen, um unterhaltsamer und anschaulicher zu sein. Da ist beeindruckend viel Arbeit reingeflossen.
Eine weitere Technikspielerei, etwas weniger DIY, sind die Aufsätze für M.2-SSDs für den Raspberry Pi 5. SSDs verwenden zu können macht den Pi zu einer wesentlich stabileren und damit zu einer brauchbareren Serverplattform.
WandaVision
WandaVision hatte es geschafft, uns direkt bei der ersten Folge zu verlieren. Es blieb zu unklar, was diese schwarz-weiße Folge sein will. Nur weil die Kritiken so gut waren gaben wir ihr noch eine Chance – und tatsächlich, das war berechtigt.
Verliert sich Loki in Zeitreisequatsch und betont zu wenig, was diesen Charakter ausmachen könnte, ist das bei WandaVision überhaupt nicht so. Die Geschichte ändert sich etwas, aber angesichts der ersten Folge ist das ein Glück, wird die Serie danach doch zugänglicher. Und sowohl Wanda als auch Vision werden über ihre Charakterisierung in den Filmen hinaus gezeichnet, mit ihnen kann man durch die Serie nun eher etwas anfangen.
Es geht in der Serie – kleiner Spoiler – primär um Emotionen. Vielleicht zieht sich das gegen Ende ein kleines bisschen, vielleicht ist der Mix mit den Actionszenen etwas fragwürdig, und sicher ist der Einbezug von mir völlig unbekannten neuen Marvelfiguren ein massives Manko. Doch trotzdem ist die Geschichte durch ihren Fokus berührend. Vor allem bleibt WandaVision nach dem holprigen Anfang sehr sehenswert, die Serie verliert sich nicht.
Linksammlung 46/2023
Diese Woche fand ich besonders erwähnenswert:
Man kann hiermit geschickt Paywalls umgehen: Einfach und legal per Open-Source-Tool, der Browser-Erweiterung BibBot. Leider sehe ich in der Konfiguration meine Stadtbibliothek nicht, aber vielleicht funktioniert es für einen der Leser hier.
Ähnlich potentiell für mich praktisch fand ich Roborock S7 vacuumed. Es wird ausführlich beschrieben, wie die alternative Software Valetudo auf den Saugrobotor aufgespielt werden kann. Ich war bei meiner letzten Suche nach einer Alternative für meinen inzwischen wirklich alten (und lauten) Roomba schier verzweifelt daran, was für Datenkraken sich in diesem Bereich tummeln, dass alle Geräte proprietäre Software laufen haben und auch auf dem Telefon als Steuer-App einfordern. Da tut so eine Anleitung gut, auch wenn es ziemlich aufwändig aussieht.
Auf der anderen Seite der Wirtschaft gab es diese Nachricht, Google shares 36% of its revenue with Apple. Alles ein Argument im Monopolverfahren, zur Wichtigkeit der Standardsuchmaschine.
Und weil ich die Woche unterwegs war bleibt es bei den drei Links.
Loki
Die Idee einer Serie um den ambivalenten Marvel-Charakter gefiel mir. Die Idee der Disney+-Serie Loki war aber eine ganz andere und gefiel mir so gar nicht.
In der Serie wird Loki praktisch dupliziert. Dadurch taucht die TVA auf, um die zweite Version von Loki einzusammeln und so eine alternative Zeitlinie zu verhindern. Doch statt die Loki-Kopie zu töten, wie sonst üblich, rekrutieren sie ihn um ein Problem zu lösen. Daraufhin rennt Loki durch die Zeitlinien.
Mit diesem Szenario hat die Serie gleich mehrere Probleme:
Erstens ist dieses Szenario einfach doof. Multiversen und Zeitreisen sind immer Mist, auch für diese Variante dieser Standardgeschichte gilt das, sie kommt aus dem generischen kaum heraus. Ein paar nette Ideen sind drin, aber ansonsten rennt das in die üblichen Probleme der Beliebigkeit und dem Fehlen jeglicher Logik, wodurch die Serie nicht packen kann.
Zweitens hat das alles mit Loki nichts zu tun. Nichts was den Charakter ausmacht wird wirklich aufgegriffen. Da könnte auch Captain America durch die Zeitlinien rennen und mit Zerrbildern von sich kämpfen, Lokis Charakteristika sind seltenst relevant. Gerade die Szenen in denen das nicht gilt zeigen das, sind die wenigen Bezüge zu Lokis Wesen doch wesentlich interessanter als der Rest.
Und drittens und schließlich ist die Serie als Serie kaputt. Die erste Folge legt eine Geschichte an, die in der nächsten Folge direkt aufgelöst wird, weil die erste Staffel einfach zu kurz für die hineingepackte Geschichte ist. Die zweite Staffel dann weiß offensichtlich überhaupt nichts mit sich anzufangen, sie ist purer Füller und kann mit dem Ende der ersten Staffel nicht umgehen. Während die erste Staffel also noch ein bisschen verfangen konnte, weil die Auflösung der Geschichte mich dann doch etwas interessierte, ist die zweite wirklich langweilig. Wirkt sich da der Drehbuchautorenstreik aus?
Schade um den Charakter und Schauspieler, aber die Serie kann man sich leider sparen.
Linksammlung 45/2023
Diese Woche fand ich besonders erwähnenswert:
Google bins integrity API that looked more than a bit like horrible DRM for websites, nachdem es erst so aussah, als wollte Google die API gegen alle Widerstände durchboxen. Eine gute Entwicklung.
Nicht alle Firmen sind so einsichtig. Home Assistant musste wieder eine Integration entfernen, Removal of MyQ integration, wie vor kurzem bei Mazda. Wieder macht sich eine Firma unkaufbar.
Positiv dagegen Die Antwort von Murena. Ein veralteter Browser und nicht entfernbare vorinstallierte Apps sind zwar eigentlich nicht akzeptabel, aber die Antwort ist trotzdem erfreulich. Sie arbeiten dran (also ist das Projekt überfordert, und das passiert bei FOSS nur zu leicht). Beachtlich auch, dass GNU/Linux.ch die Anfrage gestellt und darüber berichtet hat. Journalismus!
Und ich bin über noch eine Firma gestolpert, Chargie. Wird zwischen Telefon und Ladekabel gesetzt, damit der Akku nicht stumpf auf 100% geladen wird, was massiv die Lebenszeit verlängert. Neue Android-Versionen können das auch so, aber längst nicht alle Telefone kriegen das Update, und bei meinem LG G5 zum Beispiel ist die Funktion trotz neuem Android in Lineage kaputt. Da könnte sowas praktisch sein, zumindest wenn die Steuer-App auch ohne Playstore funktioniert.
Lesenswert fand ich Martin Fowlers Current thoughts on social media. Er beschreibt darin, wie er mit dem Wegfall von Twitter umgeht.
Dabei verlinkte er auch Charles' Rules of Argument. Nicht neu, aber ich fand die Herangehensweise des bewusst sehr limitierten Engagements bei Online-Diskussionen bedenkenswert.
Thema Diskussionen, Esra Özyürek sagt in einem Interview "So verfestigt sich der Hass". Es geht darum, wie Deutschland mit Israelkritik von Muslimen umgeht. Ich sehe Punkte auf beiden Seiten: Einerseits gibt es da Antisemitismus, den zu kritisieren völlig richtig ist. Und andererseits ist Deutschland völlig durchgeknallt darin, jedwede und auch noch so berechtigte Israelkritik als Antisemitismus zu brandmarken. Entsprechend irrational auf Muslime einzuschlagen wird wirklich Hass verfestigen. Wobei, das gilt genauso für den Umgang der Gesellschaft mit israelkritischen Nicht-Muslimen.
Echtes mexikanisches Essen: Von Enchiladas und mehr
Wenn wir in Deutschland an mexikanisches Essen denken, ist das – zumindest deutschen Kantinen zufolge – prominenteste Beispiel Chili con Carne. Mit roten Bohnen, gelbem Mais und Namen zum Trotz ohne Chili, stattdessen sorgt Pfeffer und Paprikapulver für die Würze, die wir wegen der Chili im Namen erwarten. Wenn nicht dieses Gericht ist es anderes Essen mit diesen Zutaten, plus eventuell harte Tacoschalen, inzwischen manchmal auch Burritos, da öffneten in den letzten Jahren ein paar Läden für.
Mit mexikanischem Essen hat das wenig zu tun. Es gibt in Deutschland kaum mexikanische Einwanderer und das Land ist weit weg, aber es ist schon ein bisschen absurd, wie anders das Essen in Mexiko wirklich ist. Rote Bohnen z.B. werden nicht gegessen, stattdessen viel leckerere schwarze, statt dem süßen gelben Mais steht der neutrale weiße im Zentrum der mexikanischen Küche (und ersetzt dort unseren Weizen). Harte Weizen-Tacoschalen sind eine absolute Ausnahme und werden von vielen Mexikanern verachtet – hart gebratene Tortillas und Tortillachips gibt es zwar in anderen Gerichten, das ist aber nicht das gleiche. Was in Deutschland mexikanisches Essen genannt wird ist – mit wenigen Ausnahmen – meist Tex-Mex, eine ganz eigene Küche aus den USA mit nur wenigen mexikanischen Einflüssen, mit Spuren aus dem kulinarisch sehr eigenem Nord-Mexiko. Authentizität hin oder her, tatsächlich schmeckt es völlig anders.
Mexikanisches Essen hat, anders als bei den deutschen Abwandlungen, oft den Tortilla im Fokus, einen dünnen weichen Maisfladen primär aus weißen Mais. Der wird schonmal mitgebraten oder gar frittiert, er ist entweder erwärmte Beilage oder gefüllt Teil des Zentrums des Gerichts. Dazu kommt Fleisch, das oft mit anderen Soßen als hier kombiniert wird oder in Varianten, die hier selten sind (schonmal Gehirn gegessen? Schweinehaut?) und mit Gemüse, das es teilweise in Europa überhaupt nicht gibt. So wie es in Mexiko auch tolle Früchte gibt, die wir nicht kennen, wie die wunderbar süße Mamey. Dazu kommen viele Varianten von Chili, die keinesfalls alle scharf sind – und auch das Essen ist nicht unbedingt scharf! Scharfes Essen gibt es, meist aber nur via scharfen Soßen, die neben den Teller gestellt werden und daher optional bleiben. Wobei, das Verhältnis zur Schärfe ist in vielen mexikanischen Familien entspannter als bei uns, wie wohl auch die teils scharfen mexikanischen Bonbons für Kinder zeigen.
Ich zeige im Folgenden ein paar authentische Beispiele aus Mittel-Mexiko und wie ich sie fand.
Chiles en Nogada
Chiles en Nogada ist eine mit Hackfleisch gefüllte grüne Chili, die mit einer Walnuss-Soße übergossen wird. Dazu kommen süße rote Granatapfel-Samen. Zusammen sind das die Farben der mexikanischen Flagge – entsprechend ist es das offizielle Nationalgericht. Es gibt es nur um den Nationalfeiertag bzw in der Saison der Granatapfel, ~September, ist relativ teuer (vor allem in den letzten Jahren geworden) und eine Heidenarbeit. Ich habe selbst einmal bei der Zubereitung geholfen, es dauert Stunden, wie übrigens viele mexikanische Gerichte. Die Chili muss sehr sorgfältig ausgehöhlt werden, die inneren Körner und Fäden entfernt, dann die Füllung hineingeben ohne die Chili zu zerstören… haarig.
Das Ergebnis ist fantastisch. Es ist eine absurd gute Mischung aus deftigem und süßem Geschmack. Die Walnuß-Soße gibt sehr viele verschiedene Geschmacksnoten und eine leicht erdige Grundnote, die Chili dagegen ist eher süß, wo dann die gewürzte Fleischfüllung wieder gegenwirkt, was aber die Granatapfel-Samen nochmal verstärken. Jeder sollte das mal probiert haben, ich halte es für das beste Gericht, das ich je gegessen habe. Wer irgendwelche Zweifel hat, dass die mexikanische Küche ein Weltkulturerbe sein sollte, würde hiermit davon geheilt – wobei Chiles en Nogada ein relativ junges Gericht ist, das der Feier der Gründung des modernen mexikanischen Staates zugerechnet wird, während die klassischen mexikanischen Gerichte viel älter sind.
Enchiladas
Enchiladas dürfte eines dieser klassischeren Gerichte sein. Es ist ein gefüllter Tortilla, meist mit Fleisch (regulär in Fäden gerupftes Hähnchen). Der Tortilla wird vorher in einer Chilisoße gebraten, die dann nochmal über den Tortilla gegeben wird. Dazu kommt Creme (Fraiche?), Käse (mexikanischer, der als zerbröselnder Trockenkäse ganz anders ist als deutscher) und ggf. Koriander. Es gibt verschiedene Varianten davon, Rojas und Verdes meint die Farbe der Chilisoße und damit ihren Geschmack, oder Suizas, Schweizer also, die dann mit Käse gefüllt oder sogar gratiniert sind.
Auch dieses Essen ist trotz der Chilisoße nicht unbedingt scharf! Und auch dieses Gericht mag ich sehr gerne. Der großartige Geschmack kommt durch eben diese nicht-scharfe Chilisoße, dem der Tortilla und die Fleischfüllung eine gute Grundlage geben, was dann die Creme und der recht neutrale, trockene Käse wunderbar ausbalancieren. Die Soße macht auch den Hauptteil der Arbeit aus, wobei das gekochte Hähnchenfleisch zu zerrupfen auch etwas dauert und für mich als Daheim-Vegetarier etwas schwierig war. Tortillas werden in Mexiko oft gekauft und sind als Grundnahrungsmittel nicht teuer, sie selbst zu machen geht auch, würde aber die Kocharbeit erheblich erschweren.
Tacos de barbacoa und Carnitas
Enchiladas findet man in Restaurants oder daheim, Tacos dagegen oft als Imbiss auf der Straße. Tacos sind generell ein Riesenthema in Mexiko. Es ist das Haupt-Straßengericht, bestimmte Kombinationen von Tacos mit Fleisch und Gemüse sind üblich. Es ähnelt in der Hinsicht unserem Döner und historisch der Bratwurst, es gibt aber mehr Kombinationen als beim Döner, also auch verschiedene Fleischsorten. Die verbreiteste(?) Variante ist al pastor, Schweinefleisch mit Ananas.
Barbacoa ist eine altertümliche Fleischzubereitung, als Taco eine Spezialvariante. Es ist in einem Loch in der Erde über die Nacht gegartes Hammelfleisch. Das ist also von der Fleisch- und der Zubereitungsart ziemlich ungewöhnlich und sicher wegen dem Aufwand der Zubereitung ein Essen für feste Orte, weniger für Straßenstände. Durch das lange Garen wird das Fleisch sehr zart, mit dem Tortilla als Taco den Soßen, Zwiebeln und Koriander wird der immer noch durchscheinende Hammelgeschmack gedämpft. Was besonderes, was ich nicht jeden Tag essen wollte, aber Sonntags bei strahlendem Sonnenschein in einem Gartenrestaurant sehr genossen habe.
Carnitas ist ganz anders, und doch ähnlich. Auch es ist ein aufwändiges Fleischgericht, das gerne im Taco gegessen wird, das es so in Deutschland nicht geben würde. Da wird Schweinefleisch gewürzt und für Stunden in Öl oder Fett geschmort, bis auch das sehr weich ist und zerrissen werden kann. Sieht dann ähnlich aus wie Barbacoa, ist vom Geschmack als Schweinefleisch aber natürlich ganz anders als Hammelfleisch. Carnitas gefiel mir einmal sehr gut, verkauft von Fast-Nachbarn im improvisierten Gartenimbiss-Stand, als sehr zartes und geschmackvolles Fleischgericht. Ein zweites mal von einer mir unbekanntem Quelle mitgebracht war es mir zu fettig, was bei der Zubereitungsart eigentlich naheliegend ist.
Tamales
Und noch ein Beispiel eines sehr authentisches Gerichts, das von vor der Kolonialzeit stammen soll. Tamales sind Fladen aus nixtamalisierten Mais, also aus zu besser verwertbarem Mehl verarbeitetem und dann wieder geformten Mais. Dieser Fladen wird mit Zusätzen versetzt, Schmalz zum einen, aber auch Fleisch und Chilisoße für die herzhaften oder Früchte für die süßen Varianten. Ummantelt wird der Fladen mit Mais- oder Bananenblättern, die mir geläufige Variante in Mittel-Mexiko nutzt Maisblätter.
Ein paar Tamales sind ein vollständiges Essen (von Mexikanern dagegen wird es als Frühstück gesehen) und ein sehr typisches Gericht, das in Mexiko an vielen Orten und von Straßenverkäufern gekauft werden kann. Mir persönlich sind die herzhaften Gerichte etwas zu neutral (obwohl manchmal durch die integrierte Soße scharf), der Maisteig ist schon sehr bestimmend. Das gilt etwas weniger, aber doch noch etwas, für die Mole-Varianten – Mole ist eine super-aufwändige und stark würzige Chili-Schokoladensoße, auch sie findet man eben in Tamales oder mit den Enchiladas von oben. Mole ist an sich immer super, aber bei den Tamales mochte ich besonders die klassische süße Variante mit dann rotem Teig und besonders tollen Rosinen.
Sopes
Sopes will ich auch noch schnell zeigen, als ein weiteres Gericht, das auch vegetarisch sein kann und es auch normalerweise ist. Für Sopes kauft man den Tortilla-Maisteig und formt ihn zu festeren Fladen, mit einem Rand. Der Fladen wird in Öl gebraten. Gegessen wird er dann mit einer schwarzen Bohnenpaste, Salat, Creme und Käse. Sopes kenne ich als Hausmannskost, zwar durch das Braten des Fladens in Öl leicht fettig, aber eben ohne Fleisch und gut portionierbar.
Die vegetarischen Sopes sind die primäre Variante, aber es wäre kein Verbrechen, da noch andere Zutaten und eben auch Fleisch draufzutun und sie so aufzuwerten. Für mich war das ein geschmacklich etwas arg simples Essen, nicht schlecht, aber ich muss es nicht unbedingt nachkochen.
Die Liste dürfte einen Eindruck geben, wie die mexikanische Küche in Mexiko funktioniert. Natürlich ist sie nur ein Bruchstück, eine kleine Teilauswahl. Es gibt viel mehr Gerichte, aber auch viele Eigenheiten zu berichten. Wie zum Beispiel, dass zu jedem regulären Essen eine Vorspeise gegessen wird. Diese Suppe ist dann entweder wirklich eine Suppe, kann aber auch eine kleine Portion Spaghetti mit einer Cremesoße sein, was dann trotzdem Suppe genannt wird. Es gibt (neben Coca-Cola) eine Vielzahl an mexikanischen Softdrinks, aber auch einige klassische Aguas – Wasser mit Geschmack, wie (aus Limetten) frisch gepresste Limonade, oder mit Tamarindo versetztes Wasser, oder Horchata, was Wasser mit geriebenem Reis, Milchpulver, Zucker und Zimt und generell großartig ist. Von solchen Wassern bzw Limonaden gibt es einige Variante, die seltene mit Maracuja fand ich besonders toll.
Überrascht hatte mich auch die Verwendung von schwarzen Bohnen. Ich kannte vor Mexiko nur grüne, rote und weiße Bohnen, letztere vor allem als Salat. Schwarze Bohnen sind die schmackhaftesten. Gekocht im Schnellkochtopf geben sie eine tolle Beilage. Da kommt in Mexiko noch Salz, Zwiebeln und Bohnenpulver dazu. Das ist wirklich toll, auch für den gewöhnlichen deutschen Geschmackssinn, und bedenkt man dass Bohnen fast völlig von deutschen Tellern verschwunden sind hatte ich damit wirklich nicht gerechnet. Als Überraschung erwähnt gehört auch, dass die Essenszutaten nicht primär im Supermarkt gekauft werden, sondern in den vielen kleinen Geschäften, gerne auch der Markthalle. Und wenn die Tortillas vom Supermarkt kommen, dann weil sie dort frisch und mit weniger gelben Maismehl geformt werden. Das verbindet sich in meinem Kopf gut mit der früheren deutschen Küche, als auch hier noch Bohnen gegessen und Essen nicht im Supermarkt gekauft wurde.
Es gibt natürlich auch moderne Gemeinsamkeiten. Auch in Mexiko kennt und kocht man Schnitzel. Mit Pozole gibt es eine tolle Fleischsuppe, die dem europäischen Gulasch ähnelt. Oder es wird mal einfach ein Stück Fleisch mit Reis gegessen, statt eines komplizierten Gerichts. Aber der Reis ist dann sicher nicht einfach Reis, sondern normalerweise mit Tomaten speziell gewürzt, und das Stück Fleisch wird wahrscheinlich mit einem Stück Kaktus (Nopales) kombiniert in einen gewärmten Tortilla gesteckt werden und so einen ganz eigenen Taco-Charakter bekommen. Ich möchte nicht ausschließen, dass auch in Mexiko mal ein Tiefkühlgericht aufgewärmt wird, gesehen habe ich sowas weder in der Küche der ("nebenher" voll arbeitenden) Hausfrau noch im Supermarkt.
Speziell an der mexikanischen Küche ist eben diese Eigenständigkeit und Verankerung in der Gesellschaft, auch wie sie die Imbissstände dominiert (und wieviele es davon gibt). Auch wenn man in größeren Städten sowie in Supermärkten anderes Essen findet, gerade auch solches aus den benachbarten USA, sind mexikanische Rezepte wie die oben gezeigten doch der Standard. Das ist in Deutschland etwas anders, wo die Essenskultur mir sehr viel vermischter erscheint, mindestens mit Rezepten und Zutaten aus anderen europäischen Ländern. Schwierig genug ein Gericht zu zeigen, das wirklich typisch deutsch ist (Nudelsalat? Birnen-Bohnen-Speck? ) und auch wirklich im Alltag regelmäßig gekocht und gegessen wird. Da wirkt sich die Größe des Landes genauso aus wie die ganz andere Geschichte und die für die Zubereitung veranschlagbare Zeit.
In diesem Fall ist es toll, dank der Unterschiede diese fantastische Küche heute noch entdecken zu können. Vielleicht schaffen wir es in Deutschland mit der Zeit, mehr authentische Elemente von ihr zu übernehmen und das in Mexiko völlig unbekannte Chili con Carne auf den Nebenplatz zu verbannen, auf den es gehört.
Linksammlung 44/2023
Diese Woche fand ich besonders erwähnenswert:
The product manager role is a mistake argumentiert ein Blogartikel, weil es nicht genug begabte Leute gibt, die diese Rolle wirklich ausfüllen können. Stattdessen solle man ein fähiges Termin zusammenstellen, das dann die verschiedenen Aufgaben der Produktweiterentwicklung unter sich aufteilt. Vielleicht.
Nochmal Unternehmensalltag: I Accidentally Saved Half A Million Dollars, indem er den Bullshit der "agilen" Blockadeprozesse durchbrochen hat. Was ein kaputtes System er beschreibt.
The hidden culprit driving America’s apocalypse of boarded-up storefronts beschreibt ebenfalls ein kaputtes System, hier eines, in dem Banken aktiv dafür sorgen, dass Geschäftszeilen leer bleiben. Auch in Deutschland muss es solche Systemprobleme geben, sonst würden leerstehende Geschäfte entsprechend günstig vermietet.
Kein Fehler, sondern Gericht untersagt Datenschutzverstöße von LinkedIn beschreibt bewusstes Fehlverhalten und hat eine superinteressante Konsequenz. Linkedin hatte (unter anderem) den DNT-Header ignoriert, eine Funktion von Browsern um anzuzeigen, dass ein Webseitenbesucher nicht getrackt werden will. Das Gericht meinte nun, der DNT-Header sei verpflichtend. Das müsste die erste Entscheidung sein, die dieser Funktion eine rechtlich bindende Wirkung gibt, und dass nachdem Firefox etc den Header für die Zukunftsplanung schon aufgegeben hatten. Bewährt sich die Entscheidung haben wir damit die eingebaute Funktion gegen Cookie-Popups etc, die wir schon die ganze Zeit hatten, die aber ignoriert wurde. Den Header weiter zu ignorieren dürfte für Webseiten ab jetzt sehr teuer werden, eine Klagewelle ist abzusehen.
Zum Wochenende: Ralf hat ein neues Smartphone wurde frisch aktualisiert und beschreibt das Fairphone 5. Mich bestärkt die Beschreibung der Probleme mit dem Adapter in meiner Einstellung, dass ein Telefon ohne Kopfhöreranschluss nicht in Frage kommt, außer es wäre gebraucht und entsprechend günstig oder einfach über. Das trifft beim Fairphone 5 nicht zu.
"Ich muss noch etwas sagen", beichtet ein ehemaliger Resistance-Kämpfer, der bei einem Kriegsverbrechen dabei war. Bewegend.