owned this note
owned this note
Published
Linked with GitHub
# Element de réflexions 8 décembre
## Du Notebook et du GT Notebook
Le Notebook est un objet plus complexe qu'il n'en a l'air, je crois que c'était notre point de départ dans le GT. Complexe dans sa fabrication, multiples dans ses utilisations, mouvant dans sa destination. Complexe aussi dans sa maintenance, dans son déploiement, des actes qui demande une technicité, un savoir faire et des métiers qui parfois vont bien au delà de son utilisation.
Je crois ce groupe de travail s'est formé avec l'envie de suivre certaines de ces ramifications techniques, méthodologiques, épistémologiques. Avec cette volonté aussi d'observer plus finement le Delta entre l'objet tel qu'il a pu être, tel qu'il se réifie, c'est à dire avec les fantasmes et les deceptions qu'il suscite parfois avec fracas [273] au sein d'une communauté d'outils et de méthodes (R/Python), et ce que nous en savons, au travers de nos pratiques inter-disciplinaires.
Ce qui nous as permis de réaliser un premier atelier de 3h ( [slides](https://gt-notebook.gitpages.huma-num.fr/workshop/workshop_3_decembre_2021/slide/) et [slides avec commentaires](https://gt-notebook.gitpages.huma-num.fr/workshop/workshop_3_decembre_2021/slide2html-3-dec/)) pour dérouler cette complexité de l'objet, qui va de l'exposition des concepts à leur examplification au sein d'un notebook.
Le mieux pour en donner une idée c'est de déconstruire l'objet en partant de ce que l'on a sous les yeux, sous les mains.
Le Notebook est bien un écrit à destination de l'oeil humain, mais dont le contenu scriptural est un mélange de prose non executable, et de prose executable compréhensible par la machine, qui peut être visible et/ou caché.
Si on n'y faisait pas attention, on pourrait tenter de comparer l'objet à un bloc note de papier classique que l'on aurait "augmenté" en donnant la possibilité à l'utilisateur d'écrire également du code executable, de l'executer et d'afficher le résultat dans ce même bloc. Un peu comme si on ajoutait des blocs de codes executables à la place des titres de journaux animés vu dans Harry Potter.
![](https://i.imgur.com/EgKywZm.jpg =400x)
Le Notebook est donc un support d'écriture qui supporte et même incite à une transformation. Il s'écrit et certaines parties de ces écrits s'executent.
Tel que je vous le décrit celui-ci pourrait "sembler" autonome. On pourrait même ajouter qu'il est en quelques sorte "reproductible", vu qu'il execute toujours la même chose, ce qui est une forme d'autonomie plus forte encore.
Mais l'analogie et la magie s'arrête là. Tout comme le texte sur écran n'est pas du texte (c'est du binaire), tout comme le rectangle de recherche "Google" n'est pas Internet, le Notebook n'est pas juste un enchainement de cellule executable et de cellule non executable. La pensée, le geste, l'environnement bien sur aussi, tout cela est surement très éloigné d'une prise de note sur un bloc de papier, et cette simple possibilité d'inclure du code executable dans un document cache en réalité une potentialité de pratiques, mais aussi de réalités techniques et conceptuelles.
Ce paradigme de transformation et d'écriture, le Notebook le tient du "Literate Programming" de Donald Knuth :
> "Literate programming is a methodology that combines a programming language with a documentation language, thereby making programs more robust, more portable, more easily maintained, and arguably more fun to write than programs that are written only in a high-level language. The main idea is to treat a program as a piece of literature, addressed to human beings rather than to a computer. "
>
> Src : [Site Web LP](https://www-cs-faculty.stanford.edu/~knuth/lp.html)
![](https://i.imgur.com/7hsMEge.png)
Cet apport est double, et si on regarde un peu comment les Notebooks sont utilisés aujourd'hui à mon sens on *ne respecte qu'une partie du contrat* tel qu'il a été évoqué par Donald. On a tendance à se focaliser sur la partie opératoire, et à oublier la partie scripturale.
La partie opératoire, si on met de côté l'attirail technique nécessaire à la transformation, apparait finalement de façon relativement simple du côté de l'utilisateur. J'écrit du code source, je clique sur un bouton, ou j'appuie sur une touche, celui-ci s'execute, et cela affiche un résultat qui vient s'intégrer directement dans ma prose non-executable. On perçoit bien l'intérêt que cela peut avoir, en terme d'interaction/co-construction avec les collègues (Sacha en parlera je crois), mais aussi avec à la clef "la possibilité" d'une meilleure reproductibilité. Je dit "possibilité" car contrairement à ce qui est souvent dit, c'est loin d'être automatique [274]. On pourrait penser que l'existence dans un même document du code et de la documentation de ce code est un premier pas( par rapport à ce que décrit Collberg par exemple en informatique [272]), c'est vrai en partie, mais en réalité le problème est juste déporté. Dans le cadre du GT nous essayons d'aller plus loin sur cet axe.
La deuxième partie du contrat est beaucoup plus subtile, et là on sort du cadre classique du Notebook tel qu'il est utilisé et imaginé par les Data Scientists. Le terme est flou, je ne l'aime pas particulièrement et il faudra trouver mieux, car nous sommes tous des Data Scientist, mais il a le mérite pour le moment d'évoquer une pratique interdisciplinaire avec le point commun d'utiliser cet objet pour "travailler/explorer/présenter/discuter" les/nos données.
Le "Literate Programming" s'est prendre le temps de s'intéresser "au pourquoi", il s'agit de documenter le processus qui a amené le programmeur à faire "ce choix". Ce n'est donc pas de la documentation à destination de l'utilisateur ou du développeur. C'est la mise en narration d'une partie ou de la totalité du code, pour l'humain, avec un objectif final explicatif.
Sauf que voilà, Donald Knuth a beau être un pilier mondialement reconnu de la jeune discipline informatique, il se trouve que les "codeurs" n'ont jamais vraiment (pris) le temps de s'intéresser à l'écriture de ce "pourquoi". C'est un peu comme si on demandait à un artisan du bois d'expliquer pourquoi il avait choisi cet outil, à ce moment là et dans cet ordre là pour réaliser sa sculpture.
Le "Literate Programming" ne recoupe donc qu'en partie les objectifs et la pratique des Notebooks actuels, mais c'est une piste que nous aimerions développer, notamment parceque cela a un intérêt dans d'autre domaines d'applications ou "le pourquoi" est fondamental comme la modélisation/simulation par exemple.
Si on revient aux Notebook, et nous en discutions avec Sacha qui m'a introduit ces éléments suivant, il y a quand même des distinctions à faire dans l'usage fait des notebooks [275]
- exploratoires avec du prototypage et de l’analyse interne, et souvent peu d’explications par rapport au code.
- explicatifs pour le partage et la reproductibilité de résultats, qui sont parfois l’extension de premiers notebooks exploratoires.
Ces deux usages peuvent être en tension [276] : un notebook exploratoire permet de garder une trace linéaire et exhaustive de l’histoire de l’analyse, laissant notamment de la place aux résultats négatifs [277], mais peut s’avérer peu intelligible. Là où sa mise en forme et réorganisation pour le rendre explicatif, tronquera des éléments d’exploration peu fructueux. Concernant les notebooks explicatifs, les destinataires peuvent aussi bien être des collègues et pairs, étudiants , grand public ou encore son moi futur.
Dans le cadre du GT nous avions juste effleuré cette question de la trajectoire prises des Notebooks et de leur contenus, des choix d'écriture et d'organisation étant fait selon l'objectif (assumé ou non) : pédagogie, exploratoire, publications.
Sur les perspectives plus écologiques, j'aurais tendance à dire qu'il y a un début de mouvement, au moins dans le monde académique. Des initiatives comme "Laboratoire 1.5" sont souvent cités, et/ou font figure de modèle à suivre. Reste à voir dans la pratique... Si on revient au Notebook, une étude de Pimentel [274] faisait la collecte et l'étude de 1.4 Million de Notebook Jupyter stockés sur la plateforme Github.com, déposés entre 2013 et 2018. Sur ce volume, 264,510 (18.58%) était des doublons. Seulement 25% étaient "reproductible sur le plan technique", c'est à dire au moins executable dans leur entiereté sans erreur.
Ces Notebooks repose sur un plus ou moins large panel de technologies, qui peuvent être très différentes selon le type de Notebook et le public visé. En effet éxécuter un notebook en local sur sa machine nécessite bien moins de couches techniques superposées que sont utilisation une fois déployée pour un cours, pour un article. Avec [Binder](https://mybinder.org), on fait du déploiement à la demande : on clique sur un bouton, et on a un Notebook qui "pop" sur son propre ordinateur à l'autre bout du monde. Autre exemple, avec la démocratisation des notebooks en physique, en informatique est venu la question du déport de calcul et/ou de l'environnement d'execution du Notebook. Soit pour de la visualisation, soit pour du calcul. Autrement dit, les cellules executables seront executés non plus par votre machine, mais par un super-calculateur distant, par exemple. Il y a donc un vrai gap. Evidemment ce gap est difficile à calculer car la question de l'efficience des systèmes est complexe : est il plus couteux d'avoir son serveur à la maison alimenté par énergie solaire ? ou est-ce mieux dans un datacenter qui mutualise et capitalise des décennies de recherche dans ce domaine ?
Alors faut il tout sauvegarder ? C'est plus ou moins le parti pris par *Software Heritage* et *Internet Archive* par exemple. Mais peut on se le permettre ? La "Curation" des données serait le terme adapté pour désigner une forme de responsabilité des chercheurs vis à vis des Notebooks et plus généralement de la donnée, et pourtant on l'entend assez peu dans la politique des données actuelles. Il faut dire que cela prend du temps, et que la politique de la "recherche par projets" ne suis pas cette voie là.
Enfin, dans ce cadre écologie et technique, il est difficile aujourd'hui de ne pas parler à un moment donné du mouvement "Low-Tech", un terme encore en construction mais qui pose des bonnes questions :
- [https://lowtechlab.org/](https://lowtechlab.org/),
- https://gauthierroussilhe.com,
- https://pad.lescommuns.org/Accueil_LowTech_Enseignement#,
- https://forum-lowtre-ecosesa.univ-grenoble-alpes.fr/).
Comme on peut s'y attendre, les motivations qui se place sous ce terme tout autant sociales/éthiques que technologiques, avec des ramifications assez complexes et des degré de structurations assez différents :
- l'indiweb https://indieweb.org/
- le "self tooling" aka les gens qui créé du software pour eux
- https://thesephist.com/
- https://100r.co/site/home.html
- les signaux faibles, individuel, qui pointent ce qui serait une "crise du software" actuel :
- sur le plan technique :
- https://blog.kronis.dev/articles/never-update-anything
- https://randomascii.wordpress.com/2022/09/29/why-modern-software-is-slow-windows-voice-recorder/
- https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html
- https://unixsheikh.com/articles/is-the-madness-ever-going-to-end.html
- http://pketh.org/why-software-is-slow-and-shitty.html
- sur le plan organisationel :
- https://logicmag.io/clouds/agile-and-the-long-crisis-of-software/
- les initiatives techniques diverses et variées
- Html / CSS http://motherfuckingwebsite.com/ , https://github.com/lyoshenka/awesome-motherfucking-website
- Refroidissements calculateurs (software/hardware):
- voir les communications de https://jcad2022.sciencesconf.org/resource/page/id/7
- Homelab PC recyclé : https://www.servethehome.com/introducing-project-tinyminimicro-home-lab-revolution/
Pour le moment cette porte n'a pas été ouverte dans le cadre du GT, mais c'est clairement un axe que nous pourrions explorer.
Perspective :
- Le Notebook est linéaire, aujourd'hui on a des outils de portée équivalente qui intègre "une dimension spatiale" à la réflexion. Ce n'est pas nouveaux évidemment, et on trouve un fil historique à ces réflexions sans trop de difficultés.
- Le Notebook n'est pas un objet uniquement dédié à produire de la "Data Science", réintégré la deuxième partie du contrat de Knuth permet d'imaginer d'autres applications. Dans la construction de simulation en interdisciplinaire par exemple.
- Pertinence du Notebook, voire du numérique quant aux objectifs poursuivis ?
- Curation ? Ecologie
++Sources:++
272. Christian Collberg and Todd A. Proebsting. 2016. Repeatability in computer systems research. Commun. ACM 59, 3 (March 2016), 62–69. https://doi.org/10.1145/2812803
273. J. Gruss, I Don't Like Notebook https://conferences.oreilly.com/jupyter/jup-ny/public/schedule/detail/68282.html
274. J. F. Pimentel, L. Murta, V. Braganholo and J. Freire, "A Large-Scale Study About Quality and Reproducibility of Jupyter Notebooks," 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR), 2019, pp. 507-517, doi: 10.1109/MSR.2019.00077.
275. Kery MB, Radensky M, Arya M, John BE, Myers BA. The Story in the Notebook: Exploratory Data Science using a Literate Programming Tool. Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems [Internet]. New York, NY, USA: Association for Computing Machinery; 2018 [cité 12 avr 2022]. p. 1–11. Disponible sur: https://doi.org/10.1145/3173574.3173748
276. Rule A, Tabard A, Hollan JD. Exploration and Explanation in Computational Notebooks. Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems [Internet]. New York, NY, USA: Association for Computing Machinery; 2018 [cité 13 avr 2022]. p. 1–12. Disponible sur: https://doi.org/10.1145/3173574.3173606
277. Herbet M-E, Léonard J, Santangelo MG, Albaret L. Dissimuler ou disséminer ? Une étude sur le sort réservé aux résultats négatifs [Internet]. Zenodo; 2021 sept. Disponible sur: https://zenodo.org/record/5541589
## Pharmakon
- Open Source reste une contre-tendance à l'industrie, même si celle-ci y participe et s'en nourrit.