• Aucun résultat trouvé

Comme précisé plus avant, la moindre fonctionnalité dont nous nous servons sur nos ordinateurs, smartphones, consoles, tablettes etc. sont des logiciels conçus pour nous faciliter la vie au quotidien et nous permettre d’exploiter au mieux les systèmes sur lesquels ils sont installés. Que ce soit pour travailler, se divertir, s’informer, ils font désormais partie intégrante de notre vie. La moindre interaction que nous pouvons avoir avec une machine passe par un logiciel, ou tout du moins par un programme avec lequel l’être humain est capable d’interagir.

Les enjeux de l’archivage du code source sont étroitement liés à la notion du code qui va au-delà de l’objet. Il est perçu par les chercheurs en informatique mais aussi Richard Stallman82, comme une création de l’esprit humain qui reflète la manière de

penser de celui-ci83, véhiculant ainsi un savoir spécifique. Au-delà du code en lui-même

82 Voir partie 1

83 STALLMAN, Richard M., Free Software, Free Society : Selected Essays of Richard M. Stallman. Boston : Free

Software Foundation, 2015. 305 p. [en ligne] Disponible sur : https://www.gnu.org/doc/fsfs3-hardcover.pdf [consulté le 30/08/2018]

ce sont aussi tous les éléments qui ont permis son développement, ainsi que l’ensemble des informations permettant de comprendre sa structure physique, qu’il est nécessaire de conserver. Une analogie particulièrement parlante pour illustrer est la recette de cuisine84: il s’agit d’un assemblage d’ingrédients qui, par un enchaînement d’actions bien spécifiques, permettent de constituer le plat. Il existe une grande variété de possibilités et différentes façons d’arriver au même résultat. Un cuisinier différent est libre d’ajouter le ou les ingrédients de son choix pour apporter sa touche personnelle. C’est la même chose pour le code source : chaque développeur dispose des ses propres méthodes de travail et utilise le langage de programmation qu’il souhaite pour développer son logiciel. Il existe également différentes syntaxes dans le code qui, selon la préférence du programmeur, sont autant de moyens différents pour aboutir à un même résultat. Certaines personnes préfèrent ajouter trois œufs dans leurs crêpes pour ne pas avoir besoin de laisser reposer la pâte, d’autres vont préférer économiser la matière première en réduisant le nombre d’œufs, mais perdront plus de temps en la laissant reposer. Il existe ainsi différents moyens de préparer des crêpes tout comme un développeur a la possibilité d’écrire son code de la manière qu’il souhaite. Autre analogie avec la mécanique vélo : il ne suffit pas d’avoir les pièces les plus sophistiquées sur une monture pour prétendre détenir la plus performante. Un système de freinage hydraulique sera d’une efficacité redoutable pour des adeptes de descentes sportives à vélo, mais il est d’une utilité moindre s’il s’agit de rouler en ville, sur des routes plates, d’autant plus qu’il faudra savoir les entretenir, voir les changer, ce qui n’est pas à la portée de tout le monde. C’est pareil pour le code : rien ne sert de disposer de modules complexes et de l’associer à une structure tout aussi complexe si le développeur ne dispose pas des connaissances nécessaires pour entretenir son code source et proposer des évolutions effectives.

Ces deux analogies nous permettent à nouveau d’appuyer le fait que le code et le logiciel sont des composantes similaires à d’autres secteurs d’activités, et que le savoir obtenu jusqu’à maintenant dans ces autres secteurs s’est fait notamment grâce à l’accumulation d’expériences. En effet, la cuisine et la mécanique sont des activités ancestrales et qui ont, au fil des siècles, connu respectivement des évolutions raffinées (gastronomie et cuisine moléculaire) et fulgurantes (progrès technologique dans les secteurs industriels).

Comme pour un livre de cuisine, il est intéressant d’avoir à disposition un ensemble de “recettes” permettant de créer des logiciels pour ainsi savoir quel langage, quelle syntaxe utiliser, quelles astuces facilitent et optimisent la réalisation et de connaître la composition de tous les “ingrédients” pour en tirer le meilleur. Ces astuces peuvent se matérialiser comme des commentaires dans le code,ou alors des explications du fonctionnement d’une syntaxe complexe mais aussi des solutions apportées par d’autres développeurs dont la diversité de point de vue ne peut qu’enrichir les deux parties concernées dans l’échange.

Pour poursuivre notre raisonnement, en cuisine, lorsqu’un gourmet goûte un plat, il est ainsi éventuellement capable d’identifier les différents ingrédients qui composent le plat, mais il est beaucoup plus difficile pour lui de deviner l’enchaînement des actions qui ont permis d’assembler les ingrédients. Ainsi, même lorsque le code source est accessible librement, il peut s’avérer compliqué de comprendre les formules employées pour dialoguer avec la machine, car ces dernières sont justement liées à la réflexion personnelle d’un ou plusieurs individus. D’où l’importance d’avoir des données descriptives et informationnelles qui ne font pas réellement partie du corps du code source, mais qui peuvent s’avérer tout aussi enrichissantes que le code lui-même et qui permettent par ailleurs de le mettre en valeur.

L’archivage du code source n’implique donc pas simplement la conservation du code source sous sa forme brute mais aussi des informations descriptives essentielles pour sa bonne compréhension, comme dans tout archivage électronique. Nous insisterons donc bien que le code source, en tant qu’objet, n’est pas suffisant et nécessite d’être archivé avec l’ensemble des éléments constituant ses packages.