Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Source : Wiki­me­dia. Ce logo est pro­té­gé par la marque dépo­sée d’Anaconda Inc.

Conda est appa­ru en 2012 et a été dis­tri­bué par Conti­nuum Ana­ly­tics, connue sous le nom d’Ana­con­da Inc depuis 2017. Conda est dis­tri­bué sous la licence MIT, l’une des licences open-source les plus per­mis­sives, per­met­tant aux uti­li­sa­teurs d’adopter, d’adapter et de par­ta­ger le logi­ciel presque sans res­tric­tions.

Conda a été conçu pour gérer les envi­ron­ne­ments Python, mais il s’est rapi­de­ment impo­sé comme un ges­tion­naire de paquets et d’environnements mul­ti­pla­te­forme capable de gérer n’importe quel lan­gage, grâce à sa flexi­bi­li­té.

Avec la crois­sance du nombre d’outils dis­po­nibles et les dépen­dances de plus en plus com­plexes néces­saires pour faire fonc­tion­ner les outils, l’avènement d’un outil comme Conda était salu­taire. En plus de pou­voir résoudre les pro­blèmes de “l’enfer des dépen­dances”, il gère éga­le­ment les dif­fi­cul­tés appor­tées par les dif­fé­rences entre les pla­te­formes dis­po­nibles (macOS, Win­dows, Linux).

Illus­tra­tion de l'enfer des dépen­dances qui peut être réso­lu grâce à
l'utilisation de Conda.
Cette illus­tra­tion par xkcd​.com est sou­mise à la licence CC BY-SA

Comment fonctionne Conda :

Les recettes

Il y a une recette par paquet (outil). Cette recette est un fichier YAML qui contient de nom­breuses méta­don­nées décri­vant l’outil (où le télé­char­ger, sa ver­sion, sa licence, etc.), les dépen­dances néces­saires pour le com­pi­ler, et les dépen­dances néces­saires pour le fonc­tion­ne­ment du paquet. Une des forces de Conda réside dans le fait qu’on puisse défi­nir les ver­sions des dépen­dances com­pa­tibles, aus­si bien une ver­sion pré­cise qu’une gamme de ver­sions. En plus de ce fichier YAML, la recette néces­site un fichier « build​.sh » qui défi­nit les com­mandes néces­saires pour construire le paquet à par­tir du code source ou des res­sources dis­po­nibles. Par exemple, si le paquet néces­site une com­pi­la­tion, ce fichier contien­dra les com­mandes de com­pi­la­tion.

La distribution des paquets

Lorsque l'utilisateur ins­talle un paquet avec Conda, Conda télé­charge des paquets déjà com­pi­lés. En ce sens, l’installation est très rapide. La par­tie la plus lente étant de résoudre les dépen­dances qui doivent être télé­char­gées. En effet, c’est un pro­blème NP-com­plet. Plus il y a de dépen­dances, plus il y a de pos­si­bi­li­tés d’incompatibilité des ver­sions des dépen­dances deman­dées.

Les paquets pré­com­pi­lés prêts à être télé­char­gés sont géné­rés à par­tir des recettes Conda et héber­gés gra­tui­te­ment par Ana­con­da Inc dans leurs dépôts. Il sont acces­sibles par Conda grâce à la défi­ni­tion de canaux, qui cor­res­pondent à une URL ou à un ser­veur héber­geant les paquets. Un canal peut conte­nir plu­sieurs dépôts (exemple : dif­fé­rents sys­tèmes d’exploitation, archi­tec­tures, ver­sions de paquets, etc.).

Méfions-nous de l'anaconda qui dort…
Cette pho­to par Ted est sou­mise à la licence CC BY-SA

Anaconda Inc

Ana­con­da Inc a créé de nom­breuses recettes, et les com­pile puis les dis­tri­bue au tra­vers de ses « canaux ». Ces canaux peuvent être vus comme des accès à des registres d’outils com­pi­lés.

En 2014, paral­lè­le­ment aux paquets gérés par Ana­con­da Inc, Conda-forge est appa­ru. Il s’agit d’une com­mu­nau­té de ges­tion de paquets pour le ges­tion­naire de paquets Conda, qui offre un dépôt cen­tra­li­sé de paquets open-source. L’objectif prin­ci­pal de Conda-forge est de four­nir des paquets de haute qua­li­té, sou­vent main­te­nus par la com­mu­nau­té, pour diverses pla­te­formes et sys­tèmes d’exploitation.

Contrai­re­ment aux dépôts offi­ciels gérés de A à Z par Ana­con­da Inc, Conda-forge repose sur un sys­tème de gou­ver­nance com­mu­nau­taire, dans lequel n’importe qui peut contri­buer en pro­po­sant des paquets ou en amé­lio­rant des recettes de paquets exis­tantes. C’est une res­source essen­tielle pour les uti­li­sa­teurs de Conda, en par­ti­cu­lier dans les domaines scien­ti­fiques, car elle contient une large col­lec­tion de paquets qui ne sont pas dis­po­nibles dans les dépôts stan­dards d’Anaconda.

De la même manière, une com­mu­nau­té bio­in­for­ma­tique – Bio­con­da – s’est fédé­rée à par­tir de 2016, qui se concentre sur des paquets logi­ciels spé­ci­fi­que­ment conçus pour le domaine de la bio­in­for­ma­tique. Comme avec la com­mu­nau­té Conda-forge, il y a eu effet boule de neige. Plus le nombre d’outils dis­po­nibles gran­dis­sait, plus la com­mu­nau­té était inté­res­sée, impli­quée, et a mis à dis­po­si­tion des recettes pour leurs propres outils ou des outils tiers (licence per­met­tant).

