Software Heritage - Préserver le patrimoine logiciel de l'Humanité - Roberto Di Cosmo

De April MediaWiki
Aller à la navigationAller à la recherche


Titre : Software Heritage : pourquoi et comment préserver le patrimoine logiciel de l’Humanité

Intervenant : Roberto Di Cosmo

Lieu : Paris . Palais des Congrès - Conférence Devoxx France

Date : avril 2018

Durée : 20 min 18

Visionner la vidéo

Licence de la transcription : Verbatim

NB : transcription réalisée par nos soins. Les positions exprimées sont celles des intervenants et ne rejoignent pas forcément celles de l'April.

Statut : Transcrit MO

Description

Le logiciel est au cœur de notre société numérique au point et le code source des logiciels contient une part croissante de nos connaissances scientifiques, techniques et organisationnelles, au point d'etre devenu desormai une partie integrante du patrimoine de l'Humanité.


Transcription

Merci à tous d’être ici. Ça fait vraiment plaisir de pouvoir venir parler avec vous de quelque chose qui me tient vraiment à cœur qui est le logiciel. Roberto Di Cosmo ; dès que j’ouvre la bouche, vous savez bien que je suis italien tout de suite, je n’ai pas réussi à perdre l’accent ; ça fait trente ans que je suis en France, mais bon bref ! J’espère que vous me pardonnerez un peu.

De quoi on va parler ? Si vous regardez autour de vous aujourd’hui, vous voyez bien que le logiciel est partout. D’ailleurs nous, programmeurs, c’est une partie importante de notre société. Le logiciel est le moteur de notre industrie, c’est le carburant de l’innovation, c’est un pilier de la recherche scientifique moderne, c’est aussi le médiateur essentiel qui nous permet d’accéder à toute information numérique. Et en plus, regardez bien, c’est aussi un instrument qui permet de manipuler un tout petit peu les élections ; ça ce n’était prévu à l’origine, mais disons qu’effectivement ! Voilà ! On peut dire qu’il y pas mal de notre connaissance et de notre savoir-faire qui est aujourd’hui embarqué dans du logiciel. Donc on peut vraiment dire que le logiciel est devenu une partie essentielle de notre patrimoine culturel.

Mais quand on dit ça à quelqu’un qui n’est pas de notre communauté, il a tendance à oublier un aspect essentiel, c’est que oui les logiciels sont importants, ce sont des choses qui nous permettent de faire des tweets, de communiquer avec nos copains avec notre téléphone, mais pour réaliser des logiciels il faut d’abord les écrire. Et quand on les écrit, on écrit du code source. Et c’est bien le code source qui contient ces connaissances, pas juste le logiciel exécutable. Ça ce n’est pas quelque chose de très nouveau, ce sont des observations qui existent depuis un moment.

Vous voyez le monsieur dont j’ai mis une citation là-haut. Harold Abseson est un professeur d’informatique au MIT qui a un certain âge, c’est lui qui a contribué à créer la Free Software Foundation, c’est lui qui a contribué à créer Creative Commons, qui était à l’origine du petit projet qui s’appelait Scratch qui est maintenant très utilisé pour apprendre la programmation au début à tout le monde. Il avait écrit un livre qui était un livre super important quand j’étais encore sur les bancs de l’université, donc ça ne me rajeunit pas, j’ai mis la date, comme ça full disclosure, vous savez à peu près, et il disait dans son introduction, vous voyez : « Des logiciels il faut d’abord les écrire pour que d’autre personnes puissent les lire et seulement, accessoirement, pour qu’une machine puisse les exécuter ». Vous allez dire d’accord, 1985, ça c’est un prof qui dit à ses étudiants : « Si je ne comprends rien de ce que vous avez écrit vous aurez une sale note ! » D’accord, ce n’est pas faux, mais il y a quelque chose de plus profond c’est qu’en réalité, vous savez bien, si vous écrivez un logiciel et vous avez besoin de le modifier, aujourd’hui on les modifie très souvent, il faut quand même arriver à comprendre ce que vous avez écrit il y a deux semaines. D’accord ! Donc c’est important d’arriver à comprendre ce qu’on a écrit dedans.

