Recherche et science

Software Heritage et Scikit-learn, préserver le code pour mieux faire avancer l’IA

Le logiciel est une part essentielle de notre patrimoine technique, mais il reste fragile face aux fermetures de plateformes et à l’obsolescence. Lancée par l’Inria, Software Heritage veut l’archiver à grande échelle. Scikit-learn illustre, de son côté, comment le code ouvert peut mettre l’apprentissage automatique à la portée de tous.

Des chercheurs consultent une archive de code source reliée à des outils d’apprentissage automatique.
Illustration : Actu.ai

Le monde numérique fonctionne sur du code, souvent invisible pour celles et ceux qui utilisent une application, consultent un site ou interagissent avec un service public. Pourtant, ce code est un savoir-faire collectif : il contient des méthodes, des choix techniques, des outils scientifiques et des briques sur lesquelles reposent d’innombrables services. Lorsqu’un dépôt disparaît, qu’une plateforme ferme ou qu’un projet n’est plus maintenu, une partie de cette mémoire peut s’effacer. C’est à ce risque que répond Software Heritage, tandis que Scikit-learn montre comment le logiciel ouvert rend l’intelligence artificielle concrètement utilisable.

À première vue, les deux noms ne désignent pas la même chose. Software Heritage est une infrastructure d’archivage du code source, Scikit-learn une bibliothèque permettant de construire des modèles d’apprentissage automatique en Python. Mais ils incarnent une même idée : l’innovation ne se résume pas à produire de nouveaux programmes. Elle suppose aussi de conserver les programmes existants, de pouvoir les étudier, les reproduire et les améliorer.

Software Heritage, une mémoire durable du code source

Lancée en 2016 à l’initiative de l’Inria, Software Heritage porte un objectif particulièrement vaste : collecter, préserver et partager les logiciels rendus publics sous forme de code source. Son initiateur, Robert Di Cosmo, défend l’idée que le code est devenu une composante du patrimoine culturel et scientifique contemporain. Une formule qui peut sembler abstraite, mais qui décrit une réalité très matérielle : les logiciels structurent la recherche, l’industrie, les administrations, les communications et une grande partie de la vie quotidienne.

Le code source correspond aux instructions lisibles et modifiables par les programmeurs. C’est lui qui permet de comprendre comment un logiciel a été fabriqué, de le corriger, de le réutiliser ou de vérifier son comportement. À l’inverse, un programme livré uniquement sous forme exécutable peut être utilisé, mais beaucoup plus difficilement étudié ou adapté.

Software Heritage ne se limite pas à entreposer une copie de fichiers. L’enjeu consiste à préserver les relations qui font l’histoire d’un projet : les versions successives, les répertoires, les modifications et les références entre composants. Une archive utile doit permettre de retrouver un état précis d’un logiciel, y compris longtemps après que son lieu de publication initial a changé ou disparu.

RepèreSoftware HeritageScikit-learn
NatureArchive universelle de code sourceBibliothèque Python d’apprentissage automatique
OrigineInitiative lancée par l’Inria en 2016Projet établi en 2007, issu de l’écosystème de l’Inria
Fonction principaleConserver et rendre retrouvable le patrimoine logiciel publicFournir des outils pour entraîner et évaluer des modèles
Public concernéDéveloppeurs, chercheurs, institutions, archivistesÉtudiants, scientifiques des données, chercheurs, entreprises
Enjeu communFaciliter la réutilisation et la transmission des connaissances logiciellesFaciliter une IA plus accessible et reproductible

Les chiffres donnent la mesure de l’ambition. L’initiative conserve environ 22 milliards de contenus de code, représentant près de 340 millions de projets. Le volume collecté double approximativement tous les deux ans. Cette croissance reflète à la fois l’intense activité du développement logiciel et la diversité des projets publiés : petites bibliothèques, outils de développement, logiciels de recherche, cadres de programmation ou applications complètes.

Pourquoi la préservation du code est-elle un enjeu scientifique ?

