Contact salesFree trial
Blog

Explorer Nix : un regard approfondi sur les contributions open source

NixPHPPodcastDrupalsource ouverteSymfony
Marine Gandy
Ingénieur DevRel
Partager

Embarquez dans un voyage open source non conventionnel avec Pol Dellaiera dans l'épisode 5 du chmodcast. Tout commence par l'économie de chaque euro pour acheter son premier ordinateur lorsqu'il était enfant... Ensuite, c'est Drupal, Symfony, et maintenant Nix, où les contributions de Pol en tant que mainteneur avec droits de commits rendent la vie des développeurs PHP plus facile que jamais. Gestionnaire de paquets, système d'exploitation et même langage fonctionnel : Nix fait tout. Plongeons dans l'aventure !


Transcription du podcast

Nous avons utilisé ChatGPT pour améliorer la grammaire et la syntaxe de la transcription.

Marine : Je suis ici à la SymfonyCon à Bruxelles et je suis rejointe par Pol. Hey, Pol.

Pol : Hey, hello.

Marine : Merci beaucoup de m'avoir rejointe : Merci beaucoup de vous joindre à moi. Je suis très excitée parce que je t'ai demandé à la dernière minute, en quelque sorte.

Pol : Oui, en effet.

Marine : Mais vous étiez disponible et vous avez accepté, alors je suis ravie de vous parler aujourd'hui. Pour commencer, peux-tu te présenter ?

Pol : Qu'est-ce que vous faites ? Je m'appelle Pol Dellaiera et je suis très heureux d'être ici. C'est la première fois que j'ai mis à peu près 25 minutes pour venir à SymfonyCon.

Marine : Tu as de la chance.

Pol : Oui, et j'ai rencontré des gens vraiment géniaux pour la première fois aujourd'hui. Nous avons déjeuné ensemble et c'est un moment incroyable pour moi car j'ai enfin mis des visages sur ces surnoms. Nous pouvons également discuter de choses qui sont habituellement un peu délicates sur GitHub ou trop longues à expliquer par le biais d'un message, ce qui nous permet de faire valoir nos points de vue de manière vivante. Et c'est tellement mieux de le faire que sur GitHub. Donc, oui, c'est un moment extraordinaire en ce moment. Et je suis heureux d'être ici. Merci pour l'invitation. Même si elle a été faite à la dernière minute, ça me va tout à fait.

Marine : Merci d'être si flexible. Alors oui, que faites-vous ? Vous parlez de contribution. Vous êtes évidemment ici parce que vous faites de l'open source.

Pol : Je suis un contributeur open source et j'ai commencé par contribuer à Drupal, le CMS Drupal, il y a plusieurs dizaines d'années. Et depuis quatre ans, j'ai arrêté d'utiliser Drupal pour une raison quelconque et je travaille maintenant plus exclusivement avec Symfony. Je ne suis pas dans la construction d'applications parce que ce n'est pas mon point fort et ce n'est pas ce que j'aime faire. Je préfère me concentrer sur la création de bibliothèques et de bundles particuliers qui résolvent un problème particulier. Et c'est ce que j'aime le plus faire. Et c'est ce que je fais aussi au travail. Et c'est aussi ce que je fais pendant mon temps libre. Et récemment, je ne peux pas dire que ma carrière a un peu changé, mais mon temps libre, qui était principalement consacré au développement PHP, s'est orienté vers l'utilisation de Nix, qui est un gestionnaire de paquets, un gestionnaire de paquets universel. Et je m'amuse beaucoup avec cet outil, qui est incroyable. Je ne sais pas comment j'ai pu le découvrir il y a seulement trois ans. Il est sorti il y a 20 ans.

Marine : Non, vraiment ? Je n'en avais aucune idée.

Pol : Oui. Et pour moi, ça a complètement changé ma façon de voir l'informatique et d'envisager l'avenir de l'informatique. C'est pour cela que c'est si perturbant. Et je suis vraiment heureux d'être maintenant un co-contributeur du projet. Je maintiens la pile PHP parmi d'autres outils. Je pense que j'ai plus de 1 000 commits maintenant. J'ai été surpris de voir à quel point la communauté est accueillante et à quel point il est facile de participer au projet. C'est donc une découverte étonnante. Et j'aime beaucoup ce projet. J'aimerais pouvoir l'utiliser davantage au travail, mais c'est en cours, disons. Mais oui.

Marine : Cool. Wow. Vous avez déjà une longue carrière dans l'open source. Je veux parler de Nix, évidemment. Mais d'abord, je me demande comment tu es arrivé dans l'open source, en fait. Vous avez commencé avec PHP et Drupal. Comment cela s'est-il passé ?

