Wisst ihr, was mir in dunklen Zeiten wie dieser Jahreszeit Erheiterung ins Leben bringt? Dieser Spirale zuzugucken:

  1. Unsere Software ist zu komplex, wir haben die Komplexität nicht im Griff! Pass auf, wir machen da ein verteiltes System daraus! Dann sind die Einzelteile weniger komplex. Vielleicht können wir das dann unter Kontrolle bringen.
  2. Das verteilte System braucht viel mehr administrativen Aufwand. Pass auf, den automatisieren wir weg! Wir machen Container! Docker!
  3. Docker-Aufsetzen braucht viel mehr administativen Aufwand. Pass auf, den automatisieren wir weg! Wir machen Kubernetes!
  4. Kubernetes braucht viel mehr administativen Aufwand. Pass auf, den automatisieren wir weg! Wir machen Ansible!
  5. Ansible braucht viel mehr administativen Aufwand. Pass auf, den automatisieren wir weg! Wir machen Chef / Salt!
Frank hat im letzten Alternativlos das wunderbare Wort "Komplexitätsverstärker" eingeführt. Das ist genau, was hier passiert. Am Ende hast du ein Schönwettersystem. Wenn das erste Mal der Wind dreht, dann hast du einen Scherbenhaufen. Niemand kann diese ganze Komplexität mehr durchblicken.

Gut, das konnte bei den Monolithen am Anfang auch niemand. Aber da gab es eine realistische Chance. Jetzt nicht mehr.

Und dazu kommt, dass du am Ende mit einem Dutzend YAML-Dialekten zu tun hast, alle subtil unterschiedlich.

Für CI-Pipelines gilt Ähnliches. Die wirken im Allgemeinen auch komplexitätsverstärkend. Ich mache ja Code Audits bei Kunden, d.h. ich muss den Code nur lesen können, nicht bauen. Wäre natürlich schöner, wenn ich den auch bauen könnte. Aber das haben, wie sich rausstellt, praktisch alle Kunden schon vollständig aufgegeben.

Dafür müsste man mir in der Cloud eine Kopie der CI-Pipeline konstruieren. Und die durchblickt niemand mehr. Das ist völlig unrealistisch. Welche Präprozessor-Symbole gesetzt sind? Äh ... keine Ahnung? Wir wissen nur, dass wir hier clicken, und am Ende fällt ein Binary raus. Wir verstehen nicht mal genug, um die Fehlermeldungen der Pipeline und des Compilers auszuwerten.

Da lobe ich mir echt das GNU-Projekt und die BSDs, die ihre Buildsysteme auf einen gemeinsamen Standard normiert haben. Schade nur, dass die sich nicht auf denselben Standard einigen konnten.

Meine Zielvorstellung wäre ja, dass du in jedes Verzeichnis gehen kannst, make aufrufen kannst, und dann baut der die Libraries und Programme aus dem Verzeichnis.

Wenn man nur Open Source macht, könnte man geneigt sein, den Buildprozess von Firefox für den übelsten der Welt zu halten. Glaubt mir. Weit gefehlt. Der spielt nicht mal in derselben Liga wie so übliche Kommerzprojekte.

27.01.2020