Go back

#29 QVO - Oscar Quevedo, Waldo Uribe y Matías Menich - Co-founders

44m 33s

#29 QVO - Oscar Quevedo, Waldo Uribe y Matías Menich - Co-founders

Der Vortrag „Decentralize and Automate“ plädiert für dezentrale, offene Softwareentwicklung, die durch Automatisierung und Qualitätssicherung nachhaltig und wartungsarm gestaltet wird. Die Sprecherin, Vanessa, betont als Infrastruktur-Expertin die Notwendigkeit von zuverlässigem Code als „Klebstoff“ für moderne Infrastrukturen. Sie kritisiert den unreflektierten Einsatz von LLMs für Codegenerierung und fordert stattdessen ein Verständnis für qualitativ hochwertige Entwicklung. Als praktische Lösung empfiehlt sie die Migration von zentralen Plattformen wie GitHub zu dezentralen Alternativen wie Forgejo oder Codeberg, um Abhängigkeiten zu reduzieren und Community-basierte Entwicklung zu fördern. Zentral ist die Automatisierung mittels CI-Pipelines, die Linting, Testing und Builds automatisieren, sowie der Einsatz von Renovate zur automatischen Aktualisierung von Abhängigkeiten. Der Vortrag ermutigt Entwickler, diese Tools zu nutzen, um Software robust, sicher und langfristig wartbar zu gestalten.

Transcription

7030 Words, 44450 Characters