La science repose sur une exigence centrale : un résultat doit pouvoir être examiné et, autant que possible, reproduit. Or, dans de nombreuses disciplines, les calculs, les simulations et l’analyse de données dépendent désormais de logiciels. Publier uniquement un article ou un graphique ne suffit pas toujours à expliquer comment une conclusion a été obtenue. Il faut aussi pouvoir accéder aux programmes, aux versions utilisées et aux dépendances techniques.

Dans ce cadre, Software Heritage peut soutenir la science ouverte. Les chercheurs disposent d’un référentiel permettant de désigner et de retrouver du code source. Un autre laboratoire peut alors examiner la méthode employée, vérifier les traitements réalisés ou adapter l’outil à un nouveau jeu de données. Cette possibilité ne garantit pas à elle seule qu’une expérience sera parfaitement reproductible, car les données, le matériel informatique et les paramètres comptent aussi. Elle enlève néanmoins un obstacle majeur : la disparition ou l’imprécision du logiciel utilisé.

La conservation est également importante pour l’enseignement. Un étudiant peut apprendre à partir d’un projet historique, comprendre l’évolution d’une bibliothèque ou comparer différentes manières de résoudre un même problème. Dans un secteur où les outils évoluent vite, cette mémoire technique évite de confondre nouveauté et progrès durable.

L’archive peut aussi servir à analyser l’évolution des pratiques de programmation. Quels langages ou outils se diffusent ? Comment une correction est-elle introduite ? Quelles dépendances sont utilisées par plusieurs projets ? Ces questions intéressent la recherche informatique, mais également les organisations qui cherchent à mieux cartographier les composants présents dans leurs propres logiciels.

Intégrité et cybersécurité : ce que l’archive peut apporter

La question de la provenance du code est devenue essentielle. Un logiciel moderne assemble souvent de nombreux composants, écrits par des équipes différentes et récupérés depuis des dépôts multiples. En cas de faille de sécurité, de comportement inattendu ou de doute sur une modification, il est utile de pouvoir comparer un élément avec une version connue et de retracer son parcours technique.

Software Heritage s’appuie sur des mécanismes automatiques de vérification de l’intégrité des contenus archivés. En pratique, l’identification cryptographique permet d’associer une référence à un contenu précis. Si le contenu change, sa référence change elle aussi. Cela aide à repérer les altérations et à identifier avec précision la version d’un fichier ou d’un répertoire à laquelle on fait référence.

Il faut toutefois éviter d’attribuer à une archive des pouvoirs qu’elle n’a pas. La présence d’un programme dans une collection ne signifie pas qu’il est exempt de vulnérabilités, qu’il est activement maintenu, ni que son auteur est identifié de façon certaine. De même, l’archivage ne remplace ni un audit de sécurité ni les mises à jour nécessaires. Il fournit plutôt une brique de confiance : une mémoire technique stable, utile pour comparer, documenter et enquêter.

Un patrimoine qui doit rester lisible

Le défi n’est pas seulement de stocker de grandes quantités de données. Pour être utile, le code doit rester accessible, documenté et repérable. Il faut pouvoir le retrouver malgré les changements d’hébergement, comprendre de quelle version il s’agit et conserver les liens entre les différentes parties d’un projet. C’est cette continuité qui distingue une véritable archive d’une simple sauvegarde dispersée.

Scikit-learn, rendre le machine learning plus accessible

Face à cette infrastructure de préservation, Scikit-learn occupe une place bien différente, mais tout aussi importante dans l’écosystème du logiciel libre. Établie en 2007, cette bibliothèque open source pour le langage Python rassemble des outils d’apprentissage automatique prêts à l’emploi. Elle est devenue une référence grâce à une interface cohérente, une documentation abondante et des exemples qui rendent des méthodes complexes plus abordables.

L’apprentissage automatique consiste à faire apprendre à un programme des régularités à partir de données. Au lieu d’écrire une règle explicite pour chaque cas, on fournit à un modèle des exemples afin qu’il puisse classer, estimer ou regrouper de nouvelles observations. Scikit-learn propose les briques nécessaires pour les usages les plus courants : préparation des données, classification, régression, regroupement d’observations, sélection de modèles et évaluation de leurs résultats.

