owned this note
owned this note
Published
Linked with GitHub
# Webinaire 1 GT Notebook
###### tags: `gt notebook`,`webinaire`
## Disciplines et mots-clefs
disciplines : toutes
mots-clefs :
- notebook
- cartographie
- publication
- intéractivité
- reproductibilité
- guix

:::info
- Présent.e.s :
- [x] Sébastien Rey-Coyrehourcq
- [x] Raphaëlle Krummeich
- [x] Nicolas Roelandt
- [x] Konrad Hinsen
- [x] Thierry Feuillet
- [x] Paulette Lieby
- [x] Romain Mejean
- [x] Michael Nauge
- [x] Nicolas Sauret
- [x] Hugues pecout
- [x] Emilien Schultz
- [x] [Ghislain DURIF](https://gdurif.perso.math.cnrs.fr/)
- [x] Benjamin Cuer
- [x] Matthieu Guionnet
- [x] Elisabeth Guerard
- [x] Jey Puget Gil
- [x] Nicolas P. Rougier
- Excusé.e.s :
- Lien site web : https://gt-notebook.gitpages.huma-num.fr/site_quarto/
- Issue & ODJ : https://gitlab.huma-num.fr/gt-notebook/webinaires/-/issues
- Lien visio BBB : https://webconf.univ-rouen.fr/greenlight/rey-px2-ewg-7av
- Lien chat public : https://rocket.esup-portail.org/channel/GT-Notebook
- Lien mailling-list : https://groupes.renater.fr/sympa/info/notebooks-inter-reseaux
- Lien support présentation et notebooks de démonstration: https://gitlab.huma-num.fr/gt-notebook/webinaires/-/tree/main/20230330_presentation_quarto
:::
## Ordre du Jour
- Accueil (5 minutes)
- Présentation du GT (5 minutes / Raphaëlle Krummeich & Sébastien Rey-Coyrehourcq)
- Introduction à Quarto (20-30 minutes / Nicolas Roelandt)
- Retour d'expérience Packaging de Quarto dans Guix (5 minutes / Sébastien Rey-Coyrehourcq)
- Revue d'article (10 minutes / Raphaëlle Krummeich)
- Discussions avec le public et les intervenants (10-15 minutes)
- Intro prochaine date Webinaire 2
### Présentation du GT
- Genèse : Construire en interdisciplinarité un atelier reproductible pour la sensibilisation aux Notebooks, un objet complexe dans le cycle de vie de la donnée.
- Manifeste :
:::info
Nous sommes vigileant·es à ce que ce lieu soit et reste inclusif de toutes les communautés, de toutes les pratiques, de toutes les initiatives, dès lors qu'elles respectent quelques règles communes. Celles-ci ne vous surprendront pas si venez de l'ESR. Nous réflechissons à l'écriture d'un manifeste du gt.
:::
- Objectifs :
- Interdisciplinarité : parce que cela se construit dans le dialogue et dans la durée :)
- Axes de réflexions et de veille (WIP) autour du Notebook
- Epistémologie de l'objet et des pratiques autour de l'objet
- Ecosophie, un engagement réflexif et critique vis à vis des pratiques du numérique
- Littératie(s) Numérique(s), pour (re)-penser l'écriture (enjeux, pratiques, etc.) au prisme de la machine et de son contexte
- Reproductibilité, comme un axe transversal de réflexion et horizon
- Mise en oeuvre au sein d'Actions, conçues et portées par les volontés des membres du GT :
- liste de diffusion
- sous-groupe(s) par axe d'intérêt
- webinaires d'une heure mensuel, CR et enregistrement
- opérationalisation
- veille sur les outils, les plateformes,
- élaboration d'une base de connaissance
- réalisation de supports et d'ateliers de sensibilisation reproductibles
- (WIP) Une journée annuelle de discussions/retranscriptions des GT ?
**Welcome Aboard !**
### Quarto
#### Système open source de publication scientifique et technique basé sur Pandoc, par Nicolas Roelandt
[accès au dépôt](https://gitlab.huma-num.fr/gt-notebook/webinaires/-/tree/main/20230330_presentation_quarto)
- quarto.org
- 2020
- v1.0 en juillet 2022
- développé par Posit (ex-Rstudio)
Alternative aux Jupyter notebooks ?
Langages: python, R, Julia, Observable
Multi-plateforme (Mac, W, Linux), multi-format (rapports, présentations, livres, sites web)
Intégration : outil CLI (initialement), Rstudio, VsCode, Jupyter Notebook
Avantages:
- fichier texte en markdown (contrairement au Jupyter notebook qui est basé sur json)
- blocs de code intégrés au texte (code et narration sont mêlés au sens *literate programming*)
- basé sur pandoc (appel de scripts LUA, templates propres, etc.)
- hérite de Rmarkdown (+améliorations)
Quarto est un seul utilitaire (contrairement aux packages R)
Un package R pour éviter l'utilisation via l'interface en ligne de commande : https://cran.r-project.org/package=quarto
#### Retour d'expérience - _packager_ Quarto avec Guix, Sébastien Rey-Coreyhourcq
Raphaelle K.: Question du milieu pour gérer la complexité
**Guix**
Je n'arriverai pas à résumer tout l'intérêt de Guix pour la reproductibilité en 2 minutes, mais si il y a bien une chose à retenir c'est que Guix a été pensé pour atteindre cet objectif en particulier ( plus de détail ici [Vallet2022] et ici [Courtes]) Le projet a fêté ses 10 ans cette année, et la base utilisateur tend à se renforcer. Pour plus d'informations et une sensibilisation à ce système, vous pouvez voir [les cafés guix](https://hpc.guix.info/events/2022/caf%C3%A9-guix/) qui ont lieu régulièrement et la dernière présentation au [FOSDEM 2023](https://fosdem.org/2023/schedule/event/openresearch_guix/)
GNU Guix est le terme raccourci qui désigne à la fois un gestionnaire de paquet et un système d'exploitation / OS à part entière. Autrement dit vous pouvez utiliser Gnu Guix directement pour installer des logiciels dans Ubuntu, ou alors vous pouvez Gnu Guix System comme votre OS principal. Je ne vais pas citer tout les avantages et je préfère me concentrer sur les trois qui peuvent parler au plus grand monde :
- La possibilité (et pas l'obligation, guix fournit aussi des binaires) de compiler le code source des programmes ainsi que toutes les dépendances associées. Par *compiler* on entend ici le fait de transformer le code source en programme exécutable.
- La possibilité d'isoler et/ou de faire cohabiter différentes versions de programmes en même temps sur le même système. Tout est identifié par un HASH, une signature cryptographique / référence unique.
- La possibilité de reproduire au bit près le programme avec toutes ces dépendances avec un autre utilisateur Guix, et cela quelque soit son écosystème et son Linux/OS. Si cela marche chez moi, cela marche chez vous.
Si quelqu'un vous envoie un projet fait avec R 3.2 et Quarto 0.3 il y a 6 mois, et que vous avez R 4.0 et Quarto 1.5 sur votre machine, avec Guix vous pourrez sans soucis l'executer (avec [guix time-machine](https://guix.gnu.org/manual/fr/html_node/Invoquer-guix-time_002dmachine.html)).
Toutes les personnes qui ont déjà fait un peu de développement, peu importe finalement le langage, savent à quel point il est complexe de maintenir et de packager un script fonctionnel dans le temps. Des solutions existent, mais elles ne répondent que partiellement à la problématique, comme les fichiers Lockfiles, les containers Docker, etc.
Guix répond à une grande partie de ces difficultés.
**Packager Quarto pour Guix, pourquoi ?**
Quarto comme RMarkdown avant lui, permet de générer des analyses reproductibles à partir de blocs de codes executables. Seulement on sait que cette reproductibilité reste par bien des aspects une illusion [Wang2020]. Ne serait ce que parceque vous ne maitrisez pas l'environnement qui executera votre Notebook. Il suffit parfois tout simplement qu'un paquet x ou y ne soit plus disponible avec la dernière version de R que vous avez installé lors de la mise à jour de votre système par exemple...

_Figure 1 : Chaque niveau ignore plus ou moins ce qui se passe dans le niveau du dessous. Src : Konrad Hinsen_
Packager Quarto cela veut dire rendre reproductible une grande partie des couches invisibles qui supporte son execution. Bref, c'est ce qu'on apelle plus courrament les dépendances.
Si pour RMarkdown les dépendances sont relativement simple car le package R nécessite "seulement" l'existence de Pandoc sur le système. Et encore, si vous utilisez RStudio, Pandoc est fourni comme un binaire avec le logiciel.
Ce n'est plus du tout le cas de Quarto, qui n'est plus un package mais un programme à part entière [Quarto-Cli](https://github.com/quarto-dev/quarto-cli) dont il faut être en mesure de comprendre et de compiler l'ensemble des dépendances.
On observe bien ce qu'à mis en image Konrad, l'utilisateur final ne voit que le sommet de l'Iceberg, c'est à dire le produit final.
Quarto n'est -pour le moment- pas pensé pour être -facilement- compilé depuis zéro avec toutes ses dépendances. Ce qui en fait un logiciel difficile à mettre en package, pour plusieurs raisons, que j'ai appris de façon très empirique.
Je ne rentre pas dans les détails pour ne garder ici que les principaux écueils :
- Quarto est écrit en Javascript/Typescript et dépend de Deno, écrit dans le langage Rust, pour son execution
- Deno dépend d'une partie (JS) du navigateur _Chromium V8_, or les navigateurs et leurs API sont des objets complexes à compiler et à appréhender (600000 lignes de C++). Cela prend ~ 2 heures minimum sur un ordinateur portable (i7 4 coeurs 32 go Ram) pour une compilation, ce qui a rendu l'opération pour packager cette V8 très pénible.
- Rust dispose de son propre gestionnaire de package (comme de nombreux langages), et Deno fait appel à des centaines de dépendances dont il faut aussi s'assurer qu'elles peuvent être compilé sous Guix ...
- Les paquets dans Rust change très régulièrement de version, et suit une logique de Semver (https://semver.org/ ) difficile à apprehender dans la façon dont la compilation Rust est géré par Guix.
- Pour "simplifier" son usage en _mode développeur_, Quarto télécharge des logiciels/dépendances directement sur internet, ce qui n'est pas une bonne pratique pour la reproductibilité (lien cassé ?). Autrement dit, vous installez un logiciel qui installe lui-même d'autres logiciels en les téléchargeant sans le déclarer au niveau de l'OS ... On voit à quel point cela pose problème dans le cas de Guix ou tout est suivi et déclaratif.
- Quarto est à sa **1253ème release**, soit en moyenne plusieurs _release_ par semaine, avec des versions dans les dépendances qui changent très souvent.
**Perspectives**
Que faut il penser de tout çà ?
- En tant que débutant sur le packaging dans Guix, j'ai très clairement pris sans le savoir la décision de monter la face nord du mont blanc un jour de blizzard.
- J'ai packagé Deno et 95% des dépendances de Quarto, je suis très proche de réussir, mais la version packagé aura plusieurs mois de retard sur la version actuelle :sweat_smile: . Et oui il faudra se repencher sur toute la pile logicielle pour les futures versions, ce qui pose clairement question quand on sait le jeune âge de Quarto.
- Sur le plan purement logiciel, Quarto est très très loin encore d'afficher une stabilité qui fait de lui un bon candidat à la reproductibilité. Si certaines chosent ne bougeront probablement plus (la dépendance à Deno par exemple) les versions opérant dans la pile logicielle bouge encore beaucoup.
**Reférences**
_[Courtes2021] Ludovic Courtès. Reproduire les environnements logiciels : un maillon incontournable de la recherche reproductible. 1024 : Bulletin de la Société Informatique de France, 2021, 18, pp.15-22. ⟨10.48556/SIF.1024.18.15⟩. ⟨hal-03450690⟩_
_[Vallet2022] Vallet, N., Michonneau, D. & Tournier, S. Toward practical transparent verifiable and long-term reproducible research using Guix. Sci Data 9, 597 (2022)._ https://doi.org/10.1038/s41597-022-01720-9
_[Wang2020] J. Wang, T. KUO, L. Li and A. Zeller, "Assessing and Restoring Reproducibility of Jupyter Notebooks," in 2020 35th IEEE/ACM International Conference on Automated Software Engineering (ASE), Melbourne, 2020 pp. 138-149._
### Revue d'article
Georges Canguilhem, La connaissance de la vie, 1952

#### éléments pour la revue de lecture d'Andrew Feenberg, "Concrétiser Simondon et le constructivisme", Raphaëlle Krummeich
- Andrew Feenberg, philosophe américain de la technique
- ancien étudiant d'Herbert Marcuse (_l'homme unidimensionnel_, 1964)
- Canadian Research Chair in Philosophy of Technology à la Simon Fraser University de Vancouver
- directeur de programme au Collège International de Philosophie à Paris
- Contexte de l'article / de la revue
- la décade de Cerisy, 2013, Simondon ou l'invention du futur
- débat entre déterminisme et constructivisme de la technique
- discussion sur un positionnement critique du gt notebook
- Réconcilier technique & social
- la théorie de la concrétisation chez Simondon peut être imaginée comme une analyse fondant le développement de la complexité des techniques telle des _condensations élégantes visant à réaliser des compatibilités entre des fonctionnalités internes ou externes_ de la machine (p. 318).
- cette concrétisation (la réalisation _élégante_ de plusieurs fonctions par une machine) a des _causes intrinsèques_ - la technicité à un moment donné de l'histoire des techniques ou des inventions, et _extrinsèques_ - leur utilité sociale.
- le cas de l'appareil photographique :
- l'invention de l'appareil photo reflex pour déclencher la prise de vue est utilitaire (extrinsèque),
- le polaroïd _concrétise_ la prise de vue par la fonctionnalité d'impression de la photographie (intrinsèque),
_la critique porte sur la tentative de limiter l'invention à un seul but_, utilitaire ou associé à une logique technique (technicité).
- Trouver le lien entre la technique et le social
- le constructivisme focalise sur la perception contingente de la pertinence sociale de la technique - une _épokhé*_ de la technicité, qui pourtant en définit le contenu (_la technique en soi est évincée_)
- la théorie des réseaux d'actants (le _parlement des choses_ de Latour) évacue la fonction de médiation de la technique avec la nature et l'humain, alors que les transformations sociales de la modernité (quantification, formalisation) relèvent de la technicité
- combinant le concept constructiviste d'acteur et celui de concrétisation, l'auteur formule que la concrétisation d'un objet ou d'une machine résulte en un faisceau de variantes potentielles, en relation avec la variété des demandes sociales: elles rassemblent des groupes sociaux autour des artefacts réalisés ou réels.
- Lier Simondon et l'école de Francfort : une théorie de l'instrumentalisation
- _les théories de la modernité abordent rarement le plan technicisé de la société qui est aussi un plan socialisé de la technique_
- une instrumentalisation primaire serait _la décontextualisation des aspects utiles et la réduction aux fonctions techniques_ toujours _accompagnée d'une instrumentalisation secondaire_, les besoins de la société, dont _la dialectique définit une rationalité technologique_.
- l'_environnement humain et naturel_ ne sont pas externes à la technique, _ces connexions doivent s'internaliser dans la reproduction de la technique sous l'égide d'un code technique nouveau_, une concrétisation démocratique des principes techniques, des _rationnalisations démocratiques_.
**Reférences**
_[Feenberg, 2013]_
_[Widmaier, 2020]_
:::info
Quelques éléments critiques mis en débat pour le gt (Widmaier, 2020) ?
le notebook
- non comme _modèle_ : c'est à dire
- des imitations d'objets en vue d'une "perfection" formelle ou computationnelle marquant des ressemblances au schème utilitaire qu'il "faudrait atteindre"
- ou des associations d'idées ("détourner" un concept disciplinaire ou une méthode associée à un champ),
- mais plutôt comme _paradigmatique_ : c'est à dire au sein d'une analogie rigoureuse des rapports opératoires réalisés
- dans les relations entre opérations et structures réelles dans leur milieu (disciplinaire),
- et les processus de co-individuations d'objets _notebook_ et de collectifs (pluri ou interdisciplinaires) associés.
:::
#### Index [WIP]
*_épokhé_ : suspension du jugement, ne pas considérer l'objet / le sujet dans le raisonnement
technicité
concrétisation
individuation
allagmatique (analogie)
parlement des choses
pertinence (cercle de crédibilité scientifique)
### Discussions diverses & webinaire à venir
- Michael Nauge, mapstorytelling avec Quarto - https://gitlab.huma-num.fr/mshs-poitiers/plateforme/maps-storytelling-low-cost-experiment
- interactivité(s) du notebook
- Une présentation d’Onyxia par ses développeurs pourrait être intéressante dans le cadre de ce GT https://github.com/InseeFrLab/onyxia-web
- je peux proposer une présentation de Computo (https://computo.sfds.asso.fr/), nouveau journal (open access diamant) porté par la Société Française de Statistiques (SFdS), qui promeut des avancés en stats et machine learning, avec un accent très fort sur la reproductibilité (dans le sens que la soumission correspond à un notebook rendu par quarto reproduisant les résultat et le texte de l'article)
### Infos diverses - veille et liens
- Le GT Atelier Données organise une **webinaire le 31/03 (demain) de 10h à 12h :** [**Interroger les données**](https://mi-gt-donnees.pages.math.unistra.fr/site/#ev%C3%A8nements) avec

- [name=Ghislain DURIF] il y a un package R pour éviter l'utilisation via l'interface en ligne de commande : https://cran.r-project.org/package=quarto
- [name=Frédéric Santos] Et il y a aussi un mode quarto pour les utilisateurs d'Emacs : https://github.com/quarto-dev/quarto-emacs
- le lien vers les extensions : https://quarto.org/docs/extensions/
- autre lien (Mickaël) : https://github.com/mcanouil/awesome-quarto
- pandoc qui assure la conversion entre le fichier quarto et le jupyter notebook
- service en ligne type Binderhub pour exécuter les notebooks Quarto : serveur RStudio, https://onyxia.lab.sspcloud.fr/home (développé par l'INSEE). Permet l'utilisation d'images docker, le stockage de données volumineuses et le travail collaboratif. Cet outil est libre, vous pouvez également monter une instance sur votre propre serveur. Contact : Frédéric Comte (Insee), Shiraz Adamaly (Insee) et Romain Avouac (Insee)
- Pour la configuration de la version de R, de Python serait-il possible de revoir le fichier de configuration?
- Finalement quels sont les principaux apports par rapport à Rmd ? on peut faire des documents complexes (site web, livre) beaucoup plus simplement.
> 1. Ce n'est plus lié à Rstudio (on peut l'utiliser dans VScode par exemple)
- n'ai pas testé, n'ayant pas eu le cas d'usage mais cela semble possible: https://quarto.org/docs/computations/ojs.html#data-sources
- [name=Hugues Pécout] un exemple qui mix avec R et Observable : https://rcarto.github.io/Quarto/
- autre exemple (chargement long) : https://rysebaert.github.io/climbing_paris/
- [name=Ghislain] pour faire des notebooks sans installation locale ou serveurs https://jupyterlite.readthedocs.io/en/latest/_static/lab/index.html
- [name=Konrad] Mais attention: JupyterLite vient avec un environnement Python integré qui est très difficile à changer. Ou c'est bon pour vous, ou... il vaut mieux laisser tomber.
- [name=Nicolas Roelandt] il existe un équivalent R (R codé en web Assembly): https://github.com/r-wasm/webr