Pol : C'est évident parce que j'ai commencé à travailler avec des ordinateurs dès l'âge de 10 ans. J'ai aujourd'hui 42 ans, il y a donc 30 ans. À l'époque, nous n'avions pas d'ordinateurs aussi facilement, et l'achat d'un ordinateur coûtait cher. Je devais donc économiser un peu d'argent ici et là. Je me souviens d'avoir collectionné toutes les pièces de 50, un euro en gros à l'époque. Je me souviens que j'avais une collection de ces pièces. Ensuite, j'ai acheté mon ordinateur, mais il était très bon marché et ce n'était pas un gros ordinateur, évidemment. Et pour faire tourner les logiciels de l'époque, les logiciels étaient, ouais, c'était bien. C'était Windows, mais j'avais des amis qui utilisaient Linux et je ne connaissais pas ce système. J'ai donc demandé : " D'accord, qu'est-ce que c'est ? Et ils m'ont dit, écoute, si tu as un ordinateur, qui n'est pas très gros, tu peux utiliser Linux. Il utilise moins de ressources. C'est un autre système d'exploitation et c'est intéressant. Je suis quelqu'un de très curieux et j'ai essayé. J'ai essayé avec Red Hat 5, je crois, Red Hat 5.2. Ensuite, je suis passé brièvement à Debian. Puis j'ai passé un long moment sur Slackware. Et puis presque 10 ans sur Gentoo, je pense 10 ans sur Gentoo. J'ai brièvement passé un mois à Debian, puis j'ai utilisé NixOS. Et c'est la distribution que j'utilise tous les jours maintenant comme pilote quotidien. Et c'est la meilleure distribution que j'ai jamais utilisée. Beaucoup de gens disent que Nix n'est pas prêt pour le bureau, mais je peux vous dire que je suis ici pour dire que ce n'est pas vrai. En fait, elle fonctionne mieux que d'autres distributions. C'est juste que la mise en place correcte prend un peu de temps parce que vous devez modifier un fichier et ensuite reconstruire une nouvelle génération de votre système. Et il faut faire des tests. Et lorsque votre configuration est terminée, vous n'avez plus à y toucher. Les mises à jour sont transparentes et assez rapides, et cela fonctionne. Cela fonctionne toujours. C'est impressionnant.

Marine : Vous avez donc commencé par bidouiller votre propre ordinateur parce que vous avez été exposé à Linux assez tôt. C'est super. Tu as donc été passionné par l'informatique très jeune et tu as décidé de travailler avec, j'imagine. Comment cela s'est-il passé ?

Pol : Oui, je n'ai jamais eu l'impression de travailler en premier parce que je fais ce que j'aime. J'ai toujours aimé les ordinateurs. Je ne sais pas pourquoi. Pour moi, c'est amusant de travailler avec un ordinateur et de faire des choses qu'il fera 20 000 fois si c'est nécessaire plus tard. J'ai commencé par coder des choses sur l'ordinateur, puis c'est devenu mon travail. J'ai fait mes études en informatique et maintenant je travaille dans l'informatique en tant que consultant externe à la Commission européenne, ici à Bruxelles, à cinq minutes d'ici. Et oui, pour moi, ça a toujours été une passion. Et je me demande quand j'en aurai assez. Je ne sais pas.

Marine : Mais jamais, j'espère.

Pol : Oui, j'espère.

Marine : Comment as-tu fini par faire du Drupal ou du PHP ?

Pol : J'ai commencé à travailler avec Drupal parce que pendant mes études, nous voulions avoir un coin pour que les étudiants puissent échanger des informations et d'autres choses. Et Drupal semblait être la solution idéale. J'ai commencé à essayer de créer un site web avec Drupal, cinq à l'époque. Cela fonctionnait, mais je ne comprenais pas comment les gens pouvaient créer de véritables sites web à partir de Drupal. Je n'ai pu créer qu'un simple blog. Et je me suis demandé comment ces gens faisaient. On dirait qu'il a beaucoup de puissance, mais je ne peux pas l'utiliser ou essayer de l'apprivoiser. J'ai donc abandonné une fois, deux fois, trois fois, quatre fois. Et puis Drupal 6 est sorti. Et puis Drupal 6 était encore meilleur que le 5 et je l'ai réessayé et j'ai enfin compris comment il fonctionnait. J'ai commencé à apprendre le code pour créer des modules et c'était fait. J'étais à fond dedans et je pouvais faire en sorte que chaque fois que quelqu'un me parlait d'une application web, je pensais en termes de Drupal. Oh oui, il y a un module qui fait ça. Je peux utiliser ceci pour ceci. Je peux utiliser ça pour ça. Et voilà, votre site web est terminé. J'ai créé de nombreux sites web de ce type et ils fonctionnent toujours. Et les modules que j'ai créés à l'époque pour Drupal 6, 7, 8, 9 et 10 sont toujours utilisés, sauf qu'ils sont maintenus par d'autres personnes. Par exemple, le site du premier ministre ici en Belgique, la première page que vous voyez quand vous arrivez sur le site web est un module que j'ai créé à l'improviste, juste parce que je voulais essayer quelque chose comme preuve de concept. Ce module a été créé pour Drupal 6, 7 et 8 et est toujours utilisé. Il s'agit d'une page de sélection de la langue qui vous permet de sélectionner votre langue si rien n'a été défini auparavant dans un cookie ou dans l'URL ou quelque chose comme ça. C'est ainsi que j'ai fini par faire du Drupal, puis du PHP et que j'ai travaillé dans ce domaine à la Commission européenne. C'est comme ça que j'ai été embauché parce que j'étais développeur Drupal et c'est comme ça que ça a commencé.

Marine : Oui, les gens le savent maintenant, mais je suis moi-même une fille Drupal, donc je comprends ce que tu dis.

Pol : Oui, je me souviens de votre conférence.