Prenons un exemple simple. Une organisation qui possède des données sur des logements peut vouloir estimer un prix à partir de la surface, de la localisation ou du nombre de pièces. Avec une méthode de régression, le programme cherche une relation entre ces caractéristiques et les prix connus. Dans un autre cas, une équipe peut vouloir séparer automatiquement des messages en plusieurs catégories : elle utilisera alors un algorithme de classification. Scikit-learn ne fournit pas les données ni une réponse magique, mais elle évite de devoir réimplémenter chaque méthode mathématique à partir de zéro.

Cette simplicité d’utilisation joue un rôle important. Des étudiants peuvent expérimenter des modèles, des chercheurs peuvent établir des bases de comparaison et des professionnels peuvent construire des prototypes reproductibles. La bibliothèque n’est pas conçue pour tous les besoins de l’IA, notamment les grands modèles génératifs ou certains réseaux de neurones très lourds. Elle demeure en revanche particulièrement adaptée à une large gamme de problèmes structurés, où la lisibilité des étapes et l’évaluation du modèle sont indispensables.

Une complémentarité plus qu’une fusion technique

Présenter Software Heritage et Scikit-learn comme une seule et même plateforme serait trompeur. Les deux projets ne remplissent pas la même fonction, et l’un ne transforme pas automatiquement les archives de l’autre en modèles d’IA. Leur rapprochement est avant tout celui de deux composantes complémentaires de la connaissance numérique : conserver les méthodes et donner les moyens de les mettre en pratique.

Pour un projet de recherche en intelligence artificielle, cette complémentarité est concrète. Les équipes ont besoin d’outils comme Scikit-learn pour préparer des expériences et tester des algorithmes. Elles ont aussi besoin de pouvoir citer, préserver et retrouver le code associé à ces expériences. Dans ce cycle, l’archive contribue à la continuité, tandis que la bibliothèque facilite l’expérimentation.

Deux rôles complémentaires pour le savoir logiciel

Software Heritage

  • Conserve les codes sources publiés et leur historique technique.
  • Aide à retrouver une version précise d’un projet logiciel.
  • Soutient la traçabilité, l’étude et la reproductibilité des méthodes.
  • Ne crée pas de modèle d’intelligence artificielle à partir des archives.
  • Ne certifie pas qu’un code est sécurisé ou libre de droits.

Scikit-learn

  • Fournit des algorithmes prêts à l’emploi pour l’apprentissage automatique.
  • Aide à préparer des données, entraîner des modèles et mesurer leurs résultats.
  • Rend des méthodes statistiques et de machine learning plus accessibles en Python.
  • Ne constitue pas une archive de logiciels ou de données.
  • N’élimine pas les risques liés à des données incomplètes ou biaisées.

La diversité des codes accessibles publiquement peut également nourrir l’étude des pratiques logicielles. Elle permet de comprendre comment des outils sont construits, documentés, corrigés et réemployés. Pour les développeurs, consulter un projet existant est souvent une manière d’apprendre. Pour les chercheurs, c’est un moyen de vérifier les conditions d’une expérience. Pour les institutions, c’est une façon de ne pas perdre des outils élaborés avec des financements publics.

Cette logique est particulièrement précieuse dans l’IA. Les résultats d’un modèle peuvent sembler impressionnants, mais ils sont difficiles à évaluer si le processus qui les produit reste opaque. Préserver le code ne résout pas tous les problèmes de transparence, notamment lorsqu’il manque les données ou la documentation. Cela constitue néanmoins une condition de base pour que les méthodes restent discutables, vérifiables et transmissibles.

Ce qu’il faut surveiller pour faire durer le patrimoine logiciel

L’objectif de Software Heritage est immense : suivre l’expansion continue du logiciel tout en assurant une conservation durable. À mesure que le volume de code augmente, les défis portent sur le stockage, l’identification des versions, l’accessibilité des archives et la qualité des métadonnées. La pérennité suppose aussi des soutiens institutionnels et une coopération durable entre les plateformes, les développeurs, les universités et les acteurs publics.