German
Herzlich willkommen zu meinem Vortrag "Decentralize" und "Automite" hier Code. Offene Software, Hochqualität und wenig Aufwand mit Fortschuhungcode, die Welt in Kleinschritten verbessern. Es folgt mich, dass ihr euch zum Schluss um 18 Uhr noch mal für eine oder drei Fütelstunde rein, dass die Jamel entschieden hat. So stimmen wir zwar nicht mehr werden, aber warum bin ich eigentlich hier? Ich will euch im Wesentlichen motivieren, "Decentral", "Gute" Fortschwaft wäre und vor allen Dingen auch "Gutes" Tule gingen dafür zu bauen. Und das gibt jetzt die Quare im Bahn, weil es schön schnell in Graz, das war natürlich auch irgendwie so ein kleiner Grund, dass man sich auch so könnte, ja mal wieder hier vorbeischauen und uns ein Tag einreichen. Erst mal, wer bin ich eigentlich, um es mit den Worten einer Person vom Konkres zu zitieren, die mir gerade eine Chaosforskarte zugestellt hat. Du doch bis doch die Person mit dem Päperl ist. Gibt natürlich ein bisschen mehr, weil mich zu sagen, ich bin Vanessa 27 Jahre alt. Nickname "Margao" kommt aus Karlsruhe Deutschland, also doch ein gutes Stück weg. Ich bin relativ aktiv im Chaos, zum Beispiel im Walk, also in denen bei den Menschen, die hier Videos machen, das ist auch so der Grund, der mich mit hier hergeführt hat. Ansonsten mache ich sehr viel mit Zügen, sehr viel mit IT Infrastruktur, insbesondere IPv6. Und eigentlich bin ich eine Infrastrukturperson, keine Software-Entwicklerinnen, zumindest nicht das, was man sich so gleich sich unter Vorstellt. Wieso ich jetzt plötzlich ein Talk, was Software-Entwicklung halt, kommen wir gleich zu? So ein bisschen was habe ich bisher so gemacht, also relevante Vorträger, einmal GP-N23 sieht man, baut bessere Infrastruktur und redet darüber, das ist im Prinzip so der direkte Vorläufer Talk von heute. Und dann habe ich ja auch auf die Versen-Events zum Beispiel auf der Self-Net-App-Linke in Stuttgart und auf der MMCD aus ein bisschen was über Automatisierung, Infrastruktur, IPv6 etc. erzählt. Ja, und jetzt stehe ich hier und will mit euch über Software reden. Vorher, als ich die Slides gebaut habe, dachte ich, es kommt eher am Ende eine Frage zu guter Software- und LLM, wir müssen da leider mal drüber reden. Kurz zusammenfassung, wir geht da ganz ehrlich im Kram auf den Keks, es ist natürlich so, es gibt Raustufen, so ganz sagen, ich nutze es nie, kann ich auch nicht. Nutze sinnvoll, dieser Vortrag ist zu 100% menschlich und mein Anspruch ist auch, wir reden hier über gute Software, gute Software-Entwicklungen, offender Software-Entwicklung. Wenn ich jetzt hier so ein Clot habe, was mir irgendwie ein Feature mit 10 integrierten Sicherheitslücken über den Zaun wirft, kein Mensch, jemand, der diesen Code verstanden hat, das ist nett, dass wir hier machen wollen. Das ist auch nicht das, was unter irgendwie guter Offender Software meiner Meinung nach zu verstehen ist. Deswegen ist wichtig, ich für euch zeigen, wie ihr selbst das hinkriegt, wie ihr selbst das eine gute Tule hinkriegt, vor allen Dingen auch hinkriegt und euch mitgeben. LLM ist ja nein, das sind Raustufen, eine harte Schwarze, da weiß ich, dass es nicht geben, denkt aber bitte gut darüber nach, was ihr tut und versteht, was er tut. Und hier nach werde ich auch in diesem Vortrag das Wort M oder KI nicht mehr in den Mund nehmen, von daher könnt euch ganz hell spannend zurücklernen. Wie komme ich denn jetzt aber eigentlich dahin, über Code zu reden? Code ist am Ende eine Notwendigkeit für gute und für moderne Infrastruktur. Also so Infrastrukturkübernators, Netzwerk, Automatisierung, das ist eben nicht nur jammel, weil ich brauche irgendwo Dinge, die es zusammenklebt. Beispiel, das ist ein Screenshot aus meinem letzten Vortrag zu genau dieser Infrastruktur. Ich habe irgendwo so eine Source of Truth, so eine Netbox und alles mögliche zieht die Daten daraus. So ein Prometorys, so ein Monitoring System, so ein Ansible, Logging System, irgendwelche Dächthports etc. Aber da habe ich ganz viele Komponenten, die ich am Ende irgendwie zusammenkleben muss. Das Monitoring braucht Daten und diese Daten muss irgendwo rauskommen, also muss ich mir eine Exporter bauen, der quasi links und rechts zusammenklebt. Also die Software, die ist mir am Ende möglich, den Infrastruktur zu betreiben. Und aus der Ecke komme ich tatsächlich und aus der Ecke sind auch im Wesentlichen die Projekte, die ich so mental entstanden. Im Prinzip so ein bisschen der Klebstoff für die automatische Infrastruktur etc. Zum Beispiel ist die Überwachung von irgendwelchen Quaronshops krippen oder Backups, ebenher Prometorys, um einfach sicherzustellen. Klappt das Backup meiner Infrastruktur, läuft das, habe ich nicht ein Stück Software gebraucht. Wie funktioniert das aber eigentlich so software entwickeln und maintainen? Also vor allen Dingen das ganze maintainen, das ganze drum herumherum, ich will jetzt nicht einen Pifengrundkurs mit euch machen. Aber all das was ich über die letzten Jahre bei mir so ein bisschen ergeben hat, gerade auf der kleinen Skalierung, was brauche ich da an Tooling etc. Was muss ich also eigentlich tun? Änderungen im Repository, das ist jetzt erstmal so das Standard, ich gehe mal davon aus, ihr kennt alle Git etc. Ich muss irgendwie Änderungen managen. Das heißt irgendjemand nutzt vielleicht meine Software, machten ich so auf so irgendetwas ist kaputt oder ich hätte gerne oder entwickelt das sogar direkt machten Poli-Quest auf so. Ich würde gerne diese Änderungen in deiner Software forne. Das ist jetzt erstmal keine große Kunst, das ist eigentlich Standard. Interessant wird, das was danach kommt. Irgendwie kann ich Qualität sichern, also Lins zum Beispiel, also statiche Code-Analozer ausführen. Wir bleiben mal bei dem Pifengrundkursystem auch da gibt es noch einen Volltools, da will ich jetzt auch gar nicht so sehr darauf eingehen, die sind auch irgendwie so Standardools. Analyse den Code, finden Fehler finden, irgendwie Patterns, die jetzt nicht so ideal sind, schlagen vor irgendwas anders zu machen. So was sollte einfach bei jedem Poli-Quest einmal ausgefüllt werden und dann kann man zumindest schon mal sagen, "Ochhetik, Qualität von der Poli-Quest ist, wenn da jetzt kein Fehler rauskommt, am Ende ein bisschen besser." Genau das selbe kann ich mit Tests machen, also irgendwelche Junetests bauen, ich habe irgendwelche Integration-Tests, die halt automatisiert gucken, geht es noch, wenn ich diese Änderungen angewendet habe. Setzt natürlich voraus, dass man die Testabdeckung hat und tatsächlich die richtigen Sachen prüft. Auch Testing ist ein Thema für sich. Zusammenfassung soll verhindern, dass die Änderungen irgendwas kaputtmachen. Klappt natürlich auch nicht immer, aber das ist auch so eine der Standard-Patterns, die laufen sollten, wenn man sie denn her hat. Ja, wenn man sie denn hat, das ist bei all dem hier so. Also ich habe garantiert keine 100%ige Testabdeckung und manchmal auch einfach gar keine bei meinen Tools, aber also eigentlich etwas, was man schon anstreben sollte, gerade wenn die Projekte größer werden. Dann habe ich das Thema Dependencies-Updaten. Ihr kennt alle dieses XCASTITY vermutlich oder die meisten von euch kennen das. Ich habe irgendwie so ein Riesenbaum, ganz oben habe ich ein Stück Software von mir und dann habe ich so wirklich viele Bilding-Plots an Dependencies darunter. Und manchmal auch gute instabilesegeltoint-office ist. Diese Dependencies haben sich ja jetzt lücken und zwar je nachdem wie groß dieser Baum wird, relativ viele. Diese Dependencies werden in so einem Projekt, in der Regel in Files definiert, häufig auch gelockt. Also so nehme genau diese Version und dann baut die Software mit genau diese Dependency. Aber irgendwie habe ich das Thema, wenn da jetzt dann bekannter Sicherheitslücke drin ist und ich das aber eigentlich will ich das dann mitkriegen, fixen, automatisch aktualisieren oder halt auch vielleicht behand. Und was man muss sich eigentlich sonst noch tun, wir haben jetzt irgendwie das Repository mit Inhalt gefüllt. Also wir haben jetzt den Änderungsprozess, irgendjemand kann pull requests aufmachen, ich habe Linz und so weiter. Genau, ich muss das Ganze aber irgendwie noch bauen und ich muss es willießen. Das erste Thema, abdates willießen, also es wurde ein Änderung vorgenommen. Ich mache erst mal einen neuen Tag, also ich wollte ein neues Willis machen. Da gibt es ja auch so Standard-Patterns, Semantic-Warchindings-Semfer, Samfer, Sumager.my.pl. Kann ich mir jetzt überlegen, ist jetzt meine Änderung, eine Mähdscheränderung ist irgendwie neue Features dazu gekommen sind, all die Features kaputt gegangen. Vielleicht will ich dann auch Pro-Willis es machen, also so ist es noch nicht fertig, aber hier ist schon meine Vor-Schaut zum Ausprobieren. Und ich will in Change-Lock für meine Nutzer zusammenstellen und natürlich auch veröffentlichen, dass die wissen, was ist ein eigentlich passiert in diese neuen Release. Das ist, schauen wir gar nicht zu wenig Arbeit am Ende, wenn man das wirklich versucht, ordentlich zu machen und in jedem Release zu machen und auch Konsistenz zu machen und so weiter. Jetzt weiß ich, wie ich meine Release nenne, jetzt muss ich das Paket noch bauen. Also irgendwie muss die Software zum Nutzer. Einfach, da fall ich laut einfach ein Archiv mit dem Grey-Coch-Hoch. Funktioniert nur für die meisten Use-Cases, dann ganz so ein Ideal. So ein Nutzer macht eher so einen Ab-Den-Stall oder irgendeinen Plakman-Install oder irgendeinen Pip-Install oder nutzen docker Container. Das heißt, ich muss den Kram bauen und ich muss den entsprechenden Registrihoch laden, wo die Nutzer dann am Ende dran kommen. Ja, Hochladen haben wir gerade, da auch alle möglichen Registries, die genutzt werden können. Ich habe irgendwie so einen Pipi, also eine Sprachspezifiche Registries von Pipem in dem Beispiel. Ich habe ein Fortshoch-Registrihoch von meiner Entwicklung zum Gebung. Ich habe vielleicht noch irgendein Docker-Registrihoch. Ich will es vielleicht noch auf meiner eigene Website hochladen. Da gibt es auch sehr viele Möglichkeiten, aber auf alle Fälle, wir haben irgendwie gemerkt, dass es richtig ist, wenn man das richtig machen will, relativ viel, was man tun kann oder sollte. Wenn man das quasi mit dieser Software hat, Entwicklung versucht, richtig zu machen und auch viel Potenzial für Fehler. Ja und die Frage ist, was kann ich davon wie eigentlich alles voll automatisiert? Kommen wir erstmal zu dem, ich sag mal äußeren Werkzeugkasten, was brauche ich eigentlich damit um gute Software offen und dezentral zu entwickeln. Erstes Thema geht und Forture. Im Wesentlichen meiner Versionsverwaltung, wo ich eben die Software drin habe und ein Hosting dafür. Heute geht es im Forture, das ist eine selbst gehostete Software Entwicklungsplattform, dann fork von Githier und hat eigentlich so alle wichtigen Features, die man so braucht, rund um Diskitripository, also um den Rhein und Quellcode herum. Es hat natürlich das Repository, es kann Pro-Wequests, es kann Issues, es kann diese Action, so was das ist, kommen wir gleich dazu und es hat eine Package und Container-Wedges-Twee, also die Release, die wir eben gebaut haben, die kann nicht auch da hochladen und veröffentlichen. So, jetzt denken viele von euch, die das vielleicht noch nicht so gut können, das ist doch eigentlich so was das Github macht. Ja, habe ich auch lange Zeit genutzt, also irgendwie bis vor ungefähr einem Jahr war das Meiste von mir primär auf Github, was genau das kann. So und das Problem ist jetzt, wir wollen ja offen und dezentral entwickelt, ich hatte vor einem Jahr für mich so ein bisschen der Kenntnis, das ist so irgendwie nicht mehr weiter geht, Github hat irgendwie viel EIMs und so weiter überall gepuscht. Mit Microsoft als Eigentymer hat mal gemerkt, das ist schon politisch so ein bisschen schwierig und natürlich wie immer auch irgendwie die Abhängigkeiten reduzieren. Das heißt, ich habe irgendwie angefangen Schritt weiß in meine Repository zu migrieren, von Github weg. Problem ist natürlich da, wo migriere ich sie hin, welche Instanz ich kann jetzt in meinem Keller so ein Fortschuhhorsten, da hat aber niemand andere ist Accounts drauf, das heißt ich habe erst mal einen fehlenden Netzwerkeffekt. Fortschuh selbst, plant für der Ration, also quasi die Kommunikation zwischen verschiedenen selbst gehorsteten Instanzen zu ermöglichen, das ist aber alles lange noch nicht fertig, sondern eher so in der in der Designphase aktuell. Es gibt Codeburg, das ist die ja vermutlich größte Fortschuh Instanz, die wird vom deutschen Codeburg EV betrieben, das ist übrigens auch die Legal entity, die quasi die Fortschuhentwicklung primär treibt. Ja und primär eben für Fortsprojekte gedacht, also OpenSourceProjekte, nicht offene Software wird ungehren gesehen, so wenn man im privaten Rahmen für sich ein kleines Repo da privat hosted ist das in Ordnung, aber alles größere sollte schon fos sein und entsprechend offene Lizenz haben, wird auch von entsprechend vielen Fortslizen genutzt. Also die Anzahlprojekte, die irgendwie so in den letzten ein, zwei Jahren von GitHub auf Codeburg als primäre Plattform umgezogen ist, ist schon relativ hohes und es gibt auch so Migrationsassistenten, um eben diesen Umstieg relativ einfach zu machen. Also einfach nur dieses Repostatory mit ich, das ist ein Progequest umziehen ist sehr simpel. Ja, wie geht's dann weiter? Erst mal, meine Appell an euch, wenn ihr offene Software entwickelt und das noch nicht tut, nutzt dezentrale Uncommunity-Baseter-Alternativen. Es muss nicht Codeburg sein, das wäre natürlich eh blöd, wenn dann alle wieder auf der selben Instanz von Fortschulanten vielleicht hat euer Hex-Basener eine Fortschulinstanz auf dir eurer Software erhusten könnt, irgendwann eine andere Organisation Community etc. nutzt das, guckt welche Möglichkeiten habt ihr hier quasi in die Community zu gehen mit eurer Software und das entsprechend zu nutzen. Vielleicht mal kurzes Meinungs- oder Stimmungsbild, wer von euch hat denn so als primäre Entwicklungsplattform Codeburg oder irgendeine andere Fortschulinstanz schon? Na okay, das sind jetzt ja nicht, also viele, wer traut sich zu sagen noch noch auf GitHub zu hängen? Na ja, das sind noch ein paar mehr schön, dass ihr hier seid. Ich motiviere oder möchte euch motivieren, das nachher mal anzugucken und vielleicht heute Abend oder die nächsten Tage mal gucken, ob es net mit Codeburg anders oder besser geht oder ob er bei euch im Keller, netten Instanz hohsten könnt oder ob der lokale Hex-Basener etwas macht etc. Ja, bezahm mal so ein bisschen Werk zu euch. Also wir haben jetzt quasi die Rahmenbedingung über die Reposhorsten. Weiter geht es mit der Continuous Integration, weil irgendwie automatisiert ist davon noch nix. Was macht eigentlich Continuous Integration? Die führt automatisch Jobs aus, zum Beispiel in Intervallen oder wenn jemand was purcht, also so ein Pull-Request aufmacht, ihr irgendwie ohne Pull-Request direkt eine Änderung purcht, führt das einfach irgendein Job aus. Typischerweise sind das eben diese Bilds, die Tests oder auch irgendwelche Deployments. Genau und so Pull-Requests insbesondere können auch abhängig vom Erfolg dieser Pipeline sein. Also irgendjemand, der mit denen ihr vielleicht auch noch gar nicht kennt, der eure Software nutzt, toll findet und da was gerne dran ändern würde, weil ihr irgendein Back gefunden hat oder einen Feature-Bout. Ich lege einen Pull-Request-Nehenderung vor und dann wird quasi mit dieser Pipeline automatisch geprüft passt es. Sind die Qualitätsrittehen, die ihr quasi definiert habt in den Pipeline sehr füllt und ihr könnt den Pull-Request eerst mögen, wenn der so weit ist. Könnt ihr auch natürlich für Kontrolle von euch selbst so mehr oder weniger benutzen, um quasi eure eigenen Ansprüche hochzuhalten. Ja, bei GitHub ist es relativ easy. Es gibt quasi GitHub-Aktions, die die Wanna, also die, ich sag mal, Computer-Shorsten auf denen diese Jobs ausgeführt werden werden von GitHub gestellt. Bei Fortshow ist es so, Fortshow-Aktions gibt es quasi auch, die Synthax ist sehr, sehr ähnlich zu GitHub. Es ist explizit nicht dieselbe, aber wer GitHub-Aktionskennt wird sich da wohlfühlen. Code-Burk stellt beispielsweise Community-Wanna bereit, die so, ich sag mal, nach einem fair Use-prinzip best effort, ein bisschen Ressourcen bereitstellen, eigene Wanna ins Besonder für intensive rechnen Aufgaben, also irgendwelche größeren Container-Bills, etc. Sind aber empfehlenswert. Genau, man kann so Wanna entweder für ein Einzel- und das Repository für sein geholen Blätter Nutzer-Account oder sogar für den komplette Instanz zur Verfügung stellen, um dann einfach allen Repository-Siedertrinnen legen, Exzels auf diese Ressourcen zu geben. Bei mir war es so, als ich das Mikriertab einzelne Anpassung gerade in Bezug auf ich nutze jetzt meine eigenen Wannern, war nötig. Es war aber auch vor allen Dingen eine sehr, sehr gute Möglichkeit, den ganzen Kram mal aufzuräumen. Als ich meine Projekte angefasst habe von GitHub zu Fortschuh, größeren Heiz zu Codeburg und da entsprechend einmal aufräumen. Wie sieht so ein Fortschuh-Wanna aus, es ist eigentlich relativ simpel. Wenn ich schon mal eine Stuksoft für mit Portman oder Docker oder so gehostet habe, geht das relativ einfach. Ihr packt einfach die Fortschuh-Wanna-Software auf irgendeinen Linux-System, ihr packt eine Container-Wann-Time, daneben und dann läuft das. Ich habe einfach bei mir in zwei Broxmoxen, sonst nicht jeweils eine VM, da die stellen diese Wanna bereit, sieht dann so aus wie man hier unten sieht und der Wanna hat dann noch entsprechende Text mit den quasi ausgewählt werden kann. Was hier interessantes zu sehen, ich habe hier noch die Architektur des Wanners, in dem Fall AMD 64 drin, es gibt auch noch ein AMD 64 statt AMD 64, Wanna behalte das mal für später in der Hinterkopf, das wird noch interessant für den Container bauen. Man kann so Wanna auch in einem IPv6-Only-Cube-Nethis betreiben, wer von euch betreibt IPv6-Only-Infrastruktur zufällig oder sehr viel IPv6-Lastige? Ja zwei Leute, okay. Ich sage mal so, es ist kompliziert, das ist so ein Fall von Scheinbarweich, die erste Person, die das mal versucht hat, gibt jetzt Docker dazu, also das ist natürlich nicht mehr so ganz easy, aber so, wenn ihr ein normales Tool-Stacksetabt habt, tut das, Docker in Docker in Kubernetes ist etwas spannender, aber das soll nicht das Hauptthema dieses Talks heute sein. Genau, aber jetzt haben wir quasi die Möglichkeit zu automatisieren, wir packen einfach alles irgendwie in die CI und ich kann tatsächlich sagen, das ist ganz schön schlimm, wenn man sich zu lange mit der CI beschäftigt, sieht irgendwann jedes Problem aus, als ob es doch immer so einer CI-Pieplein gut gelöst werden könnte. Was dann wirst du aufnest, die IP-Pieplein ist nicht das beste Tool für alles, aber für Software Entwicklung in der Regel schon. Qualitätssicherung ist relativ simpel, ich mache diese Pipeline auf, ich installiere die nötigen Tools, beziehungsweise habe sich uninstalliert, indem ich einen entsprechenden Container verwende, führt dann einmal auf dem Repository, was in der CI-Cub-Geglohn, das irgendwie ein Pilot, einen Flight 8 und Waffe, etc., ein Pilot-Hest aus, fertig. Interessanter wird es beim Dependencies-Managen. Da benutzt sich Renewade, Renewade ist im Prinzip ein Tool, was dafür wirklich gedacht ist, von allen möglichen, also quasi wirklich allen Artenabhängigkeiten, die man sich auch nur ausdenken kann, ja, Dependencies zu managen und zu aktualisieren. Das funktioniert so, dass Renewade erst mal Exis auf euer Repository oder vielleicht auch eure ganze Organisation kommt, das heißt, ihr werft dann IP-Kirain und gibt dem qual erlaubt, dem jetzt mit euerem Gez zu arbeiten. Das Konzept von Renewade ist, dass es im Prinzip ein Kommando ist und es lässt man einfach regelmäßig laufen. Ich habe es bei mir stündlich laufen und da ist ein bisschen das Problem beachtet, die Rätel mit, das Ding macht ganz schön viel im Hintergrund, wird es einmal durchläuft. Ich habe es durch auch schon geschafft, das Code-Burk-Meinte, so jetzt erst mal keine Vecuest mehr von dieser IP, das waren jetzt zu viele, als ich mit dem Renewade viel experimentiert habe, aber so stündlich laufen lassen, das jetzt für mich gerade eine ganz gut funktioniert, Mittelweg. Was macht dieses Venomwetten am Ende eigentlich? Venomwett guckt in eure Repositories rein und erkennt alle möglichen Abhängigkeiten. Als Beispiel Docker in einem Dockerfile erkennt, das welche Container werden genutzt. Die Währsysteme von Puypen Abhängigkeiten, also Puyproject Tommel oder einen Requirements TXT, da erkennt es Abhängigkeiten drin. So eine NPM Package Chasing, Kannospasen, es merkt, wenn ihr Gits App-Motules habt und erkennt dieser Es-Abhängigkeiten. Ihr könnt da krass im Abhängigkeiten definieren, wenn es quasi nix fertig ist für Gibt. Und es geht dann hin und guckt, gibt es eine neue Version davon. Und wenn ja erstellt es einen Puy-Request mit dem Update gegebenenfalls, kann es das dann auch automatisch mürchen und hat sehr sehr unverreichliche Konfigurationsmöglichkeiten. Ja, passt erst mal. Jetzt habe ich einen Haufen Puy-Request, du könntest in diesem Repository mal das aktualisieren. Das eskaliert dann sehr schnell. Ich habe hier dann das schöne Problem, ich muss mal kurz gucken, dass ich mit der Maus hin kommen, dass ich irgendwie so ganz hin ein Elbein-Image habe, das erkennt Renewade wird in einem Image, was ich bau. Also in einem Docker-Image in dem Fall genutzt, will das aktualisieren, dann gibt es von diesem Docker-Image hier ein neues. Dann gibt es davon abgeleitetes Docker-Image, dann erkennt Renewade, dass ich in irgendeinem CI-Job von mir, in irgendeinem Repository, dieses UV-Image in dem Beispiel nutze, aktualisiert das und erst dann habe ich quasi meinen tatsächlich ein CI-Job und so weiter. Also ihr merkt schon, da kommt eine relativ schnell interessante, mehr stufige Abhängigkeiten, wenn man das wirklich alles selbst macht, mit dem aktualisieren und so weiter. Die positive Seite ist, wenn es einmal funktioniert, man kann relativ ruhig schlafen, dass man mehr oder weniger automatisch wirklich alle Security-Patches und so weiter an der Stelle mitbekommen. Gut, wir sind jetzt in der Lage alle unsere Dependencies wirklich automatisch aktuell zu halten. Jetzt haben wir Änderungen gemacht, jetzt wollen wir das irgendwie bauen und releasing. Hatten wir eben schon mal so ein UV-Bild, UV-Pub lich eigentlich fertig, was ich jetzt noch machen wollte, ich wie ja quasi alles Git im Git haben und automatisiert haben. Deswegen will ich meine Versionsnummer nur in diese Gitex reinschreiben. Heißt ich brauche noch irgendeine Möglichkeit, dass mein ganzes Bildsystem, mein ganzes Pfeifen, das mitbekommen. Da gibt es dieses Hatch VCS-Plaggen für das Bild in Woyament, was quasi aus der Git-Umgebung rausließt und sich zusammenbaut, welche Versionsnummer die aktuelle ist. Damit ist es dann sogar möglich relativ, was das relativ voll automatisiert, vorläufige Änderungen, die jetzt zum Beispiel auf dem Main branch gepuscht sind, aber noch kein Git-Teck bekommen haben. Schon mal vorab zu releasing. Hier sieht man schon auf Piper diese vorab veröffentlichen Umgebung, das ist zum Ausprobieren und so weiter super. Einfach packt, schreibt den in der Film dran oder wie auch immer ihr es konfiguriert, geht dann alles. Also mit diesen Tulegen ist es dann auch relativ simpel diesen ganzen, ja, Publich und Bild, Bildprozess wirklich weg zu automatisieren, ihr müsst nie mehr behand ein UV-Publich oder ein anderes command ein-tippen, wenn diese Pipeline einmal läuft. Neben Effekt ist natürlich, dass er vielleicht ein paar testpublich ist, braucht bis diese Pipeline tatsächlich läuft, aber das gehört hier natürlich bei einem dazu. So, wir haben jetzt Pfeifenprojekte gebaut und veröffentlicht, bauen wir Container und veröffentlichen sie. Da unterscheidig in so zwei verschiedene Gruppen einmal die Bildkontene, das ist ein bisschen das, was wir eben schon gesehen haben. Das sind quasi Container, die ich baue, die Sörtparty Software, also nicht meine eigene Software beinhalten, um sie an anderer Stelle weiter zu nutzen, beispielsweise in einem anderen Zeeidejob. Also wir haben eben dieses UV-Bild und UV-Publich gesehen. Dieses UV-Bild und dieses UV-Publich muss natürlich in einem Container laufen, indem UV vorhanden ist. Das heißt, ich brauche irgendwie dann Container, wo UV drin ist. Diese so Container baue ich zu großen Teilen selbst, weil ich irgendwie immer festgestellt habe. Früher oder später hatten wir dann da was drin gefällt und dann war es einfach eine eigene Definition, zu haben, wo ich irgendwie noch ein Paket mit dazu installieren habe. Und in jedem Warn, also bei jedem Release, das Paket einmal neu zu installieren, frisst halt auch einfach Zeit, wenn ich direkt ins Container im Menschen mit einbacken könnte. Genau. Und um das zu machen, habe ich eine Repostatory für alle Container, die ich quasi so als Bildumgebung habe und habe da drin dann quasi die verschiedenste Container Definition geparkt und einvoller Pro Container und auch das wird per Renno Welt alles aktuell gehalten. Genau, dann natürlich die Software Release, also in, ich glaube, ein oder zwei Fällen, Release, ich meine Software auch als Container und da wird natürlich genauso wie eben das Pfeifenpaket auch Container mitgebaut oder sollte mitgebaut werden. Genau. Aber wie definier ich so ein Container, so grundsätzlich ist es so, Docker arbeitet in Lairn, also jeder Schritt, jeder Definition-Step ist ein Lair und ich will so wenig Lairn wie möglich und so viele wie nötig haben. Eins Crypt, was am Ende alles installiert und die Paketversion, die dann von diesem Script installiert werden, müssen von Renno Welt gemanaged werden, also die sind quasi gepinnt. Renno Welt aktualisiert das Ganze und ja, im dem Fall, wenn Renno Welt was findet, das aktualisiert wird, baut es halt den Container einmal neu und dann läuft die Kette los, die wir eben gesehen haben, dass dann natürlich auch jede Nutzung von dem Container in irgendeinem andere Repo natürlich auch ausgethorcht wird, weil ich will den neuen Container natürlich haben. Wie schaut so was aus? Ich habe hier mal einen Beispiel Container fall, das ist hier neben Fall ganz, ganz simple. Ich nutze hier das A-Pine Standard Image, also in dem Fall gerade die 3323, hinten gepinnt auf einer spezifische Version, wie so gepinnt einmal Renno Welt hat das eigentlich ganz gerne, man kann es auch ausschalten und es stellt halt sicher, wenn es von diesem Image ein neuen Bild gibt, kriege ich das mit und baut es definitiv neu. So und dann mounte ich mir hier noch so ein Installerscript rein und für das einmal aus und das installiert mich hier alle Pakete, die ich eigentlich gerne hätte. Wie sieht das ein Installerscript aus? In dem Fall ist es A-Pine. Ich füge hier ein paar Pakete hinzutie ich für die ich mir ein Environment oder Variablen aus dieser Env-Esser geladen habe und Pinnet die mit diesem Ist-Layer-Version eben auf eine bestimmte Version. Das heißt, es installiert mir nur genau diese neue Version, die ich hier übergebe. Und diesen Trick verwende ich, um hier quasi genau die Definition der Pakete, die ich in diesem Container haben will, ja zu definieren. Mit diesem ganzen Hechtack RennoWade, Data Source, Apology, Gebirge Zeug und so weiter, hier oben drüber sage ich quasi RennoWade. Es soll mir hier in den nächste Zeile bitte die Version reinschreiben von dem Paket. Warte, Nolchers im Repository A-Pine 323. Das kann ich genauso auch für D-Bian und Co-Bound. So und in dem Moment, wo jemand in A-Pine 323 eine neue Version, ein neuen Bild von Nolchers veröffentlicht, läuft RennoWade los, weil es hat das hier als Apiglichkeit erkannt und schlägt mir vor in einem Puy-Request in dieser Datei hier die Nordche-S-Version 1 hochzuziehen. Das kann ich dann entweder automatisch oder behand ableinen, je nach dem wie es konfiguriert hat. Und in dem Moment, wo das passiert, kriege ich dann am Ende, wenn alles geklappt hat, hoffentlich einen neuen Container raus, der dann die aktuelle Version hält. Und dadurch, dass ich das alles pünme, bin ich quasi relativ auf der sicheren Seite, dass ich wirklich dann genau weiß, was es drin und genau weiß, so bald was neues, wie ließ das Baue ich es auch wirklich neu oder baue es aber gleichzeitig nicht unnötig neu. Genau, Lösung wäre natürlich regelmäßig neu bauen, aber irgendwie, wenn ich jeden Container einmal pro Nacht neu bau, dann produzieren hoffen Container-Versionen, wo sich eigentlich nichts gändert hat. Wir erinnern uns an die Kette eben, das macht nicht so richtig viel Spaß. Ich will eigentlich nur dann eine neue Container-Version, wenn ich es wirklich brauche. Meine Lösung, das ist schon ein bisschen, muss man sich reindicken. Ich habe mir quasi gespeichert von der Container-Definition den G-Tech, wenn ich ihn das letzte Mal erfolgreich gebaut habe. So ein Containerbild kann ja auch schiefgehen und dann will ich es gerne noch mal versuchen. Das heißt, ich lasse diesen Shop einfach bei Änderung und jedes regelmäßig irgendwie, ich glaube alle sechs Stunden laufen. Koke, hat sich seit dem letzten erfolgreichen Bild dieses Containers etwas verändert, wenn ja, beobere ich einmal alles neu und publiche es neu, wenn nein, es gibt nichts einfach komplett. Genau, bei Bedarf-Endert-Wennung, wo wir etwas an den Files, das heißt, ich merke anhand des G-Techs von der letzten Änderung, okay, da hat sich was geändert und meinen Container-Definition einmal neu bauen. Ich habe einen neuen Container fertig. Anderer Teilaspekte, ich will Course-Arty-Tech-Tchabbles vermeiden. Das geht alles. Daorde nur ewig lang. Also, wenn ich irgendwie auf einem AMD 64-Gerät versuche, eine volle Latix-Distribution in deinem DB an Image zu installieren und das Ganze für AMD 64-Gerät-Fans mit Course-Bild ist, dass dem durch aus mal ein, zwei Stunden beschäftigt, je nachdem wie stark der Wander ist. Deswegen will ich mehrere Wander haben, die Welt ist dann ihre Native-Architektur bauen. So schaut das Ganze dann aus. Ich habe hier oben ein Primester, der guckt erst mal, wo bin ich gerade, hat sich was geändert und wenn ja, in dem Beispiel hier Änderungen in Container 1 und 2, Skatial der entsprechende Jobs und sagt hier einmal Bau container 1 als AMD 64 und als ARM 64 neu und dann habe ich am Ende noch quasi ein Job, der das zusammenfasst, ein gemeinsames Container im Instraussbau veröffentlicht und dann auch noch den aktuellen Stand setzt. Wir gucken uns das ganz einmal kurz im Repostitorian, wenn ich den Link finde. So sah das hier dann auch, das heißt ich hatte hier so einen Renewade, ja geöffneten Pull-Quest, der hier gesagt hat, okay, es gibt ein neues Erklauen, da sieht man dann auch hier die einzige Änderung war diese Umgebungsvariable und dann liefen hier unten die Jobs los und haben hier unten, okay. Vor für Effekt, die Jobs sehe ich nicht mehr, also normalerweise hätte es hier dann die Jobs gegeben, die halt genau diesen einen Container und zwar den Erklauen Container hier einmal neu gebaut hätten, weil gibt ja eine neue Definition. So, das war's eigentlich schon. Gut, wir können jetzt Container bauen. Nächster Schritt, Change Locks bauen und Releaseen, gibt's natürlich auch ein Tool für, gibt Liftingen, nennt sich das Ganze. Voraussetzung ist ein bisschen, dass man sauber gekomitzt hat, also Koventienerkommitzen, das erkennt man mit diesen Feature oder Ficks oder Ähnlichen Präfixen, die dann halt genau beschreiben, welche Sorte Kovent ist es eigentlich und Git-Lift ließ das dann einfach aus, seit dem letzten Release und Baute in irgendwie so ein Change Lock zusammen und man ausschnitt, wie das aussehen kann, wo dann je nachdem, was ihr in dieses Template von Git-Lift reinschreibt, irgendwie ein schöner Text zusammengebaut wird, bei Bedarf kann euch Git-Lift auch quasi berechnen, anhand der Änderung, ja, weil was es gibt. So schaut das Ganze dann aus in der Pipeline eigentlich relativ simpel. Ich lasse mir einmal den, also in dem Fall, wenn ich einen Release habe, lasse ich mir einmal den Change Lock als Note-Sam-D-Bauen und lasse ihn dann ins Forture als Release hoch fertig, habe ich in meiner Entwicklung zum Gebung einen schönen fertigen Release-Nord, der Nutzerweist direkt, was hat sich geändert. Muss ich das alles jetzt behandlegen, diese ganzen Eiffalls, die wir eben gesehen haben, natürlich nicht. Hier gibt es dann das sogenannte boilerplate management mit Kopier. Ich hoffe es werden nicht so viel Abstrakshons eben, denn das sind am Ende tatsächlich einige. Wenn man sich einfach reingedacht hat, spart es tatsächlich, aber natürlich sehr viel Arbeit. Kopierbild bietet im Prinzip die Möglichkeit, so ein Template repository zu bauen, da China Templating drin machen zu können. Ich will da jetzt nicht zutief drauf einsteigen und vor allen Dingen auch nachdreckliche Änderungen aus den Template in das daraus abgeleiteten repository zu ziehen. Heißt ihr habt ihr links einen Template, da habt ihr quasi die ganzen Vorlagen. Also da habt ihr noch Renovate-Config als Vorlage drin, ihr habt irgendwie einen Publichjob drin und dieses Containerfall. Ja, es gibt wirklich China mit der Teilnahme des Containerfalls in dem Fall. Und dann macht den Projekt auf und aus diesem Projekt, die dieses Projekt instantiiert, dann quasi das Template. Und das Schöne ist an der Stelle. Also wir könnten natürlich in eurem Projekt alle möglichen weiteren Fallzinsufügen. Und das Schöne ist, wenn ihr an dem Template was ändert, kann euch Renovate in dem Projekt quasi die Änderungen, die am Template passiert, sind wieder nachziehen. Das heißt ihr bleibt auch wirklich aktuell, wenn ihr irgendwas neues einbauen wollt, macht ihr das einmal im Template und es kriegen alle Projekte von euch, die aus diesem Template generiert werden. Genau. Ich zeige einmal schnell, wie das in der Praxis aussieht. Ich mache mal ein bisschen größer. Ich habe hier jetzt einmal so ein ordner als Testrepo angelegt. So um damit anzufangen, sage ich einfach, kopi hier, kopi, gibt die URL an zu mir. Ich dann stellt es mir ein paar Fragen, sagen wir mal, wir nehmen das mal GLT26, diese ganzen Fragen, können die alle frei konfigurieren. Je nachdem wir es wollte, das ist dann das, was quasi im Templating landet. Ich will jetzt in dem Fall einfach mal die ganzen Shacks ignorieren, weil ich bin faul und das funktioniert eh noch nicht. Ich will nichts poplichen. Ich will in dem Fall auch mal nichts zu fortschaubeließen. Die URL ist kippig mal den Coach, meistens als LCHS RZ. Ein Android-Point, na ja, gut akzeptieren wir den für jetzt. Das wäre, wir würden natürlich in der Realität anders aussehen. Ich will ja auch kein Container bauen, zackfertig. Da hat mir hier einen Haufen Files angelegt. Die ganzen Workflows, die ich habe, also einen Publik, Workflow und Lin-Floon und Kommentlentworkflow. Ich habe noch eine Winnowate-Config darin rumliegen. Und ich habe schon mal eine erste Pieper-Projektommel, die quasi mein Piefenprojekt definiert und so weiter. Und jetzt bin ich eigentlich schon von meinem ganzen boilerplate, also so von meinem ganzen Tulling relativ weit und habe nur noch eine Stelle, und die ich es ändert muss, nehme ich dieses Template-Repository. Gut, wir wissen jetzt, wie wir das mit dem Templating geht. Schau mal mal weiter. Copy here, Renewate und Automotions. Das ist dann ein schöner Thema, weil wir wollen natürlich dieses Template auch oder die Instanz-Destamplettes aktuell haben, gleichzeitig aber in unserem Template, die darin genutsten Abhängigkeiten, zum Beispiel die Container von eben, wir erinnern uns gerade in diesen UV-Container, aktualisieren, wenn das der Fall ist. Das heißt, ich habe jetzt hier irgendwie jeder, dem ich mir zählt, zwei bis drei Schichten, die ich habe. So ein Problem ist, wo die Penden siehst, also zum Beispiel so Container ändern sich. Code Work hält insbesondere auch keine alten Image vor. Das heißt, ich bin quasi darauf angewesen, wenn ich dieses Digest-Pending mache, was ich brauche, um immer aktuell zu sein, aber auch wirklich dann, den aktuellen Container zu nutzen. Wenn Renewate jetzt gleichzeitig das Perund, also das Template und das daraus abgeleitete Repo aktualisieren, würde hätte ich Konflikte, weil dann hätte ich was aus dem Template abgeleitet und gleichzeitig hätte das Renewate direkt überschrieben. Das heißt, ich muss das irgendwie verketten. Das ist relativ tricky. Ich bin da auch noch nicht so ganz am Ziel. Meine aktuelle Lösungen sieht so ein bisschen so aus. Ich habe hier quasi in meinem, das ist die Diversionierung von meinem Template-Repo. Wenn ich ein Dependency-Update mache, gibt es ein Patch oder soll es ein Patch-Release geben. Und wenn ich ein neues Feature oder irgendwas größer was ich mir definitiv per Hand angucken muss, würde es halt irgendwie eine neue Meinung release oder so. Und die Idee ist dann, dass Renewate die Aktualisierung aus diesem Template, also aus diesem Kapierepo, wenn es nur ein Patch ist, also nur irgendeine Abhängigkeit aktualisiert wurden, es automatisch zieht und alles andere, also sprung 0.1.0.0.1.1 macht es per Hand, macht es automatisch 0.1.0.0.2.0.0. müsste ich mehr per Hand angucken, weil ich da das Risiko habe, dass ich irgendwas kaputt mache. Und es mehr ist einfach nur eine Abhängigkeit ist. Genau, also wird automatisch neu released. Patch-Release kann ich dann automatisch mögen, weil sie quasi unkritisch sind. Die Umsetzung von dem ganzen Kram ist Wirken-Proquests, ob das wirklich die ideale Lösung ist. Ich bin mir nicht sicher. Das ist dann am Ende die Frage, so wie viel händliche Arbeit zu, wie viel Automatismus will ich an der Stelle haben, gerade auch was, wo ich sage mal, reguläre, kleinere Patches von irgendwelchen Containern und der ist oft in den Containern angeht. Genau, die grundsätzliche Ablauf, irgendwas ändert sich am Bilden-Wire-Mand, also zum Beispiel dieses L-Pall Container, was wir eben gesehen haben, kriegt irgendeinen Upstream-Update. Container wird neu gebaut, der Container wird oder der genutzte Container-Version wird in dem Template aktualisiert und dann wird das, was aus dem Template erbt, also den ganzen Schaltreppus entsprechend auch aktualisiert. Ich schau es euch mal an, ob das was für euch ist. Ich kann mir vorstellen, dass es nicht für jeden was ist, ist auf sehr viel Automatismus gebaut, aber halt auch hatten paar Abstreition-Schichten. Gut, kommen wir zu den Use-Cases. Ich wollte mal so ein bisschen zeigen, wo ich das heute gezeigt habe, verwende eben genanntes Bilden-Wire-Mand, wo ich einfach meine ganzen Container quasi drin parke und bauere. Wir haben vor einiger Zeit mal im Entropier-Raben so ein Tool gebaut, was für ein paar piegel-losen Paperless-Workflow, PDFs mit Stückern generiert, das ist ein Pifenziele-Eit-Tool, das hat mittlerweile eben auch vieles von dem Tooling bekommen. Ich habe zwei Prometoystools, auch bei das hier EITool, einmal so ein Tool, was auf commentalienbasis eben Prometoystmetriken aktualisiert, zum Beispiel für Cornchops, einmal ein Tool, was Pakete aus Debian quasi auf Aktualität prüft und dann sagt, du hast so viele Pakete, die aktualisiert werden müssen. Damit kann ich überwachen, hat so was, wie andere Tendet-Upquates funktioniert und so weiter. Ihr Mac schon, meine UseCase, das kommen sehr aus der Innenfrisch-Tout-Tool-Ecke. Irgendwas hat es für die GPN auch mal einen Shepertitool gebraucht, worauf wir irgendwas mit Changu mal schnell zusammengedübert haben, damit wir so ein Shepertitool haben. Auch das hat natürlich ein bisschen was hier draus geärbt. Ja, und das war es eigentlich schon. Es gibt natürlich eine riesige Manüste-Maliste. Ihr werdet das mit Sicherheit kennen. Security Scanning habe ich bisher gar nicht gemacht und natürlich wüsste ich eigentlich gerne automatisiert, nicht nur wenn der Fix released wird, sondern vorher schon. Ich habe dann ein Problem. Ich wollte eigentlich mit Triby anschauen. Das war ungefähr so eine Woche, bevor diese Triby-Supply-Channel-Attack gepassiert ist. Ich habe es erstmal unholfgesetzt. Andere Security Scanning mit zum Beispiel diesem Bandet für Pifen wäre auch sehr gut. Dieses Templating ist auch nicht optimal. Man muss gerade dieses Docker-Kontainer-File-Thema verklemmt sich gerne, weil ich quasi Templating im Datein haben brauche, um dieses Container-File nur anzulegen, wenn man Kindrepo gesagt hat, es hätte gerne ein Container-File. Irgendwie muss ich trotzdem wenn du weht beibringen, dass es im peri- und repo dieses Konzern ist. Containerfile aktualisieren soll, sei bei Bedarf, das ist nicht so nicht easy, es funktioniert auch nicht so richtig stabil. Bei diesen Containerbilds hat man ganz viel Potential, wie man das noch weiterbauen kann. Letzte Woche habe ich jetzt eigentlich mal geschafft zu ein bisschen funktionieren, das Caching zu haben zwischen den verschiedenen Bilds, damit ich nämlich immer alles von vorne mache. Ich habe auch hier noch Probleme, wenn ich quasi so second level dependencies habe, die ich aktualisiere krieg ich das nicht mit, weil ich die quasi nicht auf ihre Version gepinnte habe, das heißt da baue ich dann nicht automatisch neu und ja die Pipelines bräuchte ich eigentlich auch, da die guten Pipelines bräuchte ich eigentlich auch an anderen Stellen und habe sie im Moment nur in diesem Bild in Wireman. Debian Packaging könnte man auch mal lösen, ich habe bisher auch noch nicht die Zeit gefunden und kann noch keinen Weg gefunden, die ganzen Pipempakete wirklich sauber geht basierend als Debianpaket zu releaseden, was eigentlich mal ein nice to half wäre und natürlich das das allgemeine mehr software bauen. Also ich habe auch da so ein bisschen eine to-do-liste, so ich hätte zum Beispiel gerne automatisierte Firewall Regeln auf Basis der Netbox API, das ist im Moment noch nicht so richtig schön gelöst, weil da noch noch ein Layer Config Management dazu hängt und da kann man natürlich, ich glaube die Liste kann jeder hat mit nur endlich lange fortsetzen, was man noch irgendwie besser automatisieren könnte. Ja, ich würde gerne mit einem Zitat aus RFC mit 1925, der 12 Networking Tools schließen, jetzt easier to move a problem around, denn es ist zu solviert und jetzt always possible to add another layer of interaction. Was soll das sagen, insbesondere für euch, guckt euch an welche Tools euch wirklich helfen, was zu automatisieren, weil es ist auch sehr gut möglich, dass man sich eigentlich nur mit der Automatisierung des Toolings beschäftigt, aber dann gar nicht mehr so viel am Inhalt, dessen Macht für das man das eigentlich baut. Also da muss man immer die Wahl gefunden, wie für Automatisierung brauche ich, wie viel ist es vielleicht besser behand zu machen? Genau. Und damit wäre ich auch am Ende, ich hoffe ich konnte euch ein bisschen motivieren, euch mal die to-do-liste, dass euer Software-Entwicklungsumgebung einen ein-for-to-to-actions und alles, was dahinter steckt an potentiellen Möglichkeiten irgendwie task-so-automatisieren anzuschauen. Ja, vielen Dank. Fragen. Zu stündlichen Renovate auf Ruf gibt es Gründe, das Öfters zu machen, gibt es Gründe, das weniger aufzumachen, ich finde stündlich schon wild eigentlich. Also der Grund, warum ich so häufig mache, ist, dass ich halt diese Getsch-Chain das Problem habe, dass ich's getrennt habe. Also der erste Renovate auf Ruf aktualisiert mein Docker-File, dann habe ich dann nach ein neues Docker-File. Der nächste Renovate auf Ruf macht dann vielleicht ein Auto-March, wenn alles gepasst hat in diesem Pull-Request und der nächste Renovate auf Ruf sagt dann irgendeinem anderen Repository, was dieses Docker-File nutzt oder diesen Container. Hier du hast jetzt einen neuen Container, nutzt den. Und das braucht ja natürlich eine so eine Zeit, bis das durchgelaufen ist, weil bei mir, ich bin da in der Stelle vor, das kommt alles, was der selben Renovate instanzt, die natürlich auch nun, sie Eitschab ist in dem Fall. So und stündlich war jetzt für mich irgendwas, was irgendwie gut funktioniert hat, dass es einerseits nicht ewig braucht, bis es durchkonvergiert ist, aber auch nicht irgendwie alles zu spenden mit zu viel Ressourcen verbrauchen, so weiter. Okay, weitere Fragen? Gut, dann scheinbar, ich sehe gerade keine, dann vielen Dank und viel Spaß beim mit euer Irmergitt, ja, basteln.