Marine : Oui, donc j'aime beaucoup la direction que ça prend. C'est une évolution très douce. Vous aviez un besoin, vous avez créé un site web, vous étiez frustré, alors vous avez créé les pièces manquantes, et vous avez décidé de les partager avec tout le monde. Et une fois que vous êtes dans le coup, vous trouvez toujours quelque chose de nouveau qui est nécessaire, n'est-ce pas ? Il y a plus qu'assez de travail.

Pol : Oui, en effet. En effet, c'est ça.

Marine : Comment avez-vous découvert Symfony ?

Pol : J'ai découvert Symfony parce qu'en gros je me souviens de ce post sur le site de Drupal qui disait getting off the island où en gros l'idée c'était d'utiliser des composants existants plutôt que de réinventer la roue dans Drupal. À l'époque, je n'avais pas bien compris, mais aujourd'hui, des années plus tard, je comprends parfaitement cette initiative, qui était une bonne initiative en fin de compte. Il n'est pas nécessaire de réinventer quelque chose qui existe déjà. Il vaut peut-être mieux l'utiliser et voir comment il fonctionne en interne, pour l'adapter à nos propres besoins. Et c'est la raison pour laquelle Symfony fait très probablement des composants qui sont fondamentalement si flexibles qu'ils peuvent être utilisés n'importe où ailleurs. C'est ainsi que j'ai découvert Symfony, et c'est là que tout a commencé. Je ne suis pas un grand contributeur de

Symfony. J'ai déjà contribué à de petites choses ici et là, et je n'utilise pas beaucoup Symfony. Je l'utilise seulement pour créer des bundles, et je n'ai pas besoin d'aller plus loin dans le code pour le faire parce que j'implémente ma propre logique dans les bundles. En général, ce que je fais, c'est que je crée une bibliothèque qui est complètement agnostique, donc elle peut fonctionner sur n'importe quel framework, Drupal, Laravel, ou Symfony, et n'importe quoi d'autre. Ensuite, je crée le bundle qui va autour de cette bibliothèque. C'est ce que nous faisons aussi au travail. Donc ce qu'on fait, qui est open source d'ailleurs, peut être utilisé et réutilisé par n'importe qui et adapté à n'importe quel framework.

Marine : Qu'en est-il de Nix ? Parce que vous avez mentionné qu'il y a 20 ans, il a été publié. Je n'en avais aucune idée. Donc je suis très curieuse, est-ce que tu peux m'expliquer ce que c'est ? Je ne l'ai découvert que très récemment, et c'est fascinant.

Pol : Pour simplifier pour les gens qui nous écoutent, je décrirais Nix comme un gestionnaire de paquets, un gestionnaire de paquets universel qui peut fonctionner de la même manière sur n'importe quelle distribution Linux, y compris macOS. C'est bien parce que c'est la même ligne de commande que vous allez utiliser sur n'importe quelle distribution Linux et macOS. C'est donc déjà un gros avantage. Ensuite, il peut également être considéré comme un constructeur, tout comme un makefile utilise les commandes make, comme un taskfile utilise les tâches, comme c'est généralement le cas pour un projet Rust. Nix est exactement la même chose, en fait. C'est un outil qui vous permet de construire des logiciels, de construire des choses, et c'est comme ça que je le vois habituellement. C'est ainsi que je le vois moi-même. En plus de cela, Nix est un peu complexe pour beaucoup de gens parce qu'il incarne plusieurs choses, un langage, un langage de programmation, qui est fonctionnel. Nix est donc un langage de programmation. Nix est un outil de déploiement. Nix est un constructeur. Nix est un gestionnaire de paquets. Nix est un gestionnaire de configuration. C'est donc beaucoup de choses en même temps. Donc quand je fais Nix, ok, qu'est-ce que tu fais ?

Marine : Exactement.

Pol : Et de mon côté, ce que je fais avec Nix, je l'utilise comme un constructeur. Je l'utilise comme un gestionnaire de configuration, et c'est à la fois comme un outil de déploiement. C'est vrai. Je l'utilise comme un gestionnaire de paquets. Oui, presque tous les points. C'est ce que je fais avec Nix. Mais oui, si j'étais resté un simple utilisateur, je l'aurais utilisé comme un simple gestionnaire de paquets. Mais depuis que je suis l'un des responsables de PHP dans Nix, je l'utilise de manière plus technique et plus approfondie, et je continue d'apprendre. Je fais encore des choses stupides parfois. Mais pour moi, faire des choses stupides n'est pas un problème car je considère que faire des erreurs est la meilleure façon d'apprendre.

Marine : Oh, c'est ce que j'allais dire. Tout à fait.

