Contact salesFree trial
Blog

Nix erforschen: ein detaillierter Blick auf Open-Source-Beiträge

NixPHPPodcastDrupaloffene QuelleSymfony
Teilen Sie
Dieser Beitrag ist auch auf Englische.

Begeben Sie sich mit Pol Dellaiera in Folge 5 des chmodcasts auf eine unkonventionelle Open-Source-Reise . Es beginnt damit, dass er als Kind jeden Euro spart, um sich seinen ersten Computer zu kaufen... Dann geht es weiter zu Drupal, Symfony und jetzt Nix, wo Pols Beiträge als Maintainer mit Commits-Rechten das Leben von PHP-Entwicklern einfacher denn je machen. Paketmanager, Betriebssystem und sogar funktionale Sprache: Nix kann alles. Lasst uns eintauchen!


Podcast-Transkript

Wir haben ChatGPT verwendet, um die Grammatik und Syntax des Transkripts zu verbessern.

Marine: Ich bin hier auf der SymfonyCon in Brüssel, und bei mir ist Pol. Hallo, Pol.

Pol: Hey, hallo.

Marine: Vielen Dank, dass du dich mir anschließt. Ich bin wirklich aufgeregt, weil ich dich in letzter Minute gefragt habe, sozusagen.

Pol: Ja, in der Tat.

Marine: Aber Sie waren verfügbar und bereit, also freue ich mich sehr darauf, heute mit Ihnen zu sprechen. Kannst du dich zu Beginn kurz vorstellen?

Pol: Was machen Sie denn so? Also, ich bin Pol Dellaiera und ich freue mich auch sehr, hier zu sein. Es ist das erste Mal, dass ich ungefähr 25 Minuten gebraucht habe, um zur SymfonyCon zu kommen.

Marine: Du Glücklicher.

Pol: Ja, und ich habe heute zum ersten Mal ein paar wirklich tolle Leute getroffen. Wir haben zusammen zu Mittag gegessen, und es war ein toller Moment für mich, weil ich endlich Gesichter zu diesen Spitznamen hatte. Und wir können auch Dinge besprechen, die auf GitHub normalerweise etwas heikel sind oder zu lange dauern, um sie in einer Nachricht zu erklären, so dass wir unsere Argumente lebhaft darlegen können. Und das geht so viel besser als auf GitHub. Also, ja, ein großartiger Moment im Moment. Und ich bin froh, hier zu sein. Ich danke Ihnen für die Einladung. Auch wenn es in letzter Minute gemacht wurde, ist es für mich völlig in Ordnung.

Marine: Danke, dass du so flexibel bist. Also ja, was machen Sie? Du sprichst von Beiträgen. Du bist offensichtlich hier, weil du dich mit Open Source beschäftigst.

Pol: Ich bin also ein Open-Source-Mitarbeiter und ich habe meine Zeit in Open Source mit einem Beitrag zu Drupal begonnen, dem CMS Drupal vor Jahrzehnten. Und seit nunmehr vier Jahren habe ich aus irgendeinem Grund aufgehört, Drupal zu benutzen und arbeite jetzt ausschließlich mit Symfony. Ich beschäftige mich nicht mit der Entwicklung von Anwendungen, weil das nicht meine größte Stärke ist und ich das auch nicht gerne mache. Ich konzentriere mich lieber darauf, bestimmte Bibliotheken und Pakete zu erstellen, die ein bestimmtes Problem beheben. Und das ist es, was ich am liebsten tue. Und das ist es auch, was ich bei der Arbeit tue. Und das ist es auch, was ich in meiner Freizeit tue. Und in letzter Zeit, ich kann nicht sagen, dass sich meine Karriere ein wenig verschoben hat, aber im Grunde genommen hat sich meine Freizeit, in der ich mich hauptsächlich mit der PHP-Entwicklung beschäftigt habe, mehr auf die Verwendung von Nix verlagert, was ein Paketmanager ist, ein universeller Paketmanager. Und ich habe eine Menge Spaß mit diesem Tool, das erstaunlich ist. Ich weiß nicht, wie ich es erst vor drei Jahren entdecken konnte. Es wurde vor 20 Jahren veröffentlicht.

Marine: Nein, wirklich? Ich hatte ja keine Ahnung.

Pol: Ja. Und für mich hat es die Art und Weise, wie ich IT sehe und wie ich mir die Zukunft der IT vorstelle, völlig verändert. Das ist der Grund, warum es so umwälzend ist. Und ich bin wirklich froh, dass ich jetzt an dem Projekt mitarbeiten kann. Ich betreue neben anderen Tools auch den PHP-Stack. Ich glaube, ich habe jetzt mehr als 1.000 Commits. Und ich war überrascht, wie offen die Community ist und wie einfach es ist, in das Projekt einzusteigen. Das ist also wirklich eine erstaunliche Entdeckung. Und ich mag es wirklich. Ich wünschte, ich könnte es bei der Arbeit mehr nutzen, aber das ist, sagen wir mal, im Gange. Aber ja.

Marine: Cool. Wow. Du hast bereits eine lange Karriere im Bereich Open Source. Ich möchte über Nix sprechen, natürlich. Aber zuerst frage ich mich, wie du eigentlich zu Open Source gekommen bist. Denn, okay, du hast mit PHP und Drupal angefangen. Wie ist das passiert?