Podcast Summary

Key Points:

  1. Der Vortrag motiviert zu dezentraler, offener Softwareentwicklung mit Fokus auf Qualität und geringem Wartungsaufwand.
  2. Zentrale Werkzeuge sind Forgejo (selbstgehostete Git-Plattform) und Continuous Integration (CI) für Automatisierung von Tests, Linting und Dependency-Updates.
  3. Renovate wird als Tool für automatisches Dependency-Management empfohlen, um Sicherheitslücken zu schließen und Abhängigkeiten aktuell zu halten.

Summary:

Der Vortrag „Decentralize and Automate“ plädiert für dezentrale, offene Softwareentwicklung, die durch Automatisierung und Qualitätssicherung nachhaltig und wartungsarm gestaltet wird. Die Sprecherin, Vanessa, betont als Infrastruktur-Expertin die Notwendigkeit von zuverlässigem Code als „Klebstoff“ für moderne Infrastrukturen. Sie kritisiert den unreflektierten Einsatz von LLMs für Codegenerierung und fordert stattdessen ein Verständnis für qualitativ hochwertige Entwicklung.

Als praktische Lösung empfiehlt sie die Migration von zentralen Plattformen wie GitHub zu dezentralen Alternativen wie Forgejo oder Codeberg, um Abhängigkeiten zu reduzieren und Community-basierte Entwicklung zu fördern. Zentral ist die Automatisierung mittels CI-Pipelines, die Linting, Testing und Builds automatisieren, sowie der Einsatz von Renovate zur automatischen Aktualisierung von Abhängigkeiten. Der Vortrag ermutigt Entwickler, diese Tools zu nutzen, um Software robust, sicher und langfristig wartbar zu gestalten.

