Conda est apparu en 2012 et a été distribué par Continuum Analytics, connue sous le nom d’Anaconda Inc depuis 2017. Conda est distribué sous la licence MIT, l’une des licences open-source les plus permissives, permettant aux utilisateurs d’adopter, d’adapter et de partager le logiciel presque sans restrictions.
Conda a été conçu pour gérer les environnements Python, mais il s’est rapidement imposé comme un gestionnaire de paquets et d’environnements multiplateforme capable de gérer n’importe quel langage, grâce à sa flexibilité.
Avec la croissance du nombre d’outils disponibles et les dépendances de plus en plus complexes nécessaires pour faire fonctionner les outils, l’avènement d’un outil comme Conda était salutaire. En plus de pouvoir résoudre les problèmes de “l’enfer des dépendances”, il gère également les difficultés apportées par les différences entre les plateformes disponibles (macOS, Windows, Linux).
Comment fonctionne Conda :
Les recettes
Il y a une recette par paquet (outil). Cette recette est un fichier YAML qui contient de nombreuses métadonnées décrivant l’outil (où le télécharger, sa version, sa licence, etc.), les dépendances nécessaires pour le compiler, et les dépendances nécessaires pour le fonctionnement du paquet. Une des forces de Conda réside dans le fait qu’on puisse définir les versions des dépendances compatibles, aussi bien une version précise qu’une gamme de versions. En plus de ce fichier YAML, la recette nécessite un fichier « build.sh » qui définit les commandes nécessaires pour construire le paquet à partir du code source ou des ressources disponibles. Par exemple, si le paquet nécessite une compilation, ce fichier contiendra les commandes de compilation.
La distribution des paquets
Lorsque l'utilisateur installe un paquet avec Conda, Conda télécharge des paquets déjà compilés. En ce sens, l’installation est très rapide. La partie la plus lente étant de résoudre les dépendances qui doivent être téléchargées. En effet, c’est un problème NP-complet. Plus il y a de dépendances, plus il y a de possibilités d’incompatibilité des versions des dépendances demandées.
Les paquets précompilés prêts à être téléchargés sont générés à partir des recettes Conda et hébergés gratuitement par Anaconda Inc dans leurs dépôts. Il sont accessibles par Conda grâce à la définition de canaux, qui correspondent à une URL ou à un serveur hébergeant les paquets. Un canal peut contenir plusieurs dépôts (exemple : différents systèmes d’exploitation, architectures, versions de paquets, etc.).
Anaconda Inc
Anaconda Inc a créé de nombreuses recettes, et les compile puis les distribue au travers de ses « canaux ». Ces canaux peuvent être vus comme des accès à des registres d’outils compilés.
En 2014, parallèlement aux paquets gérés par Anaconda Inc, Conda-forge est apparu. Il s’agit d’une communauté de gestion de paquets pour le gestionnaire de paquets Conda, qui offre un dépôt centralisé de paquets open-source. L’objectif principal de Conda-forge est de fournir des paquets de haute qualité, souvent maintenus par la communauté, pour diverses plateformes et systèmes d’exploitation.
Contrairement aux dépôts officiels gérés de A à Z par Anaconda Inc, Conda-forge repose sur un système de gouvernance communautaire, dans lequel n’importe qui peut contribuer en proposant des paquets ou en améliorant des recettes de paquets existantes. C’est une ressource essentielle pour les utilisateurs de Conda, en particulier dans les domaines scientifiques, car elle contient une large collection de paquets qui ne sont pas disponibles dans les dépôts standards d’Anaconda.
De la même manière, une communauté bioinformatique – Bioconda – s’est fédérée à partir de 2016, qui se concentre sur des paquets logiciels spécifiquement conçus pour le domaine de la bioinformatique. Comme avec la communauté Conda-forge, il y a eu effet boule de neige. Plus le nombre d’outils disponibles grandissait, plus la communauté était intéressée, impliquée, et a mis à disposition des recettes pour leurs propres outils ou des outils tiers (licence permettant).
Un détail important alors est que, même si les recettes et les paquets compilés sont contribuées par la communauté, l'infrastructure de stockage et de distribution est sous contrôle exclusif d'Anaconda !
En parallèle, Anaconda Inc distribue allègrement son interface graphique appelée Anaconda, qui est une distribution complète pour la data science, incluant Conda, Python, et environ 300 bibliothèques.
Anaconda et l’accès aux paquets dans les serveurs gérés par Anaconda Inc étant gratuits pour les organismes de recherche, la communauté scientifique, se sentant protégée par la noblesse de leur discipline, ne s’est jamais vraiment émue de la bonté d’Anaconda Inc.
La gratuité a largement participé à l’adoption de l’écosystème Conda par la communauté scientifique.
Et là… c’est le drame ! En mars 2024, Anaconda Inc décide de faire évoluer la licence Anaconda. Le cœur des changements réside dans la définition d’Anaconda de « Organizational Use ». Selon les nouvelles conditions de licence, toute organisation (les entités gouvernementales et les organisations à but non lucratif) comptant au moins 200 employés ou contractants est désormais tenue d’acheter une licence payante pour utiliser le logiciel d’Anaconda ou des paquets provenant de canaux gérés par Anaconda.
D’un coup d’un seul, l’ensemble des organismes de recherche (de plus de 200 employés) font face à des factures salées de 50 $ par mois par employé qui utilise Anaconda ou les canaux de paquets gérés par Anaconda.
Où en sommes-nous aujourd’hui :
- Conda, le gestionnaire de paquets, est gratuit, open-source et accessible à tous.
- Les paquets Conda provenant de canaux publics tels que Conda-forge, Bioconda ou tout autre canal communautaire, sont gratuits, open-source et accessibles à tous.
- Les paquets Conda gérés par Anaconda Inc et la distribution Anaconda sont gratuits si et seulement si :
- Votre organisation compte moins de 200 employés, ou
- Votre organisation est exemptée (par exemple, les étudiants ou les établissements d’enseignement, à condition qu’ils soient utilisés pour des cours basés sur le programme).
Comment éviter à mon institut de payer une licence alors que Conda est gratuit et que les paquets que j’utilise sont open-source ?
- Bannir Anaconda Distribution
Il faut se tourner vers d’autres alternatives : préférentiellement Miniforge.
- Bannir les canaux sous licence
- Vérifier et enlever les canaux sous licence dans la configuration Conda.
- Éviter qu’autrui utilise les canaux sous licence (lors du partage d’environnements).
L’ensemble des procédures est décrit ici.
Les recettes maintenues par Conda-forge et Bioconda sont gratuites, open-source et accessibles à tous. La version compilée de ces recettes est distribuée via le serveur anaconda.org. La communauté se pose la question à juste titre de savoir si Anaconda Inc continuera à distribuer ces paquets sans contrepartie et réfléchit à distribuer ces paquets via ses propres moyens. On peut effectivement s’imaginer un système décentralisé comme pour les paquets R avec CRAN…
Conda est omniprésent dans la recherche, que ce soit pour gérer des environnements locaux, sur HPC, ou encore pour générer des containers contenant toutes les dépendances nécessaires. Les prochains mois et années vont être intéressants… Les communautés Conda-forge et Bioconda vont-elles relever le défi de s’émanciper d’Anaconda Inc ? En tout cas, du côté des utilisateurs, il faut s’adapter. On peut toujours utiliser Conda en faisant attention d’éviter Anaconda et les paquets gérés par Anaconda Inc. On peut revenir à une gestion plus compartimentée pour gérer nos dépendances (par exemple, PyPI pour Python, CRAN pour R, CPAN pour Perl), le tout dans des containers afin d’éviter des incompatibilités entre dépendances d’outils. Ou tout simplement utiliser d’autres outils alternatifs à Conda comme EasyBuild, Spack, Guix…
Merci à Marion P. et bonob pour la relecture.
P.S : l'IA a été utilisé pour formater le texte et corriger les fautes d'orthographes.
Laisser un commentaire