1985, ça c’était un message qui était un peu dur à comprendre parce qu’à l’époque il n’y avait pas beaucoup de code source disponible. D’accord ! On ne voyait pas grand-chose, la plupart du code source était stocké dans des coffres-forts dans les entreprises. Heureusement aujourd’hui, grâce au mouvement du logiciel libre, de l’open source qui a quand même complètement changé la façon dont nous développons du logiciel, il y a énormément de code source qui devient disponible et si vous cherchez un peu vous trouvez des choses qui sont absolument magnifiques. Par exemple, est-ce que quelqu’un ici se rappelle encore Doom ? Voir un peu ? Ah quand même, voilà, je ne suis pas le seul vieux dans la salle. Super ! Eh bien le programmeur mythique qui avait travaillé pour id Software à l’époque et qui avait écrit Doom, c’est John Carmack et on attribue à John Carmack cette fonction que vous voyez là. D’accord ! C’est le calcul de 1 sur racine de x. C’est une fonction qui est très importante quand vous faites du 3D.

À l’époque où il avait envie de sortir le jeu, les coprocesseurs en floating point dans le numérique n’étaient pas super efficaces, donc ça prenait trop de temps, si vous appeliez juste la fonction pour faire 1 sur racine carrée, c’était une division flottante et une racine carrée flottante, c’était super cher, donc vous pouviez tourner votre manette et les fusibles ne bougent pas et vous êtes mort et vous n’êtes pas content dans le jeu.

Du coup il a dû trouver une solution qui était plus intéressante. Donc vous voyez ici, dans le code source qui est vraiment le code source qui maintenant est devenu disponible, c’est sous open source depuis 95, vous voyez ce qu’il fait ? Il prend un flottant, number est un flottant, là-bas, et après il commence à faire des choses bizarres et heureusement qu’il y a des commentaires : vous voyez une ligne il y a marqué evil floating point bit level hacking, donc c’est une méchante manipulation au niveau des bits. Alors qu’est-ce qui se passe ? Je ne vais pas rentrer dans les détails, mais essentiellement. Vous avez votre flottant, c’est une représentation i ??? 32 bits là-dessous, il arrive, c’est sous la forme exposante mantisse ; et la mantisse c’est ce qu’il y après la virgule quand c’est 1 virgule quelque chose. Bref des histoires.

Si vous voulez faire la racine carrée de quelque chose, la chose simple c’est calculer le logarithme en base de 2, après vous multipliez par -1 sur 2 et après vous refaites la manipulation inverse. Il faut faire quelques petits ajustements pour enlever l’exposant et donc là on arrive jusqu’à la ligne qui dit la chose que je vais pas prononcer parce que sinon ça va être censuré sur YouTube plus tard. Donc vous voyez le commentaire là [what the fuck, NdT].

Et peu plus bas, il fait d’autres choses qu’on ne comprend pas. Pourquoi il multiplie y par 3/2, etc., mais heureusement il y a un commentaire qui dit « première itération ». Ah ! Première itération ça me rappelle quelque chose quand j’étais sur les bancs de la fac il y a super longtemps, ça doit être la méthode de Newton pour approcher une fonction. Effectivement ! Donc il fait des tests et en réalité après il fait cette deuxième itération, mais ça ne sert pas à grand-chose, vous ne voyez pas trop la différence quand vous faites le jeu. Donc il est arrivé, il a fait ça.

Cette fonction-là est une fonction mythique, vous la retrouvez même si vous allez rechercher ça sur Wikipédia, vous mettez juste « 0x5f3759df », vous tombez directement sur la page Wikipédia de la fonction.

Il y a d’autres exemples, d’accord ! Il n’est pas le seul.