Pol: Das liegt auf der Hand, denn ich habe schon mit 10 Jahren angefangen, mit Computern zu arbeiten. Ich bin jetzt 42, also vor 30 Jahren. Damals hatten wir noch nicht so leicht Computer, und es war teuer, einen Computer zu kaufen. Also musste ich hier und da ein bisschen Geld sparen. Ich erinnere mich, dass ich alle 50er-Stücke gesammelt habe, im Grunde genommen damals einen Euro. Ich erinnere mich, dass ich eine ganze Sammlung dieser Münzen hatte. Und dann kaufte ich mir einen Computer, aber es war ein sehr billiger und natürlich kein großer Computer. Und um die damalige Software auszuführen, war die Software, ja, sie war in Ordnung. Es war Windows, aber ich hatte Freunde, die Linux benutzten, und ich kannte mich mit diesem Zeug nicht aus. Und ich fragte: "Okay, was ist das? Und sie sagten mir: "Wenn du einen Computer hast, der nicht so groß ist, kannst du Linux benutzen. Es verbraucht weniger Ressourcen. Es ist ein anderes Betriebssystem und es ist interessant. Ich bin jemand, der sehr neugierig ist, und ich habe es ausprobiert. Ich habe es mit Red Hat 5 versucht, ich glaube, Red Hat 5.2. Dann bin ich für kurze Zeit auf Debian umgestiegen. Dann bin ich eine lange Zeit auf Slackware umgestiegen. Und dann fast 10 Jahre auf Gentoo, ich glaube 10 Jahre auf Gentoo. Ich bin einen Monat lang kurz auf Debian umgestiegen und dann habe ich NixOS benutzt. Und das ist die Distribution, die ich jetzt jeden Tag benutze, als täglicher Fahrer. Und es ist die beste Distribution, die ich je benutzt habe. Viele Leute sagen, dass Nix nicht bereit für den Desktop ist, aber ich kann Ihnen sagen, dass ich hier bin, um zu sagen, dass das nicht stimmt. Tatsächlich funktioniert es besser als andere Distributionen. Es ist nur so, dass es ein bisschen Zeit braucht, um es richtig einzurichten, weil man eine Datei ändern und dann eine neue Generation des Systems erstellen muss. Und so muss man testen. Und wenn die Konfiguration fertig ist, muss man sie nicht mehr anfassen. Die Aktualisierungen sind nahtlos und ziemlich schnell, und es funktioniert. Es funktioniert immer. Das ist beeindruckend.

Marine: Du hast also damit angefangen, deinen eigenen Computer zu optimieren, weil du schon sehr früh mit Linux in Berührung gekommen bist. Das ist cool. Du hast dich also schon in sehr jungen Jahren für Computer begeistert und dann beschlossen, mit ihnen zu arbeiten. Wie ist das passiert?

Pol: Ja, ich hatte nie das Gefühl, dass ich zuerst arbeiten muss, weil ich das tue, was ich mag. Ich habe Computer schon immer gemocht. Ich weiß nicht, warum. Mir macht es Spaß, mit einem Computer zu arbeiten und Dinge zu tun, die er später bei Bedarf 20.000 Mal machen wird. Und ich habe damit angefangen, Sachen auf dem Computer zu programmieren, und dann wurde es meine Arbeit. Ich habe IT studiert und arbeite jetzt im IT-Bereich als externer Berater bei der Europäischen Kommission hier in Brüssel, fünf Minuten von hier entfernt. Und ja, für mich war es schon immer eine Leidenschaft. Und ich frage mich, wann ich die Nase voll davon haben werde. Ich weiß es nicht.

Die Marine: Aber niemals, hoffe ich.

Pol: Ja, das hoffe ich.

Marine: Wie bist du eigentlich zu Drupal oder PHP gekommen?

Pol: Ich habe mit Drupal angefangen zu arbeiten, weil wir während meines Studiums eine Ecke für die Studenten einrichten wollten, in der sie Informationen und anderes austauschen konnten. Und Drupal schien die perfekte Lösung zu sein. Ich habe dann versucht, eine Website mit Drupal zu erstellen, damals waren es fünf. Und es funktionierte, aber ich konnte nicht verstehen, wie die Leute damit vollständige Websites erstellen konnten. Ich war nur in der Lage, einen einfachen Blog zu erstellen. Und ich dachte mir, wow, wie machen diese Leute das nur? Es sieht so aus, als hätte es eine Menge Power, aber ich kann es im Grunde nicht benutzen oder versuchen, es zu bändigen. Also habe ich einmal, zweimal, dreimal, viermal aufgegeben. Und dann wurde Drupal 6 veröffentlicht. Und dann war Drupal 6 noch besser als 5 und ich habe es noch einmal versucht und endlich verstanden, wie es funktioniert. Ich fing an, den Code zu lernen, um Module zu erstellen, und das war's. Ich war voll dabei und konnte im Grunde jedes Mal, wenn jemand mit mir über eine Webanwendung sprach, in Bezug auf Drupal denken. Oh ja, es gibt ein Modul, das das macht. Ich kann dies für dies verwenden. Ich kann das für das verwenden. Und schon ist die Website fertig. Und ich habe viele solcher Websites erstellt, und sie laufen immer noch. Und meine Module, die ich damals für Drupal 6, 7, 8, 9 und 10 entwickelt habe, werden immer noch verwendet, nur werden sie von anderen Leuten gepflegt. Zum Beispiel ist die Website des belgischen Premierministers, die erste Seite, die Sie sehen, wenn Sie die Website erreichen, ein Modul, das ich aus dem Nichts heraus entwickelt habe, nur weil ich etwas als Proof of Concept ausprobieren wollte. Es wurde in ein Modul für Drupal 6, 7 und 8 umgewandelt und wird auch jetzt noch verwendet. Dies ist eine Sprachauswahlseite, die es Ihnen ermöglicht, Ihre Sprache auszuwählen, wenn zuvor nichts in einem Cookie oder in der URL oder ähnlichem festgelegt wurde. So bin ich also zu Drupal und dann zu PHP gekommen und habe dann in diesem Bereich bei der Europäischen Kommission gearbeitet. So wurde ich eingestellt, weil ich ein Drupal-Entwickler war, und so hat es im Grunde angefangen.

Marine: Ja, das wissen die Leute inzwischen, aber ich bin selbst ein Drupal-Mädchen, also verstehe ich, was du sagst.

Pol: Ja, ich erinnere mich an deinen Vortrag.