FAQs

Der Vortrag motiviert zu dezentraler, offener Softwareentwicklung und zeigt, wie man mit Automatisierung und guten Tools hochwertige Software mit geringem Aufwand erstellen kann.

Weil dezentrale, community-basierte Alternativen wie Codeberg mehr Unabhängigkeit von großen Konzernen wie Microsoft bieten und besser zu offener Software passen. Sie fördern zudem die Reduzierung von Abhängigkeiten.

CI automatisiert Jobs wie Builds, Tests und Deployments, insbesondere bei Pull Requests. Es hilft, Qualitätsstandards zu sichern und Änderungen effizient zu prüfen, bevor sie in den Code integriert werden.

Mit Tools wie Renovate, das automatisch Abhängigkeiten aktualisiert und Sicherheitslücken erkennt. Es lässt sich regelmäßig ausführen, z.B. stündlich, um den Code aktuell und sicher zu halten.

Dazu gehören Semantic Versioning für Versionsnummern, das Erstellen von Change-Logs für Nutzer, das Bauen von Paketen (z.B. Docker-Container) und das Hochladen in Registries wie PyPI oder Docker Hub.

Linting analysiert Code auf Fehler und schlechte Patterns, während Tests sicherstellen, dass Änderungen nichts kaputtmachen. Beides verbessert die Codequalität und verhindert Regressionen, besonders bei wachsenden Projekten.

Chat with AI

Loading...

Pro features

Go deeper with this episode

Unlock creator-grade tools that turn any transcript into show notes and subtitle files.