Essentiellement c’est pour vous dire, ça c’est vraiment précieux, c’est de la conception qui prend du temps. Ça fait quelques lignes, c’est super dur de comprendre et de le concevoir et c’est précieux de le retrouver, de le comprendre plus tard. Et on ne peut le faire que si nous disposons du code source et en particulier des commentaires, même si peut-être il faut passer un peu pour effacer quelques petits gros mots qu’il ne faut pas trop faire passer ; et si on avait seulement le binaire, tout ça serait perdu.

Donc si vous voulez, pour résumer d’une certaine façon comme disait Len Shustek, qui est le directeur board du Computer History Museum, qui un endroit magnifique à Mountain View dans lequel il essaie de reconstruire un peu de parent (???) de l’histoire de l’informatique : « Les codes sources nous ouvrent une fenêtre dans la tête du programmeur, de l’architecte, de la personne qui conçoit un logiciel » et c’est vraiment précieux.

Alors, vous voyez en plus, le code source est quelque chose source d’assez récent. Ce que nous faisons est une science, une technologie, une discipline qui est assez récente ; elle n’a pas beaucoup plus de 50 ans. Et en 50 ans la croissance a été spectaculaire. C’est-à-dire qu’il y a 50 ans, presque jour pour jour, on mettait le premier homme sur la lune et pour arriver à le faire arriver là-bas et pas se perdre dans l’espace, il y avait 60 000 lignes de code qui ont été écrites sous le pilage de Margaret Hamilton, une dame incroyable qui est encore vivante aujourd’hui et qui avait écrit, à l’époque ; quand on a écrit ce code on ne savait pas du tout ce qu’on faisait ; on était dans le Far-West le plus complet. D’accord ! Pour vous rappeler mettre un homme sur la lune, c’était 200 milliards de dollars à l’époque, ce n’est pas tout à fait donné et le code logiciel était une partie de ce coût-là.

Cinquante ans après, si vous regardez, le noyau Linux qui est juste une toute petite partie de la partie pile Android que vous avez dans votre téléphone là-dedans, ça fait quand même 20 millions de lignes de code et on l’utilise régulièrement.

Donc la vraie question est de savoir est-ce qu’on prend soin de ce patrimoine précieux que nous sommes en train tous collectivement de construire ? On pourrait se dire que oui, près tout, s’il y a une industrie florissante, c’est l’industrie de l’informatique. S’il y a des géants qui ont des quantités d’argent pas possibles, c’est bien dans notre domaine, et pourtant, faisons un petit peu le tour. Vous allez voir que la situation n’est pas si brillante que ça !

Première chose, oui le logiciel est bien partout, dans un bon sens on l’utilise partout, mais aussi partout dans un mauvais sens, dans le sens où il est éparpillé un peu partout. Il n’y a pas un catalogue central de tous les logiciels. Nous utilisons tout plein de plateformes diverses et variées pour développer, pour distribuer du code. Donc quand moi j’étais plus petit, je ne dis pas que je n’étais pas jeune, quelques années qui sont passées, il y avait une plateforme qui s’appelait SourceForge qui a un peu disparu maintenant. Après j’ai eu pas mal d’étudiants, toutes les fois qu’il y avait des étudiants qui me disaient : « Non, il ne faut pas utiliser celle-là, il y a un truc super, merveilleux, il faut que tu passes tout ton code dans un autre endroit », donc à un moment donné je l’ai mis sous Gitorious, par exemple. Il y avait Google Code, il y avait plein d’autres choses, maintenant il y a GitLab. Maintenant la plus populaire c’est GitHub, évidemment. Mais après, si vous regardez ce qui s’est passé, vous avez un bout de code qui était sousb SourceForge, qui a été bougé sous Gitorious, après on l’a mis sous Ghihub, donc finalement si vous voulez le retrouver ce n’est super facile ; on n’a pas de catalogue. La meilleure façon pour retrouver du code aujourd’hui c’est demander à un copain à la machine à café ou faire une recherche dans un moteur de recherche. Ce n’est pas un catalogue ça !

9’ 55

Non seulement tout cela est éparpillé