Simdock jetzt mit Compositing und GTK3
Tuesday, 5. December 2023
Simdock ist mein Dock für den Linuxdesktop, das ich seit ein paar Jahren pflege. Jetzt konnte ich dem Code ein großes Update verpassen und damit das Projekt für die nächste Zeit absichern.
Kurzfassung
- Simdock läuft nun mit der GTK3-Version von wxWidgets, bei mir ist das das sehr neue wxWidgets-3.2.4. Dadurch wird es auch auf modernen Systemen wieder kompilieren.
- Durch den Wechsel zu GTK3 musste auch die genutzte Library Wnck aktualisiert werden, die Version 1 zuvor setzte auf GTK2, das kollidierte. Nebeneffekt davon ist, dass für die dynamischen Programmanzeigen größere Icons gewählt werden sollten.
- Dank der neuen Version von wxWidgets konnte durch wenige Codeänderungen Compositing für den Dockhintergrund aktiviert werden. Die Pseudotransparenz funktioniert weiterhin, wenn kein Compositor am Laufen ist.
- Es werden wieder AppImages gebaut. Die gab es für Simdock schonmal, die waren aber durch den Wegfall von Travis CI ausgefallen. Die AppImages hatten (zumindest aber auf meinem System) noch einen Bug mit dem neuen Compositing, mehr dazu unten.
Der allgemeine Hintergrund des Updates
Simdock lief die letzten Jahre relativ zuverlässig vor sich hin. Aber der Wechsel zu GTK3 war eine große Gefahr für die weitere Existenz des Projekts und die Migration jahrelang durch eine fehlende Funktion von GTK3 blockiert.
Nun war der Wechsel aber unumgänglich, es musste etwas passieren. Denn selbst auf meinem eigenen System konnte ich Simdock nicht mehr bauen. Void Linux hatte wxWidgets auf GTK3 umgestellt, ohne die GTK2-Version weiterhin bereitzustellen. Und das alte AppImage lief auch nicht, neue wurden sowieso nicht mehr gebaut. Ich rechnete eigentlich damit, das Projekt aufgeben zu müssen – und stolperte dann gestern doch über die Lösung.
Als Simdock vor ~2 Monaten für mich wegbrach hatte ich noch mit keiner Lösung gerechnet und mir stattdessen Alternativen angeschaut. Und tatsächlich auch gefunden: Plank ist mittlerweile eine hervorrage Alternative. Es fehlen die konfigurierbaren Starter, dafür kann es sich selbst verstecken (Auto-Hide) und und ist so platzsparend, außerdem hatte es schon lange echte Transparenz. Ich nutzte es mit Openbox und jetzt nochmal mit IceWM (da kollidierte es erst mit meiner Konfiguration, aber mit der Versteckenfunktion passte es). Die Existenz der Alternative war entspannend! Aber jetzt nachziehen zu können befriedigt dann doch meinen Ehrgeiz. Und es war die bessere Lösung in meiner derzeitigen Projektaufräumaktion, so statt dem Aufgeben genau wie bei izulu nach Jahren des Zeitmangels die Modernisierung umsetzen zu können.
Technische Erklärungen
Warum war der Wechsel zu GTK3 so problematisch? Es sollte überraschen, denn wxWidgets abstrahiert das Toolkit eigentlich weg, ob da jetzt GTK2, GTK3 oder gar QT läuft sollte egal sein. Gleichzeitig ist wxWidgets eines dieser großartigen Projekte, bei denen Upgrades generell schmerzlos sind, ich musste genau null Zeilen wxWidget-Code anpassen.
Das Problem war diese Funktion: gdk_pixmap_foreign_new()
. Simdock benutzte sie, um den Hintergrund des X11-Desktops zu holen und den dann als Hintergrund des eigenen Fensters zu setzen. Klassische Pseudotransparenz. Und für diese Funktion gibt es in GTK3 einfach keinen direkten Ersatz. Der Code sah leicht vereinfacht so aus:
wxBitmap* backImage = new wxBitmap(); WnckScreen *screen = wnck_screen_get_default (); // The XID of the background pixmap Pixmap pm = wnck_screen_get_background_pixmap(screen); if (pm != None) { wxBitmap* backImage = new wxBitmap( gdk_pixmap_foreign_new( pm ) ); return backImage; }
Da wurde also auch Wnck genutzt, dessen Details sich ebenfalls ändern würden, das verstellte weiter den Blick auf die Lösung. Es gibt einfach keinen dokumentierten Weg, die Pixmap des XServers mit GTK3 in ein Grafikobjekt zu quetschen um sie dann wxBitmap zu übergeben.
Stattdessen sah meine Lösung schließlich so aus:
wxSize sz = wxGetDisplaySize(); wxBitmap* backImage = new wxBitmap( gdk_pixbuf_get_from_window( gdk_x11_window_foreign_new_for_display( gdk_display_get_default(), gdk_x11_get_default_root_xwindow() ), 0, 0, sz.GetWidth(), sz.GetHeight() ) );
Das benutzt jetzt also GDK-Funktionen ohne den Wnck-Umweg. Der Code holt sich das Root-XWindows mit gdk_x11_get_default_root_xwindow()
, macht daraus ein GDK-Window mit gdk_x11_window_foreign_new_for_display
und davon kann gdk_pixbuf_get_from_window
dann eine Grafik ziehen.
Jedoch: Das ist nicht ganz das gleiche! Denn die Grafik beinhaltet auch alle offenen Fenster. Es ist eben nicht der X-Hintergrund, an den ist einfach nicht ranzukommen. Doch für Simdock war das gut genug: Normalerweise sind eh keine Fenster hinter einem Dock, und ich schaffte es, Simdock vor dem Ziehen dieses Screenshots auszublenden. Flickert ganz kurz, aber da das nur bei Hintergrundbildwechseln passiert sollte das okay sein.
Damit war die Makefile anpassbar. Wnck-3.0 und wxWidgets-GTK3 konnten ins Projekt, Simdock damit wieder auf modernen Systemen gebaut worden. Und die nächste langjährige Baustelle war angehbar.
Echte Transparenz mittels eines Compositors hätte das Problem mit der oberen schwierigen Umsetzung von Pseudotransparenz umgangen. Diese Transparenz sollte wxWidgets eigentlich können, es gibt mit wxBG_STYLE_TRANSPARENT
einen passenden setzbaren Hintergrund, der echte Transparenz bringen soll. Doch bei mir hatte das in vorherigen Tests nie geklappt.
Mit GTK3 und einer neuen Version von wxWidgets testete ich das erneut. Und tatsächlich: Es brauchte nur minimale Codeänderungen und die Transparenz lief direkt. Ein echter Durchbruch. Simdock soll weiterhin Pseudotransparenz unterstützen – das war das originale Alleinstellungsmerkmal des Programms, weswegen ich es überhaupt übernommen habe – aber echte Transparenz zusätzlich anbieten zu können ist super. Vor allem, wenn es jegliches Flickern vermeidet.
Die Lösung folgt genau der Dokumentation, wie ich sie vorher schonmal verlinkt hatte: Im Konstuktor des wxWindow, in diesem Fall dem wxFrame, SetBackgroundStyle(wxBG_STYLE_TRANSPARENT);
setzen und erst danach mit Create(parent, ...);
das Fenster erstellen. Vorher sah der Anfang des Konstruktors so aus:
MyFrame::MyFrame (wxWindow parent, simSettings set, ImagesArray array, wxWindowID id, const wxString & title, const wxPoint & pos, const wxSize & size, long style): wxFrame (parent, id, title, pos, size, style) { … SetBackgroundStyle(wxBG_STYLE_PAINT); }
Daraus wurde das hier:
MyFrame::MyFrame (wxWindow parent, simSettings set, ImagesArray array, wxWindowID id, const wxString & title, const wxPoint & pos, const wxSize & size, long style): wxFrame() { // This enables full composited transparency: SetBackgroundStyle(wxBG_STYLE_TRANSPARENT); Create(parent, id, title, pos, size, style); … }
Da veränderte sich also ebenfalls die Definition des Konstruktors, plus dem schnelleren Setzen von wxBG_STYLE_TRANSPARENT
vor dem Create
.
Ausstehende Probleme
Simdock hat relativ früh AppImages bereitgestellt. Ich war auf der Froscon in einem Vortrag des AppImage-Projekts und fand die Idee super. Die wurden aber die letzten Jahre nicht mehr gebaut, weil die Travis-CI nicht mehr kostenlos war.
Also stellte ich die Buildpipeline wieder her. Diesmal mit Github-CI, und weil linuxdeployqt einen Fehler produzierte wechselte ich zu linuxdeploy mit dem GTK-Plugin. Das funktionierte an sich! Aber: Das AppImage bleibt bei mir schwarz, wenn Compositing aktiviert ist.
Ich habe ein Issue dafür auf, in dem ich auch mehr der Details zu den AppImages erkläre. Den gewählten Ansatz finde ich wirklich geschickt, die Logik hauptsächlich in eine zweite Makefile zu packen. Das hält die Github-CI-Workflowdatei simpel. Aber das Ergebnis muss eben auch funktioniere. Bis sich da eine Lösung auftut werde ich das AppImage weiter bauen lassen, aber nicht bewerben.
Mit all den Änderungen hat Simdock technisch einen großen Schritt getan und ich freue mich, dass das möglich war. Es wäre zu schade gewesen, das Projekt wegen den GTK-Migrationsproblemen aufgeben zu müssen. Und wer ein nettes Dock mit gutem Fenstermanagement sucht, mit Plank aber aus irgendwelchen Gründen nicht warm wird, dem kann ich Simdock jetzt wieder guten Gewissens empfehlen. Die Installation per Kompilierung wird im Readme beschrieben.
Linksammlung 48/2023
Friday, 1. December 2023
Diese Woche fand ich besonders erwähnenswert:
Das Paper-Park-Problem. Schutzgebiete im Meer, die dann tatsächlich einfach nicht geschützt werden. Wieder eine Sache, bei der Deutschland zugunsten der Profite Einzelner seinen kollektiven Verpflichtungen nicht nachkommt.
Auch etwas zur Rolle Einzelner und den Interessen von Untergruppen: The Failed Commodification Of Technical Work beschreibt, wie Programmierarbeit eben nicht in auswechselbare Industriearbeit umgewechselt werden konnte. Zum Glück!
Ein bisschen zu optimistisch ist diese News zur Linksteuer: Kanada gibt es billiger, damit Google News weiterläuft. Dass Kanada seine Forderung nicht völlig durchkriegt, weil Meta sich zurecht weigert zu zahlen und Google ebenfalls Bedingungen stellt, macht ja nicht rückgängig, wie korrupt hier Geld den Verlegern zugeschustert wird.
Eine beschränktere Öffentlichkeit betrifft Shutting down the Matrix bridge to Libera Chat, trotzdem beachtenswert. Libera Chat ist das Nachfolgenetzwerk zu Freenode, also IRC. Und die Kooperation mit Matrix hatte Bedeutung sowohl für die Legitimität für Matrix als die favorisierte moderne Lösung von Technikern, und für die fortwährende relative Wichtigkeit von IRC.
Warum dann also die Abschaltung? Matrix Bridge Temporary Shutdown, a Retrospective erklärt es aus der Perspektive von Libera.
Ein technisches Problem mit noch mehr Auswirkungen ist BLUFFS: Neue Angriffe gefährden Bluetooth-Datensicherheit auf Milliarden Geräten. Solche Lücken sind es, weswegen Geräte wie Telefone fortwährend Sicherheitsupdates brauchen.
15 Jahre Serendipity als Entwickler - ein Rückblick und ein Ausblick
Monday, 27. November 2023
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
Friday, 24. November 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
Monday, 20. November 2023
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
Friday, 17. November 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
Monday, 13. November 2023
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
Friday, 10. November 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
Monday, 6. November 2023
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
Friday, 3. November 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.
Warum ich von meinem PineTab ausgerechnet auf ein Microsoft Surface Pro umstieg
Monday, 30. October 2023
Gut, ein großer Faktor war, dass das das PineTab nicht mehr anging. Aber der Wechsel gibt eine interessante Geschichte ab und war so oder so eine gute Idee – wobei das PineTab auch ein paar Vorteile hatte.
Der Wechsel
An einem Donnerstag hatte ich das PineTab wieder aus dem Schrank genommen, es angemacht und aktualisiert. Tatsächlich fehlten ein paar wichtige Daten wie meine Passwortdatenbank. Ich hatte das PineTab schon zuvor als Reisebegleiter benutzt – dafür ist es vom Formaktor her super geeignet, klein und leicht und doch mit Tastatur – aber seitdem neu installiert und es auf der letzten Reise durch einen Arbeitslaptop ersetzt gehabt. Ein paar Datentransfers und ein Update später war alles bereit. Die Reise sollte am Samstag starten.
Freitag mach ich das PineTab nochmal zur Kontrolle an – und nichts passiert. Nicht ganz, tatsächlich klackerte das Ding vor sich hin. Das hatte es früher schon manchmal gemacht, irgendwas stimmt da mit der Hardware meines Modells nicht. Aber diesmal blieb der Bildschirm über viele Versuche aus, ob neu geladen oder nicht. Das war neu, und nun war ich in Panik. Wegen dem Charakter der Reise brauchte ich unbedingt ein fähiges Begleitergerät, um auf die Server zu kommen etc. Aber es blieben nur noch ein paar Stunden um ein neues Gerät einzurichten und es musste Linux drauf laufen.
Also ging ich auf Kleinanzeigen und suchte nach Laptops in der Umgebung. Es gab die Auswahl zwischen überteuertem Schrott und für die Reise ungeeigneten Gaming-Monstern. Auf Verdacht suchte ich nach Surface – und fand einen Treffer für ein Surface Pro 3. Das war verlockend: Gleiches Prinzip wie das PineTab, also ein Tablet mit andockbarer Tastatur, die Erfahrungen in der Familie mit der Gerätefamilie sind positiv und einer schnellen Recherche zufolge gibt es ein Projekt, um die Geräte mit Linux kompatibel zu machen, wobei das ältere dritte Surface-Tablet noch mehr Standardhardware einsetzt und daher sowieso kompatibel sei. Angeschrieben, prompte Antwort, rübergelaufen und das Gerät war in meiner Hand.
Linuxinstallation auf dem Surface Pro (3)
Durch Zeit und die Größe des einzigen USB-Sticks im Haus beschränkt entschied ich mich notgedrungen für Lubuntu. Die Installation war überraschenderweise problemlos. Per Tastenkombination (wie bei einem Android-Telefon "Lautstärke hoch + Power") das BIOS starten, Booten von USB bei der Bootreihenfolge aktivieren. Lubuntu startet dann direkt, Wlan funktionierte, der Installer konnte durchlaufen. Ich musste dann nur nochmal die Windows-Bitlocker-Verschlüsselung deaktivieren, weil ich zur Sicherheit die Windowsinstallation tatsächlich behalten wollte und der Installer wegen der Verschlüsselung keinen Speicherplatz abzwacken konnte.
Alltag mit Vor- und Nachteilen
Nach der Installation zeigte das Surface-Tablet, das ich bis jetzt fast ausschließlich mit der Tastatur als Laptop benutzte, seine Stärken. Alle in meiner Besprechung erwähnten Schwächen des PineTabs sind gelöst:
- Das Gerät geht zuverlässig an.
- Es wirkt mit seinem Magnesium-Gehäuse viel wertiger
- Der (hochauflösende und gute) Bildschirm wird deutlich heller.
- Die Lautsprecher sind lauter und besser.
- Die Tastatur wabbelt weniger; Das Touchpad ist zwar nicht toll, aber etwas größer und wirkt genauer.
- Es gibt keine Probleme mit einer SD-Karte, dessen Mechanismus und Abdeckung, weil eine echte SSD eingebaut ist.
- Die Performance des Prozessors ist viel besser, das Gerät bei Alltagsnutzung dadurch angenehm schnell.
Außerdem vermeidet die Standardhardware – x86-Prozessor statt ARM – und das damit mögliche reguläre Lubuntu die Softwareprobleme, die postmarketOS damals hatte und die bei meinem Test an dem Donnerstag teilweise auch heute noch bestanden.
Perfekt ist das Surface Pro 3 aber auch nicht. Zuerst ist es größer, 12" statt 10", 800g statt 575g. Das macht es für einen Reisebegleiter weniger geeignet. Der in meinem Modell verbaute i7-4650U-Prozessor hat nur zwei Kerne und ist abseits des Vergleichs mit dem PineTab nicht sehr leistungsfähig. Anfangs ruckelte sogar Youtube auf 1080p – was ich durch eine Kontrolle der Hardwarebeschleunigung und folgendem Erzwingen von h264 löste und was wenn ich mir seitdem die Performance anschaue auch ein Bug gewesen sein kann. Bei Videos wird auch auffällig, dass der Akku nicht besonders lange hält, ob das nun am Alter des Akkus, an fehlenden Optimierungen im Kernel für die Hardware oder an sonstwas liegt sei dahingestellt. Das Ladegerät ist ein interessantes magnetisches Ansteckkabel, aber damit eben auch ein proprietär, eventuell schwer zu ersetzen. Und schließlich ist der Bildschirm zwar schön und hell, aber auch spiegelnd, was mich immer stört.
Trotz der Nachteile kommt das Surface-Tablet klar besser weg. Es ist eben auch ein Vergleich zweier sehr unterschiedlichen Qualitätsklassen. Das Surface Pro 3 in dieser Ausführung kostete bei Release 2000 USD und war trotzdem Massenhardware mit einem Megakonzern im Rücken. Dafür ist es von 2014, also völlig veraltet. Das PineTab ist deutlich moderner, ich kaufte es als Neugerät 2020, aber der theoretische technische Fortschritt wiegt die Nischigkeit und den Preisunterschied (es kostete ~160 USD) eben doch nicht auf.
Trotz des Alters des Surface Pro 3 und der Größe ist es ein besserer Reisebegleiter, als es das PineTab damals war. Die Installation und Nutzung von Linux war problemlos, wobei meine Wahl von Lubuntu die Nutzung als Tablet etwas einschränkt. Ich würde wegen dem Alter des Akkus und dessen fast unmöglicher Auswechselbarkeit das Gerät auch nicht generell empfehlen, sondern eher raten nochmal nachzurecherchieren, ob eines der neueren Surface-Tablets oder ein Alternativgerät gut unterstützt wird. Oder direkt zu einem Framework-Laptop greifen. Die Option hatte ich aus Zeitmangel nur nicht – wobei ein teures neues Gerät auch nicht zu meinem Reiseland gepasst hätte und es durchaus ein Plus war, so die Nutzungszeit eines Altgeräts noch etwas zu verlängern.
Dem PineTab werde ich mit etwas mehr Zeit nochmal eine Chance geben. Möglich ist es ja, dass es nach einer Bedenkpause wieder angeht oder es tatsächlich ein Softwareproblem ist, das den Bildschirm schwarz bleiben lässt. Ich mochte den Ansatz des Geräts als Prototyphardware für den mobilen Linuxdesktop und hätte mit ihm gerne noch ein paar Softwareiterationen miterlebt. Es wäre schade, wenn es das jetzt schon war. Wobei man ehrlicherweise sagen muss, dass die Hardware wohl auch schlicht zu schwach war, um als Arbeitsgerät zu taugen und Macken wie die schlechten Lautsprecher auch die Nutzung als SD-Multimediatablet blockieren, dadurch blieb es daheim ungenutzt. Es wäre also abseits eines Reisebegleiters, was sich jetzt wohl erledigt hat, immer nur ein Experimentiergerät gewesen um zu schauen, was bessere Hardware könnte. Hardware, wie sie das alte Surface-Tablet eben schon mitbringt…
Linksammlung 43/2023
Friday, 27. October 2023
Diese Woche fand ich besonders erwähnenswert:
They can and will ruin everything you love nimmt die Bandcamp-Übernahme und baut daraus eine größere Kapitalismuskritik.
Die andere große Übernahme in dem Bereich und noch viel schlimmeres zeigt Twitter unter Elon Musk: Die Timeline des Grauens.
Wegen Bei Apple unerwünschte Themen: Jon Stewart trennt sich angeblich von TV+. Sympathische Firma das.
Wir konnten etwas seltenes beobachten: Encrypted traffic interception on Hetzner and Linode targeting the largest Russian XMPP (Jabber) messaging service. Es riecht wohl nach einer vom deutschen Staat angeordneten Abhöraktion, die Hetzner und Linode da durchgeführt haben. Deswegen braucht es immer zusätzliche Ende-zu-Ende-Verschlüsselung, um solche Übergriffe nicht zuzulassen.
Geany 2.0 ist da, der Editor mit ein paar IDE-Funktionen – und auf dem Heimsystem mein Hauptprogrammierwerkzeug – hat sich mit dem Versionssprung wohl nicht groß gewandelt, aber sinnvoll verbessert.
Top Gun: Maverick
Monday, 23. October 2023
Top Gun: Maverick war für mich absolut großartig. Der beste von mir gesehene Actionfilm seit Mad Max: Fury Road mit einer ganz ähnlichen Sogwirkung durch unfassbare Actionszenen ohne Pause. Stimmt nicht ganz, Top Gun ist nicht ganz so durchgängig Actionszene an Actionszene, nimmt sich mehr Zeit für ruhigere Szenen. Aber nur zu Beginn, das lange Finale ist ebenso atemberaubend.
Es ist auch, wie diese Actionszenen gemacht sind. Die echten Flugzeuge, dass wohl die Schauspieler tatsächlich in ihnen gesessen haben. Natürlich muss da irgendwo CGI drin gewesen sein, aber wenn ist es perfekte, die zumindest auf meinem Bildschirm nie als solche wahrnehmbar war.
Mir gingen auch die Szenen mit Val Kilmer nahe, der ja wirklich krank ist und entsprechend im Film gezeigt wurde. Und das von Tom Cruise selbstironisch verwendete "Ich hab nur dieses Gesicht" passte auch – auch ohne großes Schauspielern trägt er seine Rolle in der einen Variante die er kann, als stoischer Actionheld mit einem gelegentlichen Lächeln.
Linksammlung 42/2023
Friday, 20. October 2023
Diese Woche fand ich besonders erwähnenswert:
Es gab beim Projekt Home Assistant ein Removal of Mazda Connected Services integration, weil Mazda mit offensichtlich illegitimen DMCA-Takedowns gegen das Projekt vorgeht. Mazda schadet damit nur seinen Kunden und dadurch sich selbst. Ein typisches Beispiel was passiert, wenn eine (hier auch noch unfähige) Rechtsabteilung in einem Unternehmen zu viel Macht hat.
Diablo 4 startet auf Steam mit schlechten Reviews und guten Verkäufen, der Diskurs über ein Spiel bestimmt schon längst nicht mehr seinen Markterfolg, dafür ist die Masse der Spieler zu groß und uninformiert.
Gleichzeitig gibt es dann Spieleveröffentlichungen wie Cities - Skylines 2: Die Entwickler sprechen nicht ohne Grund von Problemen. Auch doof.
Solreader: E-Ink Smart Glasses for Reading möchte ich aus ähnlich negativen Gründen erwähnt haben, die Idee ist komplett Unsinn. Und trotzdem finden solche US-Startups Kapitalgeber, es ist eine verrückte Welt.
Tutonaut stellt OSBN vor als OSBN: 1 Feed, 158 Open-Source-Blogs, auf Deutsch. Gute Idee, hatte ich hier auch schon länger nicht erwähnt.
Cyberpunk 2077: Phantom Liberty bringt viel Gutes und gravierende Macken
Monday, 16. October 2023
Cyberpunk 2077 war schon vor der kürzlich erschienen Erweiterung ein fantastisches Spiel – grafisch, spielerisch, von der Atmosphäre. Phantom Liberty erweitert das Stadtgebiet von Night City um einen gelungen andersartigen Bereich und erzählt darin eine spannende zusätzliche Geschichte, plus einige Nebenquests. Gleichzeitig kam Patch 2.0 heraus, der viele Details des Grundspiels änderte. Doch nicht alles gefällt mir.
Dieser Artikel beschreibt meinen Eindruck nach etwa 50 Stunden. Ich bin mit der Erweiterung – für die ich einen neuen Spielstand angefangen hatte – und dem Spiel noch nicht fertig, werde aber eine Weile nicht mehr dazu kommen weiterzumachen. Um die Releasenähe und meine bisherigen Gedanken nicht zu verlieren daher dieses vorgezogene Review. Ändert sich in Zukunft etwas an meinem Eindruck folgt ein Update.
Update 01.12.2023: Mittlerweile habe ich die Erweiterung durchgespielt. Mein Fazit hat sich tatsächlich etwas zum Positiven verändert, der Artikel unten ist entsprechend angepasst.
Sinnvolle Verbesserungen des Grundspiels
Beim Start meines neuen Charakters habe ich mich über die vielen Änderungen am Grundspiel sehr gefreut. Alle zu Beginn sichtbaren sind sinnvolle Änderungen, teils tatsächlich Dinge, an denen ich mich vorher wirklich gestört hatte.
Teils sind das Kleinigkeiten wie das Telefon. Bei dem war es vorher eine kleine Tortur, per kurzen oder langen Tastendruck in den richtigen Modus zu wechseln, also Anrufe oder SMS. Jetzt ist es ein umschaltbares Interface, von dem aus beides gemacht werden kann und das Spiel bugsiert einen immer in den richtigen Modus. Gleiches Niveau: Die Liste der Shards mit ihren Notizen ist jetzt immer eingeklappt, sodass der gesuchte über die Kategorie viel leichter gefunden werden kann.
Ab jetzt wird es tiefgreifender. Vor 2.0 bestimmten Kleidungsstücke den Rüstungswert, wie in den meisten Rollenspielen. Ein früheres Update hatte schon die Möglichkeit gebracht, statt dem (für die Werte) ausgewählten ein parallel zusammengestelltes Outfit am Körper von V zu sehen. Das ist jetzt seltener nötig, denn generell haben Kleidungsstücke keinen Rüstungswert mehr. Schutz vor Schaden kommt stattdessen durch die Implantate. Dass es die Outfits trotzdem noch gibt macht trotzdem Sinn: Erstens ist so das schnelle Umschalten zwischen verschiedenen Looks möglich, zweitens gibt es doch noch Kleidung, die (geringe) Boni bringt. Aber größtenteils entfällt Kleidung als spielentscheidendes Spieelelement, muss weniger aufmerksam gesammelt oder gar aufgerüstet werden.
Bei den Waffen und Kleidungsstücken entfällt übrigens das sichtbare Levellimit. Stattdessen setzt Cyberpunk rein auf Auto-Balancing, die Qualität der gefundenen Ausrüstung basiert immer auf dem eigenen Level. Dazu unten mehr.
Bei den Implantaten sind also für die Rüstung neue dazugekommen, auch daneben gibt es viele neue. Aber es gibt hier auch neue Limits: Einen Toleranzwert, der abseits einer Fähigkeit im Technikbaum nicht überschritten werden kann. Verschiedene Implantate fressen unterschiedlich viel dieses Wertes, gleichzeitig geben die Implantate mindestens so große Boni wie zuvor. Die Zusammenstellung muss man sich also gut überlegen. Wobei es jetzt auch Implantate der Qualitätsstufe ikonisch gibt, die besonders viel bringen – und besonders viel kosten. Das passt gut in diese Welt der Cyberpsychosis, auch zu dem, wie Cyberpunk in der Netflixserie dargestellt wurde.
Heilgegenstände und Granaten verbrauchen sich nun nicht mehr. Sind sie einmal in einer Qualität gefunden, sind sie für immer verfügbar. Stattdessen wird ihr Einsatz von einem Timer gestoppt. Anfangs zwei geworfene Granaten und es gibt keine dritte mehr, bis die Granaten sich nach ein paar Sekunden wieder aufgeladen haben. Das ist großartig: Es gibt keinen Grund mehr ihren Einsatz generell zu sparen, nur wohldosiert will er sein. Und es vermeidet die Situation, 900 ungenutzte Heilitems im Inventar zu haben und sich fortan durch absehbar jeden Kampf des Spiels durchheilen zu können.
Auch die Fähigkeiten wurden komplett überarbeitet. Es gibt noch die gleichen Kategorien, aber keine Unterkategorien mehr. Und die Fähigkeiten selbst wurden stark abgeändert. Ähnlichkeiten sind da, wie dass Cool für die Wurfwaffen verantwortlich ist und Schleichen erleichtert. Aber die Effekte der einzelnen Fähigkeiten sind komplett umgebaut worden, und sie sind jetzt teils hierarchisch, brauchen also vorher gelernte Fähigkeiten um gewählt werden zu können (und nicht mehr nur genug versenkte Attributpunkte, wobei das immer noch dazukommt). Damit wurde auch viel an der Balance verändert – hatte ich vorher durch die entsprechenden Fähigkeiten einen 1000 Schadenspunkte austeilenden Revolver, bekam ich ihn diesmal nur auf knapp 500. Generell ist die neue V von den Werten etwas weniger stark spezialisiert, war mein Eindruck, wobei die Skills teils sehr coole Zusatzfähigkeiten freischalten, wie das Blocken von Kugeln mit einem Katana oder eine Art kurzen Flug durch die Luft, zusätzlich zum (per Implantat Doppel-)Sprung.
Neue Herausforderungen in Dogtown
Mit all diesen Änderungen kann nun auf Wunsch Cyberpunk wieder von vorne angefangen, alternativ die Inhalte von Phantom Liberty direkt ausgewählt werden. Ich entschied mich für ersteres und erlebte wieder die normale Geschichte bis zu einen gewissen Punkt, an dem dann V ein neuer Anruf erreicht. Das Szenario: Ein Flugzeug steuert auf Night City zu, genauer: Auf Dogtown. Das ist ein neuer Stadteil, der durch ein Tor vom Rest der Stadt abgeschirmt ist, kontrolliert von einem Militär. V soll dorthin reisen und die Insassen des Flugzeugs retten. Wie das eingeführt und inszeniert wird ist großartig, so wie es schlicht eine Freude ist, eine neue Geschichte in Cyberpunk zu erleben. Von der will ich daher ansonsten nichts weiter spoilern.
Dogtown ist auch nicht einfach ein neuer, ansonsten gewöhnlicher Stadtteil. Nein, er ist wirklich vor die Hunde gegangen. In der Geschichte wurde das Gebiet nach einem Krieg übernommen und nie richtig wieder aufgebaut, es könnte so auch einem (grafisch beeindruckendem) Fallout-Spiel entspringen. Dieser Aspekt wird durch die Nebenmissionen vielfach unterstrichen, auch durch die neuen, nur dort aufzufindenden Kleidungsstücke, von denen viele endzeitlich angehaucht sind.
Gleichzeitig belohnt das Erweiterungsgebiet die investierte Spielzeit durch neue Arten von Skillshards mit permanenten Upgrades, einfliegenden Versorgungskisten mit ikonischen (im Sinne der Qualitätsstufe) Ausrüstungsgegenständen, darunter vielen Implantaten. Das Gebiet bietet auch spezielle Relict-Attributpunkte, mit denen ein neuer kleiner Fähigkeitenbaum mit Zusatzfähigkeiten gefüllt werden kann, was V dann doch nochmal spezialisiert. Das alles ist sehr angenehm.
Auffallende Verschlechterungen
So toll das alles bis jetzt auch klingen sollte, so hat Phantom Liberty doch auch Probleme, und selbst das Grundspiel hat durch manche Änderungen neue Probleme.
In den Nebenmissionen von Phantom Liberty zeigen die Entwickler eine Unehrlichkeit, die das Hauptspiel vorher vermied. Ein Beispiel: In einer Mission soll ein Transporter von A nach B gebracht werden. Direkt beim Aufbruch gerät ein Kollege in Gefahr, V kann ihn retten, riskiert dann aber mehr Straßenblockaden. Doch das ist mitnichten wahr: Nach der Rettung wird das transportierte Gut automatisch beschädigt ankommen. Rettet man den Kollegen nicht und fährt bewusst in jeden Gegner hinein, das Gut bleibt trotzdem heil. Das Ergebnis ist schlicht geskriptet, anstatt die Konsequenz als Spielinhalt zu verpacken und so eben auch eventuell bewältigbar zu machen.
Im Ergebnis sind die neuen Nebenmissionen oft unbefriedigend. Nicht immer, aber erstaunlich oft gibt es egal ob des Verhaltens, den Entscheidungen und V's Attributen keine gute Lösung. Das reicht bis in die neuen Hauptmissionen hinein: An einer Stelle ist ein Netrunner in Gefahr. V kann mit einem hohen Skillcheck auf Intelligenz schnell seine Verbindung kappen – der Netrunner stirbt trotzdem, der Skillcheck ist nur Zierde. Das Hauptspiel hat fast die gleiche Situation in einem Nebenquest, dort rettet der Skillcheck noch das Leben. Warum ist da das Spiel so? Reichte die Zeit nicht, um verschiedene Konsequenzen später angemessen in der Story zu berücksichtigen?
Mir verleidet das ein bisschen das Spiel. Auch das Hauptspiel hatte solche Missionen, auch die Hauptstory ist düster und stellenweise wirkt sie, als ob es keine guten Möglichkeiten gibt. Aber das stimmt fast immer nur so halb und die Nebenmissionen mit nur schlechtem Ende wurden durch doch positiv beeinflussbare aufgewogen. Diese Balance ist den Entwicklern in Phantom Liberty bisher nicht gelungen und ich befürchte als Spieler ständig, dass die Story der Erweiterung genauso unehrlich ins Desaster führt. Für ein Rollenspiel mit Entscheidungen und Konsequenzen ist das unangemessen. Natürlich darf es feste Katastrophen geben, natürlich darf der positive Ausgang schwer zu erreichen sein, aber immer wieder nur zwischen Pest und Cholera wählen zu können ist frustrierend und unspaßig.
Noch schlimmer ist das neue Autobalancing. Wie oben erwähnt ist das Levellimit bei Waffen weggefallen. Erstmal ist das gut. Cyberpunk setzt das aber durch ein Angleichen der Waffen aller Gegner an das eigene Level um. Ich möchte nicht ausschließen, dass das stellenweise nicht stimmt – vielleicht gibt es immer noch Gegner im Anfangsgebiet, die schwach bleiben. Und ich erlebte definitiv Gegner und Nebenmissionen in später zugänglichen Gebieten, die anfangs zu schwer waren. Doch größtenteils skalieren die Gegner und ihre Ausrüstung mit dem Spielerlevel mit. Missionen haben dementsprechend auch keine Anzeige mehr, ob sie noch zu schwer oder mittlerweile leicht wären. Aber schlimmer noch: Das gleiche gilt für Skillchecks! Nicht alle im gleichen Maße, aber generell fast alle Skillchecks sind sichtlich nicht mehr auf einen Wert festgelegt. Sondern sie werden schwerer, wenn V ein höheres Level erreicht.
Aufgefallen ist mir das erst nach eine Weile, im Delamain-Quest, wo die alternative Lösung für eine wichtige Entscheidung nicht mehr 11 Intelligenz braucht, sondern bei mir 16. Laut Wiki geht das Limit bis 20 hoch. Das sah ich später sowieso oft, dass Türen zu öffnen auf einmal 20 in Technik investierte Attributpunkte brauchte, wo das Hauptspiel vor 2.0 niemals so hochgegangen wäre. Unheimlich frustrierend, weil der Spieler so in Quests später oft (immerhin nicht immer) nur noch von den auf 20 Punkten maximierten Attributen profitieren kann und das Spiel so die Möglichkeit verbaut, sich auf Missionen vorzubereiten. Das minimiert das Fortschrittsgefühl und macht Cyberpunk 2077 zumindest in diesem Aspekt zu einem klar schlechteren Spiel, als es vor 2.0 war.
Dem Fortschrittsgefühl ist auch nicht damit gedient, dass das Levellimit nicht ausreichend erhöht wurde. V kann jetzt Stufe 60 erreichen, also 10 Stufen mehr, aber das bedeutet trotzdem, dass bei Bestreiten auch nur einiger Nebenmissionen das Maximallevel lange vor Spielende erreicht werden wird.
Bugs als sei es 2020
Was mich noch fassungsloser macht sind die Bugs, die ich in Cyberpunk nun wieder erleben darf. Vorab, ich spiele unter Linux mit Proton und kann nicht ausschließen, dass dieses Setup sie teilweise auslöst. Aber es sind von der Art die gleichen Bugs, über die beim Release 2020 berichtet wurde, daher bezweifel ich das.
Ruft V sein Fahrzeug, erscheint es und fährt in die Nähe. Immer wieder kollidiert es dabei mit anderen Fahrzeugen, bleibt in der Ferne stehen, oder fährt zu V, versucht zu bremsen aber schlittert noch 30 Meter weiter, kollidiert gar mit voller Wucht in eine Wand. Das erinnert zwar an Teslas Autopilot, aber ich vermute, dass das Verhalten nicht als cleverer Kommentar gemeint und damit gewollt war.
Ich sah fliegende Autos, die von Kollisionen hunderte Meter in die Luft geworfen waren. Leichen, die in der Luft schwebten. Autos, die harmlos einer Straße entlangfahrend grundlos explodierten. In Dogtown gab es eine Mission in einer Kirche, ständig hört ich draußen das Geräusch von schweren Kollisionen – wahrscheinlich war da eine der Stellen, wo die Autos irgendwie mit der Straße kollidieren, was auf den Schotterstraßen im Nomadengebiet ständig passierte. Das alles sind neue Bugs, die vor 2.0 nicht oder nur seltenst auftraten – mit Ausnahme des Herbeirufens des Fahrzeuges, das funktionierte nie ganz richtig, kollidierte nur seltener mit anderen Autos.
Ich hatte (seltene) Komplettabstürze des Spiels nach Laden eines Spielstands. Und einen Spielstart, bei dem die Musik des Intros nicht aufhörte, selbst beim Laden des Spielstandes nicht. Zu Beginn wurde die Tastatursteuerung zwar akzeptiert, aber trotzdem in der UI die Icons eines Controllers gezeigt. Dieser letzte Bug wurde aber mit dem Patch 2.01 bereits gefixt.
Vor 2.0 auch schon und immer noch im Spiel ist ein Bug, bei dem das Schließen der Karte zu einem Überblendungseffekt führt. Alles wird hell, als ob V von einem Tunnel heraustreten und direkt in die Sonne schauen würde. Diesen Bug immer noch zu erleben ist ziemlich nervig, wobei weder er noch die Masse an Bugs das Spiel unspielbar macht. Denn Blocker waren bei mir nicht dabei.
Fazit: Man könnte abwarten, aber…
Mein Fazit der Erweiterung Phantom Liberty und von Cyberpunk 2077 mit den Änderungen von Patch 2.0 ist zwiegespalten. Auf der einen Seite sind da viele sinnvolle Verbesserungen drin. Die neuen Fähigkeitenbäume sind ok, die neue Rolle der Implantate ist klar besser, die Wichtigkeit der Kleidung zu minimieren ist super, dass Crafting keine Fähigkeiten mehr braucht um gut zu sein ist sinnvoll, das Interface wurde an ein paar Stellen mit Bedacht verbessert, Granaten und Hyposprays nicht mehr horten zu müssen bzw zu können ist klasse. Das ist ordentlich Holz. Und sowohl ist Dogtown ein interessantes neues Spielgebiet als auch die dort erzählte Story eine fesselnde, atmosphärisch ist das wieder toll.
Andererseits nervt mich die Skriptlastigkeit mancher der neuen Nebenmissionen, ärgerte ich mich einmal zu oft über den allzu schlechten Ausgang einer Teilstory. Auf mich wirkt es stümperhaft, dass die Autoren so wohl die Gefährlichkeit der dystopischen Cyberpunk-Welt zeigen wollten, anstatt dem Spieler eine faire Chance zu geben. Es muss ja nicht immer der Weltfrieden herbeibeschwörbar sein, aber V sollte wirkmächtig genug sein, zumindest das schlimmste zu verhindern. Was soll das alles sonst? Aber es ist klar, dass sich an der Hinterfotzigkeit der Schreiber bei den neuen Nebenmissionen nichts mehr ändern wird – und ähnliches gilt tatsächlich auch für die Hauptstory der Erweiterung, das ist nur gerade noch erträglich. Ich konnte mich schließlich damit arrangieren, das Spiel mehr noch als eine Story begreifen, die übelsten Ausreißer wie die oben beschriebene Nebenmission mit der Fracht mal ausgenommen.
Völlig inakzeptabel aber sind die vielen neuen Bugs und das übertriebene Autobalancing, gerade die nun von Vs Level abhängenden Skillchecks. Das ist so gravierend, dass ich da fast auf ein Einlenken der Entwickler hoffen würde, ebenso wie sie wohl die Bugs noch reparieren würden, sollten sie nicht doch an Proton hängen. Handeln sie nicht, könnten mit der Zeit bei beiden Problemen Mods aus dem Nexus aushelfen.
Aber sicher kann ich da natürlich nicht sein. Und um Abwarten zu empfehlen ist die Geschichte dann doch zu gut. Phantom Liberty bringt viele tolle Missionen, kleine wie große, und auch einige gute neue Mechaniken. Trotz aller teils unerklärlichen Schwächen ist das Spielen insgesamt doch ein großartiges Erlebnis. Also muss ich die Erweiterung empfehlen, so sehr ich mir auch erhoffe, dass die Macken noch ausgemerzt werden und es eine wirklich perfekte Version von Cyberpunk 2077 geben könnte.