Marine: Ja, also mir gefällt wirklich, wohin das führt. Also eine sehr sanfte Entwicklung. Du hattest ein Bedürfnis, du hast eine Website erstellt, du warst frustriert, also hast du die fehlenden Teile erstellt, und dann hast du beschlossen, sie mit allen zu teilen. Und wenn man erst einmal dabei ist, findet man immer etwas Neues, das gebraucht wird, oder? Es gibt mehr als genug Arbeit.

Pol: Ja, in der Tat. In der Tat, das ist es.

Marine: Und wie haben Sie Symfony entdeckt?

Pol: Ich entdeckte Symfony, weil ich mich an den Beitrag auf der Drupal-Website erinnere, in dem es darum ging, die Insel zu verlassen, und in dem es im Grunde darum ging, vorhandene Komponenten zu verwenden, anstatt das Rad in Drupal neu zu erfinden. Damals habe ich das nicht so richtig verstanden, aber jetzt, Jahre später, verstehe ich diese Initiative, die letztendlich eine gute Initiative war, vollkommen. Es gibt keinen Grund, etwas neu zu erfinden, das bereits existiert. Es ist vielleicht besser, es zu verwenden und zu sehen, wie es intern funktioniert, um es für unsere eigenen Bedürfnisse anzupassen. Und das ist der Grund, warum Symfony höchstwahrscheinlich Komponenten herstellt, die im Grunde so flexibel sind, dass sie überall anders verwendet werden können. So habe ich also Symfony entdeckt, und damit hat es angefangen. Ich bin kein großer Mitwirkender von

Symfony. Ich habe schon zu kleinen Dingen hier und da beigetragen, und ich benutze Symfony nicht sehr oft. Ich benutze es nur, um Bundles zu erstellen, und dazu muss ich nicht tiefer in den Code eindringen, weil ich meine eigene Logik in die Bundles implementiere. Normalerweise erstelle ich eine Bibliothek, die völlig unabhängig von Frameworks ist, so dass sie auf jedem Framework funktionieren kann, ob Drupal, Laravel oder Symfony und so weiter. Und dann erstelle ich das Bundle, das um diese Bibliothek herum aufgebaut ist. Das machen wir auch bei der Arbeit. Die Sachen, die wir machen, die übrigens Open Source sind, können also von jedem verwendet und wiederverwendet und an jedes Framework angepasst werden.

Marine: Und was ist mit Nix? Sie erwähnten ja, dass es vor 20 Jahren veröffentlicht wurde. Ich hatte keine Ahnung davon. Deshalb bin ich sehr neugierig, denn können Sie mir erklären, was es ist? Ich habe es erst vor kurzem entdeckt, und es ist faszinierend.

Pol: Um es für die Leute, die zuhören, einfach auszudrücken, würde ich Nix als einen Paketmanager beschreiben, einen universellen Paketmanager, der nahtlos auf die gleiche Weise auf jeder Linux-Distribution arbeiten kann, einschließlich macOS. Das ist schön, weil es die gleiche Kommandozeile ist, die Sie auf jeder Linux-Distribution und macOS verwenden werden. Das ist also schon ein großes Plus. Dann kann es auch als Builder betrachtet werden, so wie ein makefile Make-Befehle verwendet, wie ein taskfile Tasks verwendet, so wie es normalerweise für ein Rust-Projekt der Fall ist. Auch Nix ist eigentlich genau dasselbe. Es ist ein Werkzeug, mit dem man Software bauen kann, Dinge bauen kann, und so sehe ich es normalerweise. So sehe ich es auch selbst. Hinzu kommt, dass Nix für viele Leute etwas komplex ist, weil es mehrere Dinge verkörpert, eine Sprache, eine Programmiersprache, die funktional ist. Nix ist also eine Programmiersprache. Nix ist ein Entwicklungswerkzeug. Nix ist ein Builder. Nix ist ein Paketmanager. Nix ist ein Konfigurationsmanager. Es ist also eine Menge Dinge zur gleichen Zeit. Wenn ich also Nix mache, okay, was machst du dann?

Marine: Ganz genau.

Pol: Und auf meiner Seite, was ich mit Nix mache, ich benutze es als Builder. Ich verwende es als Konfigurationsmanager, und das ist beides, als Deployment-Tool. Ja, das stimmt. Ich benutze es wie einen Paketmanager. Ja, fast alle Punkte. Das ist es, was ich mit Nix mache. Aber ja, wenn ich ein einfacher Benutzer geblieben wäre, hätte ich es als einfachen Paketmanager benutzt. Aber da ich jetzt einer der PHP-Maintainer von Nix bin, benutze ich es auf eine technischere Art und Weise und lerne immer noch dazu. Manchmal mache ich auch noch dumme Sachen. Aber für mich ist es kein Problem, dumme Dinge zu tun, weil ich der Meinung bin, dass Fehler machen der beste Weg ist, um zu lernen.

Marine: Oh, das wollte ich auch gerade sagen. Ganz genau.

