▲ NAM-IP/Infos

NAM-IP Infos 2018/4 – Préservation
Software Heritage (INRIA) - La sauvegarde de l'immatériel

Le 18 juillet 2018, R.-F. Poswick et Y. Juste ont pu rencontrer, à Paris,  Roberto Di Cosmo, responsable de ce projet en présence de P. Paradinas et de P. Mounier-Kuhn.

L’initiative française financée par l’INRIA (de 1967 à 1979: Institut de Recherche en Informatique, IRIA, et, depuis lors, Institut National de Recherche en Sciences du Numérique – mais aucun lieu ne mentionne le nom exact de cette institution française d’envergure et son lien avec son acronyme!) pour préserver dans la durée un large spectre de «codes sources» de logiciels développés partout dans le monde, est une initiative ambitieuse! Pour ce faire une équipe d’une dizaine personnes a été mise au travail avec un plan de développement s’étendant sur au moins 6 années à dater de 2016.

L’analyse du responsable du projet, Roberto Di Cosmo, et de son équipe est détaillée dans une brochure Software Heritage. The Great Library of Source Code. Software Heritage Strategic Plan. Version 1.1., 19 May 2018, 38 pages.

Le titre donne déjà le ton des choix qu’une entreprise aussi ambitieuse doit s’imposer pour ne pas se perdre dans un gigantisme impossible à atteindre ! Notamment: une limitation à la conservation «numérique» des «codes sources».

[Le code source est un texte qui détaille les instructions d'un programme informatique dans un langage de programmation compréhensible et utilisable par l'homme. Il traduit les instructions qu'a souhaité laisser le programmeur lors de la conception du programme. La plupart du temps, le code source se résume à un ensemble de fichiers textes. Une fois écrit, il déclenche un code binaire essentiel pour qu'un microprocesseur puisse exécuter une tâche précise. Dans la pratique, le code source emploie bien souvent une coloration syntaxique pour une lecture plus facile du code, avec des éléments différents distingués par des couleurs comme le rouge, le vert ou le bleu. On compare souvent le code source, lorsqu'on souhaite vulgariser le vocabulaire informatique, à une recette de cuisine. Les deux comportent une succession d'ingrédients/d'éléments bien définis qui, au moyen d'une technique particulière, donnent lieu à un résultat voulu. La personne qui souhaite pouvoir déguster à nouveau ce plat aura besoin d'informations très détaillées pour le cuisiner à son tour (c'est le code source) ou se contentera d'acheter le plat tout préparé (c'est le logiciel).]

 

Le plan de développement stratégique du projet a porté d’abord sur la constitution du système de référencement des unités conservées et sur le mode de stockage en miroirs multiples des éléments conservés. Quant aux éléments à conserver, ils ont été classés en quatre catégories dont la première seulement est en cours de développement:

1. Les codes sources des logiciels accessibles dans Internet et dont les droits sont libres
2. Les codes sources des logiciels accessibles dans Internet mais dont les droits sont protégés.
3. Les codes sources des logiciels qui ne sont pas accessibles dans Internet et dont les droits sont libres.
4. Les codes sources des logiciels qui ne sont pas accessibles dans Internet et dont les droits sont protégés.

On peut comprendre que d’habiles techniques de «moissonnage» permettent d’acquérir rapidement dans le premier segment, des milliards de «codes sources» de toutes natures depuis la petite application sans utilisateur jusqu’à – par quel miracle? – les codes sources des programmes de la mission spatiale Apollo XI!

Les trois autres niveaux demandent, soit de mettre en œuvre de puissants moyens de négociation juridique avant même de voir comment absorber techniquement des «codes sources» bien protégés, soit de collecter et vérifier une multitude de sources différentes (avec ou sans nécessité d’avoir un bon avocat pour obtenir les droits de conservation, de reproduction et d’exploitation éventuelle)!