Pol : Donc pour moi, ce n'est pas grave. Vous avez fait une erreur. D'accord, désolé. Je vais la réparer. Mais j'ai besoin d'apprendre ce qui se passe ici. Et c'est ça. C'est comme ça que ça a commencé. Mais oui, non, c'est ce qu'est Nix. Et comment ça a commencé maintenant, ça a commencé à cause du travail. Parce qu'au travail, on utilise des machines Windows, des machines Linux et des machines Amazon. Et il n'y a aucun moyen d'aligner nos environnements de développement. Tout le monde utilise son propre ordinateur portable, l'ordinateur portable de la commission, Windows, Linux, l'un utilise Debian, l'autre Ubuntu, l'autre Red Hat. Comment s'assurer que nous utilisons tous les mêmes outils ? Comment s'assurer qu'une application fonctionne sur n'importe quel système d'exploitation ? Et il n'y a rien qui corrige cela pour le moment. Et oui, bien sûr, il y a des initiatives au travail qui ont essayé de résoudre le problème en utilisant Docker. Et en utilisant Docker, nous devons admettre que cela a résolu un tas de choses, mais ce n'est pas la meilleure chose à faire. Je ne sais pas si vous avez déjà essayé de développer avec Docker. Mais moi, je n'aime pas travailler avec des conteneurs internes. Pour moi, c'est lent. C'est ajouter des contraintes au travail des développeurs. Et je suis extrêmement paresseux. Donc pour moi, les choses doivent être simples, accessibles et documentées. Et Docker n'était pas cela. C'est du moins ce que je ressens. Et il y a d'autres initiatives qui utilisent Ansible. Mais je n'en parlerai pas car Ansible n'est absolument pas adapté à ce que nous voulons faire ici. Donc oui, quelques initiatives utilisant Ansible ont été prises, mais elles mènent à peu près, elles ne résolvent pas le problème que nous avons. Ce n'est donc pas vraiment une solution. Et j'ai commencé à chercher par moi-même. Et comme je voulais apprendre la programmation fonctionnelle, j'ai créé quelques paquets PHP juste pour apprendre le concept et essayer de faire des choses en utilisant la programmation fonctionnelle. C'est alors que j'ai découvert Nix. D'accord, qu'est-ce que Nix ? Je n'en avais jamais entendu parler. Et puis je l'ai essayé. J'ai eu un véritable coup de foudre. Les gens disent que si vous voulez essayer Nix, vous devez d'abord utiliser Nix sur votre propre machine, quelle que soit la distribution, et ensuite installer NixOS, qui est le système d'exploitation au-dessus de Nix. Mais je n'ai pas fait cela. J'ai immédiatement installé NixOS au-dessus de mon ancienne Gentoo, qui était complètement lente et léthargique sur mon ordinateur portable. Je n'en connais pas la raison. Je n'ai pas cherché à savoir ce que j'ai fait. J'ai juste acheté un nouveau disque dur, et j'ai immédiatement installé NixOS. Et c'est toujours la première installation que j'ai faite, qui est là.

Marine : Vraiment ?

Pol : Oui. Et elle fonctionne parfaitement bien.

Marine : C'est incroyable : C'est incroyable. Mais vous avez dit qu'il fallait d'abord avoir quelques connaissances pour l'installer, n'est-ce pas ? Ce n'est pas aussi simple que...

Pol : Quand je l'ai installé, il fallait lire le manuel côte à côte et taper manuellement les commandes. Mais depuis, nous avons un installateur graphique qui a été publié. Il suffit donc de cliquer, de cliquer, de cliquer pour l'installer et il fonctionne très bien.

Marine : D'accord, c'est beaucoup plus convivial pour les débutants.

Pol : Si vous êtes curieux, je vous invite vraiment à le tester et à voir comment ça marche.

Marine : Oui, je le ferai : Oui, c'est possible.

Pol : C'est incroyable, vraiment.

Marine : Maintenant, je suis curieuse. Oui, c'est sûr.

Pol : C'est incroyable, parce que votre configuration n'est pas volatile. Elle est dans un fichier et ce fichier peut être sur un dépôt Git. Donc si demain votre disque dur tombe en panne pour une raison quelconque, vous pouvez restaurer la même machine, la même configuration avec un seul fichier de configuration. C'est incroyable. À la maison, nous avons quelques machines et toute la configuration se trouve dans un dépôt public sur GitHub. Et elles sont toutes dans le même état, en gros. C'est la même base. Et j'ai un routeur qui utilise un Raspberry, j'ai un serveur dans mon sous-sol, j'ai deux ou trois ordinateurs portables, et ils partagent tous la même configuration, sauf le routeur, bien sûr. Mais oui, je peux trouver mon environnement, quel que soit l'ordinateur que j'utilise. Et l'installation d'un service consiste généralement à ajouter une ligne dans un fichier. Je sais alors que demain, lors de la mise à jour automatique, il sera installé. C'est super cool. Si demain ma mère me demandait un ordinateur, je lui donnerais NixOS. Parce que je peux le gérer à distance. Et si elle me dit, oh, j'ai besoin de ce logiciel. Ok, je peux le faire très rapidement à partir de mon propre ordinateur et le déployer sur votre ordinateur, qui est à distance si nécessaire. Je le ferais immédiatement.

Marine : Donc je vois les avantages pour les équipes distribuées, comme tu le dis, et les différents types de machines, tu ne t'en soucies pas vraiment.

Pol : Oui, mais c'est NixOS. Maintenant, Nix, l'outil, peut aussi faire beaucoup de choses. Et même si vous n'utilisez pas le système d'exploitation, Nix sur votre Ubuntu ou votre Debian peut faire à peu près la même chose. Par exemple, disons que vous utilisez Ubuntu, un Ubuntu propre sans aucun programme, et que vous voulez faire du PHP, vous pouvez simplement lancer une commande avec Nix qui créera un shell contenant tous les outils dont vous avez besoin pour développer en PHP. Et dès que vous quittez ce shell temporaire, tous ces programmes seront supprimés à un moment donné par le garbage collector.

Marine : D'accord.