Pol: Also ist es für mich in Ordnung. Sie haben einen Fehler gemacht. Okay, tut mir leid. Ich werde ihn beheben. Aber ich muss lernen, was dort passiert. Und das ist es. So hat es angefangen. Aber ja, nein, das ist es, was Nix ist. Und wie es jetzt angefangen hat, hat es wegen der Arbeit angefangen. Denn auf der Arbeit benutzen wir Windows-Maschinen, Linux-Maschinen und Amazon-Maschinen. Und es gibt keine Möglichkeit, unsere Entwicklungsumgebungen anzugleichen. Also benutzen alle Leute ihren eigenen Laptop, den Laptop der Kommission, Windows, Linux, einer benutzt Debian, der andere Ubuntu, der andere Red Hat. Wie können wir also sicherstellen, dass wir alle die gleichen Tools verwenden? Wie können wir sicherstellen, dass eine Anwendung, die auf einem beliebigen Betriebssystem läuft, auch funktioniert? Und es gibt nichts, was das im Moment beheben könnte. Und ja, natürlich gibt es Initiativen, die versuchen, das Problem mit Docker zu lösen. Und wir müssen zugeben, dass die Verwendung von Docker eine Menge Probleme gelöst hat, aber es ist nicht das Beste. Ich weiß nicht, ob Sie jemals versucht haben, mit Docker zu entwickeln. Aber ich mag es nicht, mit Containern zu arbeiten. Für mich ist das zu langsam. Es fügt der Arbeit von Entwicklern Zwänge hinzu. Und ich bin extrem faul. Deshalb müssen die Dinge für mich einfach, zugänglich und dokumentiert sein. Und Docker war das nicht. Zumindest ist das mein Gefühl. Und es gibt einige andere Initiativen, die Ansible verwenden. Aber darüber werde ich nicht sprechen, weil Ansible definitiv nicht für das geeignet ist, was wir dort tun wollen. Also ja, es gibt einige Initiativen, die Ansible verwenden, aber sie führen dazu, dass das Problem, das wir haben, nicht wirklich gelöst wird. Das ist also nicht wirklich eine Lösung. Und ich habe angefangen, selbst zu recherchieren. Und da ich funktionale Programmierung lernen wollte, habe ich einige PHP-Pakete erstellt, nur um das Konzept zu lernen und zu versuchen, Dinge mit funktionaler Programmierung zu tun. Und dann entdeckte ich dieses Nix. Okay, was ist Nix? Ich hatte noch nie davon gehört. Und dann habe ich es ausprobiert. Und es war Liebe auf den ersten Blick, im Grunde genommen. Die Leute sagen, wenn man Nix ausprobieren will, sollte man zuerst Nix auf seinem eigenen Rechner benutzen, egal welche Distribution es ist, und dann NixOS installieren, das ist das Betriebssystem, das auf Nix aufbaut. Aber das habe ich nicht getan. Ich habe NixOS sofort über mein altes Gentoo installiert, das auf meinem Laptop total langsam und träge war. Ich kenne den Grund dafür nicht. Ich habe nicht nachgeforscht, was ich getan habe. Ich habe einfach eine neue Festplatte gekauft und sofort NixOS installiert. Und das ist immer noch die erste Installation, die ich gemacht habe, die da ist.

Marine: Echt jetzt?

Pol: Ja. Und sie funktioniert perfekt.

Marine: Das ist erstaunlich. Aber Sie haben erwähnt, dass man ein gewisses Wissen haben muss, um es zu installieren, richtig? Es ist nicht so einfach wie...

Pol: Als ich es installiert habe, musste man das Handbuch Seite für Seite lesen und die Befehle manuell eingeben. Aber seither haben wir ein grafisches Installationsprogramm herausgebracht. Es ist also nur ein Klick, ein Klick, ein Klick, und schon ist es installiert, und es funktioniert sehr gut.

Marine: Okay, das ist also viel freundlicher für Neulinge.

Pol: Wenn Sie neugierig sind, lade ich Sie wirklich dazu ein, es zu testen und zu sehen, wie es funktioniert.

Marine: Ja, das könnte ich.

Pol: Das ist erstaunlich, wirklich.

Marine: Jetzt bin ich neugierig. Ja, auf jeden Fall.

Pol: Das ist erstaunlich, denn deine Konfiguration ist nicht flüchtig. Sie befindet sich in einer Datei, und diese Datei kann sich in einem Git-Repository befinden. Wenn also morgen Ihre Festplatte aus irgendeinem Grund ausfällt, können Sie dieselbe Maschine, dieselbe Konfiguration mit nur einer einzigen Konfigurationsdatei wiederherstellen. Das ist erstaunlich. Zu Hause haben wir einige Rechner, und die gesamte Konfiguration befindet sich in einem öffentlichen Repository auf GitHub. Und sie sind alle auf dem gleichen Stand, im Grunde genommen. Es ist die gleiche Basis. Ich habe einen Router mit einem Raspberry, ich habe einen Server in meinem Keller, ich habe zwei oder drei Laptops, und sie alle haben die gleiche Konfiguration, außer dem Router natürlich. Aber ja, ich kann meine Umgebung finden, egal welchen Computer ich benutze. Und um einen Dienst zu installieren, muss ich normalerweise nur eine Zeile in eine Datei einfügen. Und dann weiß ich, dass er morgen, wenn die automatische Aktualisierung durchgeführt wird, installiert sein wird. Das ist also super cool. Wenn meine Mutter mich morgen um einen Computer bitten würde, würde ich ihr NixOS geben. Denn ich kann ihn aus der Ferne verwalten. Und wenn sie mir sagen würde, oh, ich brauche diese Software. Okay, ich kann das ganz schnell von meinem eigenen Computer aus machen und auf ihrem Computer installieren, der bei Bedarf ferngesteuert ist. Ich würde das sofort tun.

Marine: Ich sehe also die Vorteile für verteilte Teams, wie du sagst, und verschiedene Arten von Rechnern, die dir nicht wirklich wichtig sind.

Pol: Ja, aber das ist NixOS. Nun, Nix, das Tool, kann auch eine Menge Dinge tun. Und selbst wenn du das Betriebssystem nicht verwendest, kann Nix auf deinem Ubuntu oder deinem Debian so ziemlich das Gleiche tun. Wenn Sie zum Beispiel Ubuntu benutzen, ein sauberes Ubuntu ohne irgendwelche Programme, und Sie wollen PHP benutzen, können Sie einfach einen Befehl mit Nix ausführen, der eine Shell mit allen Werkzeugen, die Sie für die PHP-Entwicklung brauchen, erzeugt. Und sobald Sie diese temporäre Shell verlassen, werden alle diese Programme irgendwann vom Garbage Collector gelöscht.

Marine: Okay.

Pol: Ihr ursprüngliches Betriebssystem bleibt also sauber. Und Nix wird niemals Auswirkungen auf Ihr Betriebssystem haben, denn alles, was Nix installiert, installiert ein bestimmtes Verzeichnis, nämlich slash Nix slash store. Alles befindet sich dort. Wenn Sie also das Verzeichnis löschen, wird im Grunde alles gelöscht.