Pour ces autres segments (75 % du matériau théoriquement à exploiter), Software Heritage espère pouvoir compter sur des partenariats, car l’équipe n’a pas, actuellement les moyens pour assurer ce type de recherche, notamment en s’assurant des moyens pour lire ou scanner des codes sources qui n’existeraient plus que sur des supports non-accessibles aux moyens de lecture actuels. Ces données éventuellement confiées au projet sont provisoirement considérées comme des «Fonds» de réserve pour un éventuel traitement ultérieur… si cette initiative inaugurée en 2016 peut se stabiliser dans la durée et se développer, notamment grâce à une mission internationale que lui confère ses accords avec l’UNESCO.

C’est peut-être dans ces créneaux que les musées de l’informatique et d’autres acteurs de la culture numérique pourraient proposer certains services dans la logique des missions de «conservation» qui fondent toute entreprise muséale. Ces musées ont en effet dans leur mission de conservation de maintenir (ou de remettre en état) des machines capables de lire, traiter et afficher différents formats de données codées pour être traitées en binaire (0 ou 1) et conservées sur des supports divers (bandes papier, cartes perforées, cassettes, bandes magnétiques, cartridge, disquettes, disques, etc.).

Sur cette base de conservation «physique», on pourrait songer à récupérer différents types de données de programmation pour en assurer une conservation «logique» (par migration par exemple), et ceci pour les identifier et les stocker dans un format qui s’alignerait sur celui proposé par le Software Heritage.

Mais, en bonne archivistique, l’analyse doit aller plus loin. Au-delà des machines (et des logiques qu’impliquent leur configuration – car un circuit intégré est déjà un logiciel figé), on peut considérer qu’il y a au moins 5 niveaux de matériaux de programmation:

1er niveau : Les Systèmes d’exploitation (p. ex. pour l’histoire récente des P.C. : OS ou DOS) … et donc également les JCL (Job Control Language).
2e niveau : Les langages de programmation (on dit qu’il y en aurait plus de 8.000 qui ont été développés, même si seulement quelques centaines ont été utilisés… et en n’oubliant pas leurs évolutions internes que sont les différentes «release»)
3e niveau : Les outils de conception et d’analyse – en ce compris l’algorithmique et la cybernétique qui mènent à des programmations ou à des applications intégrées (plan calcul, module directeur, etc)
4e niveau : Les applications et leurs domaines
5e niveau : Les domaines
5.1. La communication et la télécommunication
5.2. La typographie et l’édition
5.3. La comptabilité et la finance
5.4. La bureautique
5.5. Les applications scientifiques, par domaine: calcul théorique, physique, chimie, biologie, etc.
5.6. Les applications industrielles et commerciales, par domaine : sidérurgie, ingénierie, etc
5.7. Les applications artistiques et ludiques, par domaines
5.8. Les applications sociétales, par domaine : gouvernance, droit, armée, santé, etc

Mais l’analyse serait encore incomplète si le code source n’est pas accompagné de l’environnement documentaire qui en explique la finalité et les modalités de fonctionnement ainsi que son environnement logique et physique. Il y aurait donc matière à un partage planétaire, entre différents acteurs de la conservation matérielle et logicielle des outils historiques de la culture numérique. Ce partage devrait se faire sur des bases critiques et avec la collecte d’une base documentaire très large allant jusqu’à impliquer les acteurs et créateurs de ces matériaux logiciels.

Et là, il y aurait une urgence critique à rassembler les acteurs encore vivants en créant un mouvement de «cession» de droits ou de «legs numériques» qui permette de documenter correctement les trouvailles logicielles.

Mais ce type de travaux me semble être en cohérence avec l’idée qui préside à la création d’un musée de l’informatique ou du domaine du numérique. C’est appliquer cette idée de conservation et de mise en valeur aux vraies valeurs de machines qui ne sont rien de plus que de la ferraille récupérée si l’on ne peut conserver et présenter également une trace de leur mode opérationnel.

 R.-Ferdinand Poswick