Pol : Ainsi, votre système d'exploitation d'origine reste propre. Et Nix, il n'aura jamais, il a un impact sur votre système d'exploitation, parce que tout ce que Nix installe installe un répertoire spécifique, qui est slash Nix slash store. Tout est là-dedans. Donc si vous supprimez le répertoire, tout est supprimé, en gros.

Marine : Très propre. D'accord.

Pol : C'est extrêmement propre, oui. Et rien que pour ça, ça vaut le coup. Voici comment je l'utilise sur l'ordinateur portable de la commission. Nous utilisons Ubuntu, et je viens d'installer Nix, le Nix binaire. Et j'ai accès à de nombreux programmes en un clin d'œil à la ligne de commande.

Marine : Alors, comment gérez-vous autant de paquets ? Parce que tu es l'un des nombreux mainteneurs pour les paquets PHP, mais sais-tu au moins combien de paquets sont disponibles sur Nix à l'heure actuelle ?

Pol : Oui, entre 90 000 et 100 000 paquets. C'est le plus grand dépôt de paquets disponible. D'après Repology, c'est le plus grand.

Marine : Ouah ! Alors, comment ça marche ? Imaginons qu'il y ait un nouvel outil, comment décidez-vous des paquets que vous proposez ?

Pol : Si vous voulez ajouter un paquetage dans Nix, il vous suffit de créer un fichier dans un répertoire spécifique du référentiel. Ce fichier est en fait la recette pour construire le programme que vous voulez. Vous décrirez donc dans ce fichier comment construire le programme. Et à l'intérieur de ce fichier, vous aurez très probablement une ligne qui dira, voici le numéro de version 1.2.3. Et vous aurez aussi ce que nous appelons le hash. En fait, à la fin de la construction, le programme prend un hash du résultat. Bien sûr, ce n'est pas techniquement vrai, mais je vais le dire ainsi pour le moment, même si ce n'est pas tout à fait vrai techniquement. Il prend un hachage du contenu et ce hachage doit être écrit dans le fichier. Ainsi, vous pouvez vous assurer qu'à chaque fois qu'il est compilé sur votre machine ou sur la machine de quelqu'un d'autre, il a le même hachage et vous pouvez le comparer, les constructions sont correctes.

Marine : C'est comme un contrôle d'intégrité.

Pol : Oui. Bien sûr, techniquement, ce n'est pas comme ça que ça se passe, mais c'est juste pour expliquer grossièrement comment ça se passe. Ce qui est génial, c'est que sur le dépôt de Nix OS, il y a un robot qui surveille le dépôt à la recherche de paquets périmés. Et à chaque fois qu'il découvre quelque chose d'obsolète, il envoie une demande de mise à jour au projet en disant, hey, ce paquet a besoin d'une mise à jour. Voici la demande de mise à jour. Il y a généralement deux lignes qui modifient la version et le hachage. Et cela se fait automatiquement. C'est donc le dépôt le plus à jour que l'on puisse trouver sur Internet. Merci à cette chose.

Marine : C'est incroyable. Est-ce que c'est un bot que tu as aussi construit chez Nix ou est-ce que c'est un tiers ?

Pol : C'est un bot tiers qui est activé sur Nix depuis des années, je crois. Et il met à jour tous les paquets comme ça.

Marine : C'est génial.

Pol : Et il envoie un ping aux mainteneurs dès que c'est fait. Donc, on est au courant quand il y a une mise à jour, on peut la tester. Et oui, c'est génial.

Marine : Cool. Alors, ce fichier, est-ce qu'il utilise le langage de programmation dont tu as parlé ?

Pol : Oui. C'est une recette écrite en Nix, bien sûr. Oui.

Marine : Donc, oui. Cela n'aurait pas pu être fait avec un langage existant. Qu'est-ce qui vous a poussé à créer vos propres langages ?

Pol : Alors, Nix est le résultat d'une thèse de doctorat d'Ilko Dolstra aux Pays-Bas il y a 20 ans. Dans cette thèse, il expliquait pourquoi un langage avait été créé pour cela. Bien sûr, on peut s'interroger sur la raison pour laquelle un langage particulier a été choisi au lieu d'utiliser quelque chose d'existant. Pour moi, ce n'est pas un problème car je pense que c'est une bonne idée de créer un langage spécifique pour cela, qui est fonctionnel et paresseux. La paresse et la programmation fonctionnelle, j'ai trouvé ce concept vraiment étonnant. Et c'est quelque chose que nous n'avons pas en PHP, mais nous pouvons l'imiter, mais nous ne l'avons pas. Et Nix utilise ces concepts. Et pour le déploiement et pour décrire ce que nous voulons, c'est tout simplement parfait. Je pense que certaines personnes disent que Nix n'est pas beau, mais en fait c'est juste comme un fichier JSON où vous ajoutez des fonctions. Cela ressemble beaucoup à JSON. Et il y a des initiatives comme les Geeks Projects. C'est fondamentalement la même chose que Nix, sauf qu'au lieu de réinventer un langage comme Nix, ils ont réutilisé un langage existant, qui est basé sur Lisp, qui est GIL. C'est exactement le même concept. Il est un peu plus verbeux que le langage Nix, mais il fait essentiellement la même chose.

Marine : Le langage évolue-t-il encore ? Vous introduisez de nouvelles choses ou est-ce qu'il...

Pol : Dans Nix ?

Marine : Oui. Est-ce suffisant pour faire ce que...