Marine: Sehr sauber. Okay.

Pol: Es ist extrem sauber, ja. Und allein dafür lohnt es sich schon. Und so benutze ich es auf dem Laptop der Kommission. Wir verwenden Ubuntu, und ich habe gerade Nix installiert, das binäre Nix. Und so habe ich mit einem Wimpernschlag in der Kommandozeile Zugriff auf viele Programme.

Marine: Wie schaffen Sie es, so viele Pakete zu verwalten? Du bist ja einer von mehreren Maintainern nur für die PHP-Pakete, aber weißt du überhaupt, wie viele Pakete im Moment auf Nix verfügbar sind?

Pol: Ja, es sind zwischen 90.000 und 100.000 Pakete. Das ist das größte verfügbare Paket-Repository. Laut Repology ist es das größte.

Marine: Wow. Also, wie funktioniert es? Angenommen, es gibt ein neues Tool, wie entscheiden Sie, welche Pakete Sie anbieten?

Pol: Wenn man ein Paket in Nix hinzufügen möchte, muss man nur eine Datei in einem bestimmten Verzeichnis im Repository erstellen. Und diese Datei ist im Grunde das Rezept, um das gewünschte Programm zu bauen. Sie beschreiben also in dieser Datei, wie das Programm zu bauen ist. Und in dieser Datei werden Sie höchstwahrscheinlich eine Zeile haben, die besagt, dass dies die Versionsnummer 1.2.3 ist. Und dann werden Sie auch etwas haben, das wir den Hash nennen. Im Grunde genommen wird am Ende des Builds ein Hash des Ergebnisses erstellt. Natürlich ist das technisch nicht ganz richtig, aber ich werde es mal so ausdrücken, auch wenn es technisch nicht ganz richtig ist. Es wird ein Hash des Inhalts genommen und dieser Hash muss in die Datei geschrieben werden. So kann man sicherstellen, dass jedes Mal, wenn die Datei auf dem eigenen oder einem anderen Rechner kompiliert wird, sie den gleichen Hash hat und man kann sie vergleichen, die Builds sind in Ordnung.

Marine: Sie sind wie eine Integritätsprüfung.

Pol: Ja. Natürlich wird das technisch nicht so gemacht, aber das soll nur in groben Zügen erklären, wie es gemacht wird. Und das Coole ist, dass es im Nix OS Repository einen Roboter gibt, der das Repository auf veraltete Pakete überwacht. Und jedes Mal, wenn er etwas entdeckt, das veraltet ist, stellt er eine Anfrage an das Projekt und sagt: Hey, dieses Paket braucht ein Update. Hier ist der Pull Request. Und normalerweise gibt es zwei Zeilen, die die Version und den Hash ändern. Und das macht es automatisch. Es ist also auch das aktuellste Repository, das man im Internet finden kann. Dank dieser Sache.

Marine: Das ist erstaunlich. Ist das ein Bot, den du auch bei Nix gebaut hast, oder ist das ein Drittanbieter?

Pol: Es ist ein Drittanbieter-Bot, der seit Jahren auf Nix aktiviert ist, glaube ich. Und er aktualisiert alle Pakete auf diese Weise.

Marine: Das ist großartig.

Pol: Und er pingt die Betreuer an, sobald er fertig ist. So wissen wir, wenn es ein Update gibt, und können es testen. Und ja, das ist fantastisch.

Marine: Cool. Okay. Also, diese Datei, benutzt sie die Programmiersprache, von der du gesprochen hast?

Pol: Ja. Das ist natürlich ein in Nix geschriebenes Rezept. Ja.

Marine: Also, ja. Das hätte man nicht mit einer bestehenden Sprache machen können. Was war der Grund für die Entwicklung einer eigenen Sprache?

Pol: Also, Nix ist das Ergebnis einer Doktorarbeit von Ilko Dolstra in den Niederlanden vor 20 Jahren. Und in dieser Arbeit hat er erklärt, warum dafür eine eigene Sprache geschaffen wurde. Natürlich kann man diese Entscheidung hinterfragen, warum eine bestimmte Sprache gewählt wurde, anstatt etwas bereits Vorhandenes zu verwenden. Für mich ist das kein Problem, denn ich halte es für eine gute Idee, eine spezielle Sprache dafür zu entwickeln, die funktional und faul ist. Faulheit und funktionale Programmierung - ich fand dieses Konzept wirklich erstaunlich. Und das ist etwas, was wir in PHP nicht haben, aber wir können es nachahmen, aber wir haben es nicht. Und Nix nutzt diese Konzepte. Und für den Einsatz und für die Beschreibung dessen, was wir wollen, ist es einfach perfekt. Ich glaube, einige Leute sagen, dass Nix nicht schön ist, aber eigentlich ist es nur eine JSON-Datei, in die man Funktionen einfügt. Es sieht JSON sehr ähnlich. Und es gibt Initiativen wie die Geeks Projects. Es ist im Grunde dasselbe wie Nix, nur dass sie, anstatt eine Sprache wie Nix neu zu erfinden, eine bereits existierende Sprache wiederverwenden, die auf Lisp basiert, nämlich GIL. Und das ist auch genau das gleiche Konzept. Es ist ein bisschen ausführlicher als die Nix-Sprache, aber es macht im Grunde das Gleiche.

Marine: Entwickelt sich die Sprache noch weiter? Führen Sie neue Dinge ein oder ist sie...

Pol: In Nix?

Marine: Ja. Reicht es aus, um das zu tun, was...

Pol: Ja, die Sprache wird aktiv gepflegt. Ja. Und es gibt neue Dinge. Vielleicht nicht in der Sprache selbst, weil sie ziemlich stabil ist, aber in den Bibliotheken, die sie umgeben, gibt es immer neue Dinge. Und ich beschäftige mich nicht wirklich mit der Entwicklung der Nix-Sprache selbst, eher mit den Paketen. Aber ja, sie wird seit 20 Jahren aktiv entwickelt und gepflegt.