L’autre enjeu concerne les pratiques. Archiver un projet après coup est utile, mais penser dès le départ à la documentation, aux licences, aux dépendances et à la reproductibilité l’est encore davantage. Les équipes de recherche et de développement ont intérêt à considérer le code comme un résultat à part entière, au même titre qu’un rapport, un article ou un jeu de données.

Enfin, l’essor de l’intelligence artificielle rend cette exigence plus visible. Les outils comme Scikit-learn abaissent la barrière technique de l’apprentissage automatique. Ils permettent à davantage de personnes d’expérimenter, ce qui renforce la nécessité de partager de bonnes pratiques : décrire les données, tester les biais éventuels, comparer les résultats et conserver les méthodes employées.

La métaphore de la bibliothèque d’Alexandrie souligne l’ambition de Software Heritage, mais elle rappelle aussi une responsabilité collective. Une bibliothèque n’a de valeur que si ses documents peuvent être retrouvés, compris et transmis. Dans le monde du code, cette transmission passe par l’archivage, mais aussi par des communautés actives, des outils ouverts et une attention constante à la réutilisation. C’est à cette condition que le patrimoine logiciel d’aujourd’hui pourra réellement servir aux générations de développeurs et de chercheurs de demain.

Questions fréquentes

Qu’est-ce que Software Heritage ?

Software Heritage est une initiative lancée par l’Inria en 2016 pour collecter, préserver et partager les logiciels publiés sous forme de code source. Son ambition est de constituer une archive durable du patrimoine logiciel mondial. Elle conserve les contenus, mais aussi des éléments de leur historique technique, afin de rendre les projets plus facilement retrouvables et vérifiables.

À quoi sert Scikit-learn en intelligence artificielle ?

Scikit-learn est une bibliothèque open source pour Python qui fournit des outils d’apprentissage automatique. Elle permet notamment de préparer des données, de réaliser des classifications, des régressions ou des regroupements, puis d’évaluer les résultats. Elle est utilisée pour apprendre et prototyper des systèmes d’IA, sans devoir programmer chaque algorithme mathématique depuis le début.

Quel lien existe entre Software Heritage et Scikit-learn ?

Les deux projets sont complémentaires plutôt que techniquement fusionnés. Software Heritage préserve et rend retrouvable le code source, tandis que Scikit-learn fournit des méthodes concrètes d’apprentissage automatique. Ensemble, ils illustrent l’intérêt du logiciel ouvert pour la recherche : expérimenter avec des outils accessibles et conserver les méthodes utilisées afin qu’elles puissent être examinées ou réemployées.

Pourquoi faut-il archiver le code source des logiciels ?

Le code source permet de comprendre le fonctionnement d’un logiciel, de le corriger, de le réutiliser et de reproduire des travaux scientifiques. Sans conservation, des projets peuvent disparaître avec la fermeture d’un hébergement ou l’abandon d’une équipe. Une archive facilite aussi l’étude des versions et l’analyse de la provenance technique d’un composant logiciel.

Software Heritage garantit-il qu’un logiciel est sûr et réutilisable librement ?

Non. L’archive contribue à vérifier l’intégrité d’un contenu et à retrouver une version précise, ce qui est utile en matière de traçabilité. Mais elle ne remplace pas un audit de sécurité et ne garantit pas l’absence de vulnérabilités. Les conditions de réutilisation dépendent par ailleurs de la licence et des droits associés à chaque projet.

Sources

Références consultées pour la rédaction de cet article. Les adresses sont indiquées à titre informatif et ne sont pas des liens.

  1. Software Heritage, site officiel et présentation de l’archive universelle de code sourcewww.softwareheritage.org
  2. Scikit-learn, documentation officielle de la bibliothèque Python d’apprentissage automatiquescikit-learn.org/stable
  3. Inria, institut à l’origine de l’initiative Software Heritagewww.inria.fr