Un détail impor­tant alors est que, même si les recettes et les paquets com­pi­lés sont contri­buées par la com­mu­nau­té, l'infrastructure de sto­ckage et de dis­tri­bu­tion est sous contrôle exclu­sif d'Anaconda !

En paral­lèle, Ana­con­da Inc dis­tri­bue allè­gre­ment son inter­face gra­phique appe­lée Ana­con­da, qui est une dis­tri­bu­tion com­plète pour la data science, incluant Conda, Python, et envi­ron 300 biblio­thèques.

Ana­con­da et l’accès aux paquets dans les ser­veurs gérés par Ana­con­da Inc étant gra­tuits pour les orga­nismes de recherche, la com­mu­nau­té scien­ti­fique, se sen­tant pro­té­gée par la noblesse de leur dis­ci­pline, ne s’est jamais vrai­ment émue de la bon­té d’Ana­con­da Inc.

La gra­tui­té a lar­ge­ment par­ti­ci­pé à l’adoption de l’écosystème Conda par la com­mu­nau­té scien­ti­fique.

Bas les masques… en mars 2024 Ana­con­da Inc change sa license, ce qui ne fait pas du tout plai­sir aux ins­ti­tuts de recherche.
Cette illus­tra­tion par ctlws@​svc.​edu est sou­mise à la licence CC0

Et là… c’est le drame ! En mars 2024, Ana­con­da Inc décide de faire évo­luer la licence Ana­con­da. Le cœur des chan­ge­ments réside dans la défi­ni­tion d’Anaconda de « Orga­ni­za­tio­nal Use ». Selon les nou­velles condi­tions de licence, toute orga­ni­sa­tion (les enti­tés gou­ver­ne­men­tales et les orga­ni­sa­tions à but non lucra­tif) comp­tant au moins 200 employés ou contrac­tants est désor­mais tenue d’acheter une licence payante pour uti­li­ser le logi­ciel d’Anaconda ou des paquets pro­ve­nant de canaux gérés par Ana­con­da.

D’un coup d’un seul, l’ensemble des orga­nismes de recherche (de plus de 200 employés) font face à des fac­tures salées de 50 $ par mois par employé qui uti­lise Ana­con­da ou les canaux de paquets gérés par Ana­con­da.

Où en sommes-nous aujourd’hui :

  • Conda, le ges­tion­naire de paquets, est gra­tuit, open-source et acces­sible à tous.
  • Les paquets Conda pro­ve­nant de canaux publics tels que Conda-forge, Bio­con­da ou tout autre canal com­mu­nau­taire, sont gra­tuits, open-source et acces­sibles à tous.
  • Les paquets Conda gérés par Ana­con­da Inc et la dis­tri­bu­tion Ana­con­da sont gra­tuits si et seule­ment si :
    • Votre orga­ni­sa­tion compte moins de 200 employés, ou
    • Votre orga­ni­sa­tion est exemp­tée (par exemple, les étu­diants ou les éta­blis­se­ments d’enseignement, à condi­tion qu’ils soient uti­li­sés pour des cours basés sur le pro­gramme).

Com­ment évi­ter à mon ins­ti­tut de payer une licence alors que Conda est gra­tuit et que les paquets que j’utilise sont open-source ?

  • Ban­nir Ana­con­da Dis­tri­bu­tion

Il faut se tour­ner vers d’autres alter­na­tives : pré­fé­ren­tiel­le­ment Mini­forge.

  • Ban­nir les canaux sous licence
    • Véri­fier et enle­ver les canaux sous licence dans la confi­gu­ra­tion Conda.
    • Évi­ter qu’autrui uti­lise les canaux sous licence (lors du par­tage d’environnements).

L’ensemble des pro­cé­dures est décrit ici.

Les recettes main­te­nues par Conda-forge et Bio­con­da sont gra­tuites, open-source et acces­sibles à tous. La ver­sion com­pi­lée de ces recettes est dis­tri­buée via le ser­veur ana​con​da​.org. La com­mu­nau­té se pose la ques­tion ­à juste titre de savoir si Ana­con­da Inc conti­nue­ra à dis­tri­buer ces paquets sans contre­par­tie et réflé­chit à dis­tri­buer ces paquets via ses propres moyens. On peut effec­ti­ve­ment s’imaginer un sys­tème décen­tra­li­sé comme pour les paquets R avec CRAN…

Conda est omni­pré­sent dans la recherche, que ce soit pour gérer des envi­ron­ne­ments locaux, sur HPC, ou encore pour géné­rer des contai­ners conte­nant toutes les dépen­dances néces­saires. Les pro­chains mois et années vont être inté­res­sants… Les com­mu­nau­tés Conda-forge et Bio­con­da vont-elles rele­ver le défi de s’émanciper d’Ana­con­da Inc ? En tout cas, du côté des uti­li­sa­teurs, il faut s’adapter. On peut tou­jours uti­li­ser Conda en fai­sant atten­tion d’éviter Ana­con­da et les paquets gérés par Ana­con­da Inc. On peut reve­nir à une ges­tion plus com­par­ti­men­tée pour gérer nos dépen­dances (par exemple, PyPI pour Python, CRAN pour R, CPAN pour Perl), le tout dans des contai­ners afin d’éviter des incom­pa­ti­bi­li­tés entre dépen­dances d’outils. Ou tout sim­ple­ment uti­li­ser d’autres outils alter­na­tifs à Conda comme Easy­Build, Spack, Guix…

Mer­ci à Marion P. et bonob pour la relec­ture.

P.S : l'IA a été uti­li­sé pour for­ma­ter le texte et cor­ri­ger les fautes d'orthographes.

Vous avez aimé ? Dites-le nous !

Moyenne : 5 /​ 5. Nb de votes : 1

Pas encore de vote pour cet article.

Partagez cet article




Commentaires

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.