Marine: Das ist erstaunlich. Was ist zum Beispiel ein typischer Beitrag, den du als Mitglied des Kernteams leistest?

Pol: Mein bisher größter Beitrag bezieht sich zum Beispiel auf PHP. Bevor ich diesen Beitrag geleistet habe, war es im Grunde nicht möglich, eine PHP-Anwendung auf reproduzierbare Weise zu erstellen. Das heißt, dass Sie es vielleicht schon versucht haben. Wenn Sie versuchen, Composer in Ihrer Anwendung zu installieren, wird ein Vendor-Verzeichnis erstellt. Und wenn Sie eine Prüfsumme dieses Verzeichnisses nehmen, wird die Prüfsumme immer anders sein. Sicher. Und das wurde in Composer 2.6.4 behoben. Es war ein einzeiliger Patch, den ich vor zwei oder drei Monaten gemacht habe. Wenn Sie jetzt Composer installieren, hilft das immer gleich. Das ist also schon sehr gut für den Paketmanager, der Composer ist. Und mit Nix habe ich einfach ein Tool entwickelt, mit dem man sagen kann: Okay, das ist meine Anwendung, ich erstelle ein Paket, das ich in der ganzen Welt verteilen kann. Die Person, die eine in Nix geschriebene PHP-Anwendung benutzt, wird vielleicht gar nicht wissen, dass sie in PHP geschrieben ist, denn sie wird einfach Nix ausführen und dann den Namen des Pakets eingeben und die Anwendung wird auf diesem Rechner laufen. Denn die Anwendung wird in ihrem Rezept alle Abhängigkeiten beschreiben, die sie benötigt und wie sie ausgeführt werden muss. Dies ist also ein sehr interessantes Konzept. Und ich habe mir überlegt, wie wir sicherstellen können, dass phpStan funktioniert, wenn ich es starte. Aber phpStan wird in verschiedenen Varianten im Internet verteilt, entweder über die vorkompilierten Binärdateien oder über die Quellen. Und mein Builder erlaubt es, das JSON des Composers zu lesen, alle Abhängigkeiten isoliert herunterzuladen, sie irgendwo abzulegen, das Vendor-Verzeichnis zu erstellen und dann die Verknüpfung mit den Binärdateien, die phpStan bereitstellt, durchzuführen. Und all das ist jetzt erledigt und funktioniert super gut. Ich bin sehr froh, einen Pull-Request zu sehen, der den ganzen Mist, den sie vorher gemacht haben, um das zu erreichen, entfernt. Und ja, das war eine ziemliche Arbeit, das zu tun. Ja, es war eine ziemliche Arbeit, weil ich nicht wusste, wie man das macht. Es hat Zeit gebraucht, weil ich die Dinge richtig machen wollte. Und das ist ziemlich heikel, denn stellen Sie sich vor, ich entdecke morgen ein Problem in meinem Builder, dann müssen alle PHP-Anwendungen, die meinen Builder benutzen, vielleicht ihren Hash aktualisieren. Es ist also sehr, sehr aufregend, dass es zusammengeführt wurde, ich hatte auch ein bisschen Angst, es zu veröffentlichen. Aber jetzt läuft es und es funktioniert gut, ich bin überrascht, dass ich nur ein oder zwei kleine Dinge korrigieren musste, aber nichts wirklich Wichtiges. Also ja, ich bin super glücklich über das Ergebnis.

Marine: Du hast also sozusagen ein wiederkehrendes Problem mit Abhängigkeiten gelöst, was immer ein Kampf ist.

Pol: Ja, das ist etwas, das ich seit drei oder vier Jahren nicht mehr habe. Ja, auf meinem Laptop kann ich Ihnen sagen, dass die Verwendung von Nix die Art und Weise, wie ich eine Software sehe, die Erstellung einer Software, die Bereitstellung von Software, völlig verändert hat. Das ist ein Problem der Vergangenheit. Das ist eigentlich nie mehr passiert.

Marine: Das klingt nach einem tollen Leben. Ich bin interessiert. Ich bin interessiert. - Ja.

Pol: Ja, in der Tat. Ja, genau. Und wenn ich sehe, dass alle meine Kollegen damit zu kämpfen haben, sage ich ihnen, schaut, installiert Nix, und dann zeige ich euch, wie ihr eine schnelle Umgebung mit OpenSSL erstellen könnt, wenn ihr es braucht. Genau das ist letzte Woche passiert. Wir brauchten OpenSSL one nur, um einen Befehl zu testen. Aber da sie eine bestimmte Distribution benutzten, konnten sie es nicht kompilieren und benutzen. Sonst würde es alles kaputt machen. Also haben wir es einfach in einer virtuellen Maschine mit Nix gemacht und es hat sofort funktioniert.

Marine: Ja. Isolation. Erstaunlich. Wow. Wie viele Leute arbeiten denn an dem Kern? Was macht ihr zum Beispiel, denn ich nehme an, dass sich Nix OS irgendwie vom Rest von Nix unterscheidet, oder ist es das gleiche Team? Wie funktioniert das?

Pol: Hier auf der SymfonyCon in Brüssel habe ich heute eine Person getroffen, die auch ein Contributor ist und einen User, den ich nicht kannte.

Marine: Wow!

Pol: Wir sind also drei. Ich war auch auf fünf Konferenzen, und auf drei von ihnen wurde über Reproduzierbarkeit gesprochen. Ich denke also, dass dies eine Welle ist, die uns noch nicht ins Gesicht gefressen hat, aber sie wird irgendwann kommen. Und Nix wird sich mehr und mehr in der Gemeinschaft verbreiten. Ich vermute, dass es mehr und mehr Mitwirkende geben wird. Aber im Moment sind wir im Nix-Projekt, im PHP-Bereich von Nix, sechs Leute und wir tun fast nichts, weil wir von dem Roboter angepiepst werden, der sagt: Hey, es gibt eine neue Version von PHP und PHP ist fertig. Ist es okay, wenn du mir sagst, ob ich es zusammenführen kann? Ja, nein. Und dann wird es zusammengeführt und das war's. Aber das ist es, was ich tue. Das ist es, was wir tun. Und ich sehe keine große Sache, die man jetzt in PHP und Nix machen könnte. Es funktioniert sehr gut.

Marine: Automatisierung ist der Schlüssel, richtig?

Pol: Alles wird in einer Datei niedergeschrieben. Wenn es also einmal fertig ist, und es ist sehr gut gemacht, muss ich es nicht mehr anfassen.

Marine: Aber was ist mit dem Rest? Denn es gibt natürlich nicht nur PHP. Weißt du, wie viele Leute insgesamt arbeiten?

Pol: Oh nein, das kann ich dir nicht sagen. Das Nix Packages Repository ist unter den Top 10 der aktivsten Repositories auf GitHub. Es kann dir also eine Idee geben.

Marine: Es haut mich um, dass ich noch nie davon gehört habe und es eines der 10 aktivsten Projekte ist.

Pol: Ja, aber ich habe genau das gleiche Gefühl wie du. Wie kommt es, dass ich in 20 Jahren noch nie von diesem Projekt gehört habe, das so erstaunlich ist, dass ich der Welt zeigen möchte, wie es funktioniert. Es ist so erstaunlich. Ich wünschte, ich hätte hier bei Symphony einen Vortrag darüber halten können, aber wahrscheinlich wird das erst nächstes Jahr der Fall sein. Aber ja, das ist ein erstaunliches Werkzeug.

Ich kann es nur empfehlen.

Marine: Wie würde ich vorgehen, wenn ich es ausprobieren wollte? Du hast mir gesagt, okay, es gibt einen Graphic Installer, du kannst das Betriebssystem oder nur den Paketmanager nehmen. Was ist mit dem Beitrag? Habt ihr vielleicht Bedürfnisse außerhalb des PHP-Bereichs?

Pol: Das hängt davon ab, was man mit PHP macht, aber da ich ein PHP-Entwickler bin, sorge ich schon dafür, dass alle Bedürfnisse der PHP-Entwickler da sind und man nichts braucht. Also installieren Sie einfach Nix. Es dauert 55 Sekunden, es zu installieren.

Marine: 55, das ist genau.

Pol: Ich weiß die Zeit genau, weil ich letzten Monat eine Präsentation in München gehalten habe und kleine Screencasts von der Installation gemacht habe. Es dauerte 55 Sekunden.

Marine: Wow.

Pol: Am Ende ist es also nur eine Binärdatei, die man auf seinem Rechner installiert und dann benutzt. Das hängt davon ab, was man machen will. Wenn du mit Nix OS arbeiten willst, kann es etwas mehr Zeit in Anspruch nehmen, es zu installieren. Aber wenn Sie nur mit Nix spielen und genau das Gleiche tun wollen, was ich auf meinem Rechner mache, nämlich Nix OS, dann können Sie Nix auf Ihrem Rechner verwenden, egal welche Farbe, egal welches Betriebssystem.

Marine: Gibt es eine Dokumentation? Wo können wir anfangen?

Pol: Die Dokumentation in Nix ist in der Regel der Schmerzpunkt, aber es gibt in letzter Zeit eine Menge Initiativen und eine Menge Arbeit, die in letzter Zeit getan wurde, um das zu verbessern. Die Dokumentation ist also vorhanden und manchmal fehlen noch einige Teile, aber sie wird jeden Tag verbessert. Es arbeiten viele Leute daran. Die Leute, die daran arbeiten, sind großartig und machen einen extrem guten Job. Und es gibt so viele Dinge zu dokumentieren. Stellen Sie sich ein Repository mit fast 100.000 Paketen vor. Da gibt es eine Menge zu dokumentieren.

Marine: Wäre das vielleicht der Punkt, an dem neue Mitwirkende helfen könnten?

Pol: Ja, auf jeden Fall. Wir suchen Leute, die uns bei der Dokumentation helfen, die bei all diesen Dingen helfen.

Marine: Wie sieht denn die Zukunft von Nix aus? Haben Sie...

Pol: Im Moment ist Nix, wie soll ich das auf Englisch sagen, in der Mitte einer Ecke. Das ist meine eigene Sichtweise. Aus der Sicht von jemandem, der von Anfang an dabei ist, mag das falsch sein, aber so sehe ich es als Neuling in der Nix-Welt. Aber im Grunde genommen befindet sich Nix in einer Kurve und rennt mit voller Geschwindigkeit in eine Kurve. Stellen Sie sich vor, Sie sitzen in einem Auto und sind in einer Kurve. Und warum? Weil man im Grunde die traditionelle Art und Weise hat, Nix zu benutzen, wie Jerome es in seiner Präsentation gezeigt hat, indem man die Nix-Shell benutzt und dann seine Abhängigkeiten deklariert und dann arbeitet. Und seit zwei Jahren, ja, seit zwei Jahren, gibt es eine neue Art und Weise, die Flake genannt wird. Und die Flake-Datei ist im Grunde ein Weg, um die lokale Infrastruktur für Ihr Projekt zu beschreiben. Und sie ist extrem flexibel. Es ist extrem... Eigentlich ist es einfach zu benutzen. Man braucht vielleicht nur jemanden, der es einem beim ersten Mal erklärt, und dann geht es schon. Es gibt jetzt also zwei Möglichkeiten, Nix zu benutzen. Entweder man benutzt den alten Weg, so nenne ich es, auch wenn es nicht wirklich der Fall ist, oder man benutzt den Flake-Weg. Die Sache ist die, dass der Flake-Weg noch als experimentell gilt. Aber die Sache ist die, dass es total stabil ist und die Leute arbeiten gerade daran, es stabil zu machen. Es gibt Unternehmen, die Flake um dieses Werkzeug herum aufgebaut haben, und es gibt Projekte, die um Flake herum aufgebaut wurden. Es wird also nicht verschwinden. Das ist etwas extrem Stabiles. Überall in der Community sagen die Leute, dass es stabil ist. Sie können es ohne Angst benutzen. Ja, benutzen Sie es. Sie werden den Unterschied sehen. Und das ist es, was ich benutze. Ich habe sofort mit Flake angefangen, als ich mit Nix anfing. Ich weiß nicht sehr viel über die alte Methode. Ich kenne es, weil ich es kenne. Aber ich benutze Flake die ganze Zeit. Das ist einfach ein wunderbares Stück Technik, das von vielen Leuten entdeckt werden muss.