Pol : En fait, la langue est activement maintenue. Oui. Et il y a des nouveautés. Peut-être pas dans le langage lui-même parce qu'il est assez stable, mais dans les bibliothèques qui l'entourent, il y a toujours de nouvelles choses. Je ne suis pas vraiment impliqué dans le développement du langage Nix lui-même, mais plutôt dans les paquets. Mais oui, c'est toujours activement développé et maintenu depuis 20 ans maintenant.

Marine : C'est incroyable. Alors par exemple, pour toi en tant que membre de l'équipe principale, quelle est ta contribution typique ?

Pol : Par exemple, ma plus grande contribution jusqu'à présent est liée à PHP. Avant de faire cette contribution, il n'était pas possible de construire une application PHP de manière reproductible. Cela signifie que vous avez peut-être déjà essayé. Lorsque vous essayez d'installer Composer dans votre application, cela crée un répertoire vendor. Et si vous prenez une somme de contrôle de ce répertoire, la somme de contrôle sera toujours différente. Bien sûr, et cela a été corrigé dans Composer 2.6.4. Il s'agit d'un correctif d'une seule ligne que j'ai fait il y a deux ou trois mois. Donc maintenant, si vous installez Composer, cela aidera toujours la même chose. C'est donc déjà très bien pour le gestionnaire de paquets, qui est Composer. Et avec Nix, ce que j'ai fait, c'est juste un outil qui vous permet de, ok, c'est mon application, créer un paquet que je peux distribuer dans le monde entier de cette application. Ainsi, la personne qui utilise une application en PHP écrite en Nix ne saura probablement pas qu'elle est écrite en PHP, parce qu'elle exécutera simplement Nix, puis le nom du paquet et l'application s'exécutera sur cette machine. Parce que l'application décrira dans sa recette toutes les dépendances dont elle a besoin et comment elle doit être exécutée. C'est donc un concept très intéressant. Et ce que j'ai fait, c'est que le constructeur, comment pouvons-nous nous assurer que lorsque je lance phpStan, il fonctionne. Mais phpStan est distribué en différentes saveurs sur internet, soit par les binaires précompilés, soit en utilisant les sources. Et mon constructeur vous permet de lire le JSON du compositeur, de télécharger toutes les dépendances de manière isolée, de les placer quelque part, de construire le répertoire du vendeur et ensuite de faire le lien avec les binaires que phpStan fournit. Et tout cela est fait maintenant et fonctionne très bien. Je suis super content de voir une pull request qui supprime tout ce qu'ils faisaient avant pour arriver à faire ça. Et oui, c'était tout un travail de le faire. Oui, c'était tout un travail parce que je ne savais pas comment faire. Cela a pris du temps parce que je voulais faire les choses correctement. Et c'est assez délicat, parce qu'imaginez que demain, je découvre un problème dans mon builder, toutes les applications PHP qui utilisent mon builder pourraient avoir besoin de mettre à jour leur hash. Donc c'est très, très excitant d'avoir été fusionné, j'avais aussi un peu peur de le publier. Mais maintenant ça tourne et ça fonctionne bien, en fait, je suis surpris de n'avoir eu à corriger qu'une ou deux petites choses, mais rien, rien de vraiment important. Donc oui, je suis super content du résultat.

Marine : Tu as en quelque sorte résolu un problème récurrent avec les dépendances, ce qui est toujours difficile.

Pol : Oui, c'est quelque chose que je n'ai pas depuis maintenant trois ou quatre ans. Oui, sur mon ordinateur portable, je peux vous dire que l'utilisation de Nix a complètement changé la façon dont je vois un logiciel, la construction d'un logiciel, le déploiement d'un logiciel. Ce sont des problèmes du passé. Cela ne s'est plus jamais produit, en fait.

Marine : Ça a l'air d'être une belle vie. Ça m'intéresse. Je suis intéressé.

Pol : Oui, en effet. Oui, en effet. Et quand j'ai vu tous mes collègues se débattre avec ça, je leur ai dit, écoutez, installez Nix, et ensuite je vous montrerai comment vous pouvez créer un environnement rapide en utilisant OpenSSL si vous en avez besoin. C'est ce qui s'est passé la semaine dernière. Nous avions juste besoin d'OpenSSL one pour tester une commande. Mais comme ils utilisaient une distribution spécifique, ils ne pouvaient pas le compiler et l'utiliser. Sinon, cela aurait tout cassé. Nous l'avons donc fait dans une machine virtuelle en utilisant Nix et cela a fonctionné immédiatement.

Marine : Oui. L'isolement. Incroyable. Wow. Combien de personnes travaillent sur le noyau ? Ce que vous faites, par exemple, parce que je suppose que Nix OS est un peu différent du reste de Nix, ou est-ce que c'est la même équipe ? Comment cela fonctionne-t-il ?

Pol : Aujourd'hui à la SymfonyCon de Bruxelles, j'ai rencontré une personne qui est aussi un contributeur et un utilisateur que je ne connaissais pas.

Marine : Ouah !

Pol : Nous sommes donc trois. J'ai également assisté à cinq conférences et trois d'entre elles parlaient de reproductibilité. Donc je pense que c'est une vague qui ne nous a pas encore mangé dans la figure, mais qui va arriver à un moment donné. Et Nix sera de plus en plus répandu dans la communauté. Je pense donc qu'il y aura de plus en plus de contributeurs. Mais pour l'instant, dans le projet Nix, dans le domaine PHP de Nix, nous sommes six et nous ne faisons presque rien parce que nous sommes harcelés par le robot qui nous dit : " Hé, il y a une nouvelle version de PHP et PHP est fini ". Pouvez-vous me dire si je peux le fusionner ? Oui, non. Ensuite, il fusionne et c'est tout. Mais c'est ce que je fais. C'est ce que nous faisons. Et je ne vois pas ce qu'il y a d'énorme à faire en ce moment en PHP et Nix. Cela fonctionne très bien.

Marine : L'automatisation est la clé, n'est-ce pas ?

Pol : Tout est écrit dans un fichier. Donc une fois que c'est fait et que c'est très bien fait, je n'ai plus besoin d'y toucher.

Marine : Mais qu'en est-il du reste ? Parce qu'il n'y a pas que PHP, bien sûr. Savez-vous combien de personnes travaillent au total ?

Pol : Oh non, je ne peux pas vous le dire. Le dépôt de paquets Nix est dans le top 10 des dépôts les plus actifs sur GitHub. Cela peut donc vous donner une idée.

Marine : C'est incroyable que je n'en aie jamais entendu parler et que ce soit l'un des 10 projets les plus actifs.

Pol : Oui, mais j'ai exactement le même sentiment que toi. Comment se fait-il qu'en 20 ans, je n'ai jamais entendu parler de ce projet qui est tellement extraordinaire que je veux montrer au monde comment il fonctionne. C'est tellement extraordinaire. J'aurais aimé pouvoir en parler ici à Symphony, mais ce sera probablement pour l'année prochaine. Mais oui, c'est un outil extraordinaire.

Je ne peux que le recommander.

Marine : Alors comment ferait-on si on voulait l'essayer ? Tu m'as dit, ok, il y a un Graphic Installer, tu peux aller chercher l'OS ou juste le gestionnaire de paquets. Qu'en est-il de la contribution ? Avez-vous des besoins en dehors de PHP ?

Pol : Cela dépend de ce que vous faites avec PHP, mais comme je suis un développeur PHP, je m'assure déjà que tous les besoins des développeurs PHP sont là et que vous n'avez besoin de rien. Il suffit donc d'installer Nix. Il faut 55 secondes pour l'installer.

Marine : 55, c'est précis.

Pol : Je connais exactement le temps parce que j'ai fait une présentation à Munich le mois dernier et j'ai fait des petits screencasts de l'installation. Cela a pris 55 secondes.

Marine : Ouah !

Pol : Donc c'est juste un binaire en fin de compte que vous installez sur votre machine et ensuite vous l'utilisez. Cela dépend de ce que vous voulez faire. Si vous voulez utiliser Nix OS, cela peut prendre un peu plus de temps pour l'installer. Mais si vous voulez juste jouer avec Nix et faire exactement la même chose que moi sur ma machine, qui est Nix OS, vous pouvez utiliser Nix sur votre machine, quelle que soit la couleur, quel que soit le système d'exploitation.

Marine : Y a-t-il de la documentation ? Par où commencer ?

Pol : La documentation dans Nix est généralement le point de douleur, mais il y a beaucoup d'initiatives récemment et beaucoup de travail qui a été fait récemment pour l'améliorer. La documentation est donc là et il manque parfois certaines parties, mais elle est améliorée tous les jours. De nombreuses personnes y travaillent. Les personnes qui y travaillent sont formidables et font du très bon travail. Et il y a tellement de choses à documenter. Imaginez un référentiel contenant près de 100 000 paquets. Il y a beaucoup de choses à documenter.

Marine : C'est donc peut-être là que de nouveaux contributeurs pourraient aider ?

Pol : Oui, sans aucun doute. Nous recherchons des personnes qui aident à la documentation, à toutes ces choses.

Marine : Quel est l'avenir de Nix ? Avez-vous...

Pol : Pour l'instant, Nix est, comment dire ça en anglais correctement, il est au milieu d'un coin. C'est mon point de vue. Je peux me tromper du point de vue de quelqu'un qui est là depuis le début, mais c'est comme ça que je vois les choses en tant que nouveau venu dans le monde de Nix. En gros, Nix est dans un virage, il court à toute vitesse dans un virage. Imaginez que vous êtes dans une voiture et que vous êtes dans un virage. Et pourquoi ? Parce que vous avez la façon traditionnelle d'utiliser Nix, comme Jerome l'a présenté pendant sa présentation, en utilisant Nix-shell, puis vous déclarez vos dépendances et vous travaillez. Et il y a une sorte de nouvelle façon maintenant depuis je pense deux ans, oui, depuis deux ans, qui s'appelle le Flake. Et le fichier Flake est essentiellement un moyen de décrire votre infrastructure locale pour votre projet. Et c'est extrêmement flexible. C'est extrêmement... En fait, il est facile à utiliser. Vous avez juste besoin que quelqu'un vous l'explique la première fois et ensuite tout va bien. Il y a donc deux façons d'utiliser Nix à l'heure actuelle. Soit vous utilisez l'ancienne méthode, c'est comme ça que je l'appelle, même si ce n'est pas vraiment le cas, soit vous utilisez la méthode Flake. Le fait est que la méthode Flake est encore considérée comme expérimentale. Mais elle est totalement stable et les gens travaillent à la rendre stable en ce moment même. Il y a des entreprises construites autour de cet outil en ce moment même avec Flake et il y a des projets construits autour de Flake. Ce n'est donc pas près de disparaître. C'est quelque chose d'extrêmement stable. Tous les membres de la communauté disent que c'est stable. Vous pouvez l'utiliser sans crainte. Oui, utilisez-le. Vous verrez la différence. Et c'est ce que j'utilise. J'ai immédiatement commencé à utiliser Flake quand j'ai commencé Nix. Je ne sais pas grand-chose de l'ancienne méthode. Je le sais parce que je le sais. Mais j'utilise Flake tout le temps. C'est une merveilleuse ingénierie qui doit être découverte par un grand nombre de personnes.

Marine : Eh bien, j'espère que ce sera le cas maintenant. En gros, ce que j'entends, c'est que tu es une sorte de développeur paresseux, mais dans le bon sens du terme. Oui, c'est comme si tu pouvais automatiser, simplifier les choses et les partager avec les gens, c'est ce que tu aimes, n'est-ce pas ?

Pol : Oui, en quelque sorte, oui.

Marine : Je peux le comprendre. Merci beaucoup de m'avoir parlé de Nix. J'ai vraiment envie de l'essayer maintenant. J'espère que les gens découvriront quelque chose. C'est incroyable ce qu'on découvre tous les jours dans l'open source, des choses que je connais depuis 20 ans. Maintenant, j'ai quelques questions idiotes à vous poser, si vous le voulez bien. Oui, je le demande à tous les invités, mais si vous aviez la permission de faire ce que vous voulez pendant une journée entière, que feriez-vous ?

Pol : Qu'est-ce que je ferais en termes de technologies de l'information ou tout simplement dans ma vie ?

Marine : Non, en général, juste dans la vie, si vous aviez la permission de faire n'importe quoi, quelque chose que d'habitude vous ne pourriez pas faire.

Pol : Oh, je passerais du temps avec des gens que je ne vois pas souvent et avec ma propre famille très probablement. Et je passerais du temps avec des gens loin des ordinateurs, pas avec un ordinateur. Je passe trop de temps devant ces écrans. Alors je pense que je prendrais une journée, je laisserais mon ordinateur portable quelque part dans la maison et je partirais faire quelque chose avec toute la famille.

Marine : Oui, mais c'est déjà possible. Ce n'est pas interdit, non ?

Pol : Oui, mais il y a toujours quelque chose qui ne marche pas. Je ne suis pas là, je ne suis pas disponible. Est-ce qu'on peut faire ça un autre jour ? Ou alors, vous savez comment ça se passe.

Marine : Donc la vie simple ?

Pol : Oui, sans aucun doute.

Marine : Bien, intéressant. Et si vous pouviez créer votre propre permission ? Que feriez-vous ?

Pol : Mon autorisation serait de... en termes de système de fichiers ?

Marine : N'importe quoi.

Pol : Oh, la permission.

Marine : La vie, tout ce que vous voulez. Quelqu'un a plié la physique plus tôt aujourd'hui quand j'ai interviewé Ryan.

Pol : Je ne parlerais pas de permission, mais plutôt de contrainte. Assurez-vous que le logiciel que vous créez est reproductible. Cela aiderait certainement les technologies de l'information. Évidemment, dans le contexte de l'informatique, c'est très utile. Assurez-vous que lorsque vous faites quelque chose, vous pouvez le reproduire pour tout le monde et utiliser des outils open source.

Marine : Évidemment, c'est une évidence. Vous n'avez pas le choix dans ce podcast.

Pol : En effet.

Marine : D'accord, et pour finir, quel est votre plus grand pouvoir ?

Pol : Oh, la paresse.

Marine : J'adore ça.

Pol : La paresse. Et quand je suis face à un problème, j'aime le comprendre. Et comprendre le problème, cela ne veut pas dire trouver une solution. Mais pour moi, cela signifie trouver la racine du problème, ce qui signifie aussi diviser le problème en problèmes plus petits et les résoudre en essayant de trouver une solution pour eux. Pour tous ces petits problèmes, un par un. Et ce serait peut-être une force. Donc, la paresse et ce genre de choses. Je ne sais pas comment on peut l'appeler.

Marine : Oui, la capacité à diviser en tâches gérables.

Pol : Je ne sais pas.

Marine : L'approche étape par étape. Je ne sais pas comment l'appeler.

Pol : Je ne sais pas comment l'appeler.

Marine : Au lieu de se concentrer sur le problème global, on peut le diviser en plusieurs...

Pol : En le divisant, on peut facilement l'expliquer à n'importe qui. On peut partager le problème et obtenir de l'aide facilement.

Marine : Bien sûr, tu es un analyste paresseux.

Pol : Oui, peut-être. C'est une bonne description, je pense. Je devrais la mettre sur LinkedIn.

Marine : Oui, faites-moi savoir comment ça se passe. Oui. Merci beaucoup, Pol. C'était très intéressant.

Pol : Je vous remercie.

Marine : J'ai hâte de faire connaître Nix et de le tester moi-même.

Pol : Oui, merci beaucoup pour l'invitation.

Votre meilleur travail
est à l'horizon

Essai gratuit
Discord
© 2025 Platform.sh. All rights reserved.