Marine: Nun, hoffentlich werden sie das jetzt tun. Was ich also höre, ist, dass Sie eine Art fauler Entwickler sind, aber auf eine nette Art und Weise. Ja, wenn man etwas automatisieren kann, wenn man Dinge vereinfachen und mit anderen teilen kann, ist es das, was man mag, oder?

Pol: Ja, in gewisser Weise, ja.

Marine: Das kann ich verstehen. Nun, vielen Dank, dass Sie mir von Nix erzählt haben. Ich bin jetzt wirklich gespannt darauf, es auszuprobieren. Ich hoffe, die Leute entdecken etwas. Es ist erstaunlich, was wir jeden Tag in der Open-Source-Branche entdecken, Dinge, die ich schon seit 20 Jahren kenne. Jetzt habe ich ein paar dumme Fragen an Sie, wenn es Ihnen nichts ausmacht. Ja, das frage ich jeden Gast, aber wenn Sie die Erlaubnis hätten, einen ganzen Tag lang zu tun, was Sie wollen, was würden Sie tun?

Pol: Was würde ich in Bezug auf die IT oder einfach in meinem Leben tun?

Marine: Nein, im Allgemeinen, einfach im Leben, wenn du die Erlaubnis hättest, etwas zu tun, was du normalerweise nicht tun könntest.

Pol: Oh, ich würde Zeit mit Menschen verbringen, die ich nicht so oft sehe, und am ehesten mit meiner eigenen Familie. Und ich würde Zeit mit Menschen verbringen, die nichts mit Computern zu tun haben, nicht mit einem Computer. Ich verbringe zu viel Zeit vor diesen Bildschirmen. Ich glaube, ich würde mir einen Tag Zeit nehmen und meinen Laptop irgendwo im Haus stehen lassen und etwas mit der ganzen Familie unternehmen.

Marine: Ja, aber das kannst du doch schon machen. Es ist doch nicht verboten, oder?

Pol: Ja, aber es gibt immer etwas, das nicht funktioniert. Ich bin nicht da, ich bin nicht verfügbar. Können wir das an einem anderen Tag machen? Oder ja, Sie wissen, wie es läuft.

Marine: Also das einfache Leben?

Pol: Ja, auf jeden Fall.

Marine: Gut, interessant. Und was wäre, wenn du deine eigene Erlaubnis erteilen könntest? Was würden Sie tun?

Pol: Meine Erlaubnis wäre... in Bezug auf ein Dateisystem?

Marine: Alles Mögliche.

Pol: Oh, Erlaubnis.

Marine: Leben, was auch immer. Jemand hat vorhin die Physik verbogen, als ich Ryan interviewt habe.

Pol: Ich würde es nicht Erlaubnis nennen, aber ich würde es vielleicht Einschränkung nennen. Stellen Sie sicher, dass die Software, die Sie machen, reproduzierbar ist. Das würde der IT auf jeden Fall helfen. Im Zusammenhang mit der IT wäre das natürlich sehr hilfreich. Stellen Sie sicher, dass Sie etwas tun, dass Sie es für jeden reproduzieren können, und verwenden Sie Open-Source-Tools.

Marine: Das ist ganz klar eine Selbstverständlichkeit. In diesem Podcast haben Sie keine Wahl.

Pol: In der Tat.

Marine: Okay, und zum Schluss, was würdest du sagen, ist deine größte Stärke?

Pol: Oh, Faulheit.

Marine: Ich liebe sie.

Pol: Faulheit. Und wenn ich mit einem Problem konfrontiert bin, möchte ich es verstehen. Und um das Problem zu verstehen, muss man nicht unbedingt eine Lösung finden. Aber für mich bedeutet das, die Wurzel des Problems zu finden, was auch bedeutet, das Problem in kleinere Probleme aufzuteilen und diese zu lösen und zu versuchen, eine Lösung für sie zu finden. Für all diese kleinen Probleme, eins nach dem anderen. Und das wäre vielleicht eine Stärke. Also, Faulheit plus diese Sache. Ich weiß nicht, wie wir das nennen können.

Marine: Ja, die Fähigkeit, sich in überschaubare Aufgaben aufzuteilen.

Pol: Ich weiß es nicht.

Marine: Das schrittweise Vorgehen. Ich weiß nicht, wie ich es nennen soll.

Pol: Ich weiß nicht, wie ich das nennen soll.

Marine: Ja, also anstatt sich auf das globale Problem zu konzentrieren, kann man es aufteilen in mehr...

Pol: Wenn man es aufteilt, kann man es leicht jedem erklären. Man kann das Problem teilen und auch leicht Hilfe bekommen.

Marine: Klar, du bist ein fauler, analytischer Mensch.

Pol: Ja, vielleicht. Das ist eine gute Beschreibung, denke ich. Ich sollte das auf LinkedIn veröffentlichen.

Marine: Ja, lassen Sie mich wissen, wie das läuft. Ja. Nun, vielen Dank, Pol. Das war super interessant.

Pol: Ich danke dir.

Marine: Ich freue mich darauf, die Leute über Nix zu informieren und es selbst zu testen.

Pol: Ja, ich danke Ihnen sehr für die Einladung.

Ihr größtes Werk
steht vor der Tür

Kostenloser Test
Discord
© 2025 Platform.sh. All rights reserved.