guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/03: doc: Add article for "1024" (French).


From: Ludovic Courtčs
Subject: 01/03: doc: Add article for "1024" (French).
Date: Fri, 26 Nov 2021 04:39:44 -0500 (EST)

civodul pushed a commit to branch master
in repository maintenance.

commit 223759e1732bb8be5a676db4d868a21f61985b3d
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Mon Jul 26 11:51:38 2021 +0200

    doc: Add article for "1024" (French).
    
    * doc/sif-2021/article-1024.org: New file.
---
 .gitignore                    |   4 +
 doc/sif-2021/article-1024.org | 594 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 598 insertions(+)

diff --git a/.gitignore b/.gitignore
index 5b4c628..eb2ee0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -219,3 +219,7 @@ talk.vrb
 /talks/packaging-con-2021/grail/images/bootstrap-graph-reduced.pdf
 /talks/packaging-con-2021/grail/images/bootstrap-graph.pdf
 /talks/packaging-con-2021/grail/images/pytorch-graph.pdf
+/doc/sif-2021/article-1024.bbl
+/doc/sif-2021/article-1024.bib
+/doc/sif-2021/article-1024.pdf
+/doc/sif-2021/article-1024.tex
diff --git a/doc/sif-2021/article-1024.org b/doc/sif-2021/article-1024.org
new file mode 100644
index 0000000..2410fb1
--- /dev/null
+++ b/doc/sif-2021/article-1024.org
@@ -0,0 +1,594 @@
+#+TITLE: Reproduire les environnements logiciels : un maillon incontournable 
de la recherche reproductible
+#+AUTHOR: Ludovic Courtès
+#+ORGANIZATION: Inria
+#+DATE: 26 juillet 2021
+#+STARTUP: content hidestars
+#+LANGUAGE: fr
+#+LATEX_CLASS: article
+#+LATEX_CLASS_OPTIONS: [a4paper]
+#+LATEX_HEADER: \usepackage{xcolor}
+#+LATEX_HEADER: \usepackage[T1]{fontenc}
+#+LATEX_HEADER: \usepackage[french]{babel}
+#+LATEX_HEADER: \definecolor{darkblue}{rgb}{0.0, 0.0, 0.55}
+#+LATEX_HEADER: \definecolor{cobalt}{rgb}{0.0, 0.28, 0.67}
+#+LATEX_HEADER: \definecolor{coolblack}{rgb}{0.0, 0.18, 0.39}
+#+LATEX_HEADER: 
\PassOptionsToPackage{hyphens}{url}\usepackage[colorlinks=true, 
linkcolor=coolblack, urlcolor=cobalt, citecolor=coolblack]{hyperref}
+#+LATEX_HEADER: \RequirePackage[hyphens]{url}
+#+LATEX_HEADER: \usepackage{libertine}
+#+LATEX_HEADER: \usepackage{inconsolata}
+#+OPTIONS: toc:nil num:nil
+
+* COMMENT What’s this?
+
+  This is an article for 
“[[https://www.societe-informatique-de-france.fr/bulletin/][1024]]”, the 
bulletin of the Société
+  Informatique de France (French computer science society).
+
+* Introduction
+
+  Un constat est largement partagé : puisque les logiciels font
+  dorénavant partie intégrante du processus scientifique, une démarche
+  de recherche reproductible — un pléonasme ! — doit intégrer le
+  logiciel.  Mais de quelle manière au juste ?
+
+  Le Deuxième Plan national pour la science ouverte
+  [[cite:mesri2021planscienceouverte]], publié en juillet 2021, « soutient »
+  la diffusion du code source des logiciels de recherche sous licence
+  libre permettant la diffusion sans restriction, mais aussi la
+  modification et la diffusion de versions modifiées.  C’est une
+  transcription naturelle du processus scientifique : le travail de
+  critique ne peut se faire correctement que si les pairs peuvent
+  étudier le code source et faire leurs propres expériences.  Le Plan
+  insiste aussi sur la conservation des codes sources grâce à Software
+  Heritage sans laquelle ce travail devient vite impossible.
+
+  Que le code source soit disponible est une condition nécessaire mais
+  pas suffisante.  Les sociétés savantes ont mis en place un système de
+  badges pour évaluer le niveau de reproductibilité des résultats
+  décrits dans leurs publications.  Celui de l'/Association for Computer
+  Machinery/ (ACM) dispose de trois niveaux selon que le code soit
+  disponible (premier niveau), utilisable (deuxième niveau), ou que les
+  résultats aient été reproduits indépendamment en faisant tourner le
+  code[fn:2].  La reproduction des environnements logiciels — le fait de
+  pouvoir déployer précisément l’ensemble logiciel qui a servi à une
+  production scientifique — est un aspect qu’on relègue volontiers au
+  rang de détail technique mais qui est pourtant incontournable pour
+  parvenir à cet objectif de reproductibilité.  Quels outils, quelles
+  méthodes existent pour y parvenir ?
+
+  
+* Entre « gestion » et « gel » des environnements logiciels
+
+  Beaucoup de logiciels de recherche sont développés pour GNU/Linux et
+  tirent parti des outils de déploiement logiciel qu’on y trouve.  Les
+  « distributions » GNU/Linux telles que Debian et Ubuntu se basent sur
+  des outils de /gestion de paquets/ comme =apt= qui permettent
+  d’installer, de mettre à jour ou de retirer les logiciels.  Ces outils
+  ont une vision du /graphe de dépendance/ des logiciels et permettent
+  de savoir quels logiciels sont présents sur la machine.
+
+  Malheureusement, ces outils ont deux limitations : ils requièrent les
+  droits d’administration système, et ils ne permettent de déployer
+  qu’un seul environnement logiciel à la fois.  Pour cette raison, en
+  particulier dans le domaine du calcul intensif (ou HPC, pour
+  /high-performance computing/), on a développé d’autres outils de
+  gestions de paquets destinés à être utilisés /par dessus/ celui du
+  système, avec l’avantage d’être utilisable sans les droits
+  d’administration, par chaque utilisateur·ice, qui peut ainsi déployer
+  son ou ses environnements logiciels.  Les outils populaires dans cette
+  catégorie incluent CONDA, Spack et EasyBuild, ainsi que des outils
+  propres Ă  un langage de programmation (pour Python, Julia, R, etc.).
+
+  L’expérience a rapidement montré que cet empilement d’outils de
+  déploiement devient vite préjudiciable à la reproductibilité, car
+  chaque outil ignore celui « du dessous », bien qu’il dépende de ce que
+  celui-ci a installé.  Autrement dit, chaque outil ne voit qu’une
+  partie du graphe de dépendance de l’ensemble.  À cela s’ajoute le fait
+  que, mĂŞme pris individuellement, ces outils ne permettent pas ou
+  difficilement de reproduire un environnement logiciel à l’identique.
+  C’est notamment pour cette raison qu’une deuxième approche du
+  déploiement logiciel s’est popularisée : celle qui consiste à /geler
+  l’environnement logiciel/, plutôt que d’essayer de le décrire.
+
+  L’idée peut se résumer ainsi : puisqu’il est difficile voire
+  impossible de redéployer un environnement logiciel à l’identique en
+  utilisant ces outils de gestion de paquets, créons l’environnement une
+  fois pour toutes puis sauvegardons les octets qui le composent — les
+  fichiers de chaque logiciel installé.  On obtient ainsi une /image/
+  binaire, qui permet, sur n’importe quelle machine et à n’importe quel
+  moment, de relancer les logiciels scientifiques d’intérêt.  Le plus
+  souvent, on utilise les outils à base de « conteneurs » Linux, tels
+  que Docker ou Singularity, mais une machine virtuelle peut aussi
+  remplir cette fonction.
+
+  L’approche est séduisante : puisqu’on a tous les octets des logiciels,
+  la reproductibilité est totale ; on a la garantie de pouvoir relancer
+  les logiciels, et donc, de reproduire l’expérience scientifique.  Mais
+  l’inconvénient est de taille : puisque l’on a /que/ les octets des
+  logiciels, comment savoir si ces octets correspondent vraiment au code
+  source que l’on croit exécuter ?  Comment expérimenter avec cet
+  environnement logiciel, dans le cadre d’une démarche scientifique,
+  pour établir l’impact d’un choix de version, d’une option de
+  compilation ou du code d’une fonction ?  L’approche est pratique,
+  c’est indéniable, mais ces deux faiblesses fragilisent l’édifice
+  scientifique qui se bâtirait sur ces fondations.
+  
+* Le déploiement logiciel vu comme une fonction pure
+
+  GNU Guix[fn:3] est un outil de déploiement logiciel qui cherche à
+  obtenir le meilleur des deux mondes : la reproductibilité parfaite des
+  environnements « gelés » dans des conteneurs, et la transparence et la
+  flexibilité des outils de gestion de paquets.  Il est issu de travaux
+  à la croisée de l’ingénierie logicielle et des langages, d’abord en
+  bâtissant sur le modèle de /déploiement purement fonctionnel/ de Nix
+  [[cite:dolstra2004nix]] et en Ă©tendant Scheme, un langage de programmation
+  fonctionnelle de la famille Lisp, avec des abstractions permettant
+  d’en tirer partie.  En termes pratiques, Guix hérite de Nix les
+  fondations permettant la reproductibilité d’environnements logiciels
+  et fournit les outils pour exploiter ces capacités sans expertise
+  préalable [[cite:courtes2015reproducible]].
+
+  Le principe du déploiement fonctionnel est de traiter le processus de
+  compilation d’un logiciel comme une /fonction pure/, au sens
+  mathématique : les entrées de la fonction sont le code source, un
+  compilateur et des bibliothèques, et son résultat est le logiciel
+  compilé.  Les mêmes entrées mènent au même résultat ; Guix s’assure
+  que c’est effectivement le cas en vérifiant que les compilations sont
+  reproductibles /au bit près/, ainsi que le font d’autres projets
+  participant à l’effort /Reproducible Builds/[fn:1].  Cette approche
+  fonctionnelle capture ainsi l’essence de la variabilité du déploiement
+  logiciel.  Car non : une série de noms et de numéros de version de
+  logiciels /ne suffit pas/ Ă  rendre compte des variations qui peuvent
+  être introduites lors du déploiement de chaque logiciel.
+
+  Chaque déploiement logiciel est vu comme une fonction pure, la
+  définition est donc récursive.  Mais puisqu’elle est récursive, qu’y
+  a-t-il « au tout début » ? Quel compilateur compile le premier
+  compilateur ?  On arrive là à une question fondamentale, presque
+  philosophique, mais qui a un impact très concret sur la transparence
+  des systèmes logiciels comme l’a expliqué Ken Thompson dans son
+  allocution pour la remise du prix Alan Turing
+  [[cite:thompson1984trusting]] : tant que subsistent dans le graphe de
+  dépendance des binaires opaques dont la provenance ne peut pas être
+  vérifiée, il est impossible d’établir avec certitude l’authenticité
+  des binaires qui en découlent.
+
+  Guix s’attaque à ce problème en basant le graphe de dépendance de ses
+  paquets sur un ensemble de binaires pré-compilés bien identifié et le
+  plus petit possible — actuellement quelques dizaines de méga-octets —,
+  avec pour objectif de le réduire à un seul binaire suffisamment petit
+  pour pouvoir être analysé par un humain [[cite:janneke2020bootstrap]].
+  C’est là un sujet d’ingénierie et de recherche à part entière.
+
+* DĂ©clarer et reproduire un environnement logiciel
+
+  Guix peut s’utiliser comme une distribution à part entière, Guix
+  System, ou alors comme un outil de déploiement par dessus une
+  distribution existante et donnant accès à plus de 18 000 logiciels
+  libres.  Il fournit une interface en ligne de commande similaire Ă 
+  celle des outils de gestion de paquets : la commande =guix install
+  python=, par exemple, installe l’interprète Python, la commande =guix
+  pull= met Ă  jour la liste des logiciels disponibles et =guix upgrade=
+  met à jour les logiciels précédemment installés.  Chaque opération
+  s’effectue sans les droits d’administration système.  Plusieurs
+  supercalculateurs en France et à l’étranger proposent Guix et le
+  projet Guix-HPC, qui implique plusieurs institutions dont Inria, vise
+  Ă  Ă©largir le mouvement[fn:4].
+
+  Voyons maintenant comment on peut concrètement, en tant que
+  scientifique, utiliser cet outil pour que ses expériences
+  calculatoires soient reproductibles.  On peut commencer par lister
+  dans un /manifeste/ les logiciels à déployer ; ce fichier peut être
+  partagé avec ses pairs et stocké en gestion de version.  L’exemple
+  ci-dessous nous montre un manifeste pour les logiciels Python, SciPy
+  et NumPy :
+
+  #+begin_src scheme
+    (specifications->manifest
+     '("python" "python-scipy" "python-numpy"))
+  #+end_src
+
+  Il s’agit de code Scheme.  Une utilisation avancée serait par exemple
+  d’inclure dans le manifeste des définitions de paquets ou de variantes
+  de paquets ; Guix permet notamment de réécrire facilement le graphe de
+  dépendance d’un paquet pour le personnaliser, ce qui est une pratique
+  courante en HPC [[cite:courtes2015reproducible]].
+
+  Supposons que l’on ait ainsi créé le fichier ~manifeste.scm~, on peut
+  déployer les logiciels qui y sont listés — et uniquement ceux-là —
+  avec, par exemple, la commande suivante :
+
+  #+begin_src sh
+    guix package -m manifeste.scm
+  #+end_src
+
+  Ce manifeste, toutefois, ne contient que des noms de paquets
+  symboliques, et pas de numéros de version, options de compilation,
+  etc.  Comment dans ces conditions reproduire exactement le mĂŞme
+  environnement logiciel ?
+
+  Pour cela, il nous faut une information supplémentaire : l’identifiant
+  de révision de Guix.  Puisque Guix et toutes les définitions de
+  paquets qu’il fournit sont stockées dans un dépôt de gestion de
+  version Git, l’identifiant de révision désigne de manière non ambiguë
+  /l’ensemble du graphe de dépendance des logiciels/ — aussi bien la
+  version de Python, que ses options des compilations, ses dépendances,
+  et ce récursivement jusqu’au compilateur du compilateur.  C’est la
+  commande ~guix describe~ qui donne la révision actuellement utilisée :
+
+  #+begin_src sh
+    $ guix describe
+    Génération 107  20 juil. 2021 13:23:35  (actuelle)
+      guix 7b9c441
+       URL du dépôt : https://git.savannah.gnu.org/git/guix.git
+       branche : master
+       commit : 7b9c4417d54009efd9140860ce07dec97120676f
+  #+end_src
+
+  En conservant cette information adossée au manifeste, on a de quoi
+  reproduire /au bit près/ cet environnement logiciel, sur des machines
+  différentes, mais aussi à des moments différents.  Le plus pratique
+  est de stocker cette information dans un fichier, au format que Guix
+  utilise pour représenter les /canaux/ utilisés[fn:5] :
+
+  #+begin_src sh
+    guix describe -f channels > canaux.scm
+  #+end_src
+
+  Une personne souhaitant reproduire l’environnement logiciel pourra le
+  faire avec la commande suivante :
+
+  #+begin_src sh
+    guix time-machine -C canaux.scm -- \
+       package -m manifeste.scm
+  #+end_src
+
+  Cette commande va d’abord obtenir et déployer la révision de Guix
+  spécifiée dans ~canaux.scm~, à la manière d’une « machine à voyager
+  dans le temps ».  C’est ensuite la commande ~guix package~ de cette
+  révision là qui est lancée pour déployer les logiciels conformément à
+  ~manifeste.scm~.  En quoi est-ce différent d’autres outils ?
+
+  D’abord, une version ultérieure de Guix peut reproduire une ancienne
+  version de Guix et de là, déployer les logiciels décrits dans le
+  manifeste.  Contrairement Ă  des outils comme CONDA ou ~apt~, Guix ne
+  repose pas sur la mise à disposition de binaires pré-compilés sur les
+  serveurs du projet ; il peut utiliser des binaires pré-compilés — et
+  ça rend les installations plus rapides — mais ses définitions de
+  paquets contiennent toutes les instructions nécessaires pour compiler
+  chaque logiciel, avec un résultat déterministe au bit près.
+
+  Une des deux différences majeures par rapport à l’approche qui
+  consiste Ă  geler un environnement dans une image Docker ou similaire
+  est le /suivi de provenance/ : au lieu de binaires inertes, on a lĂ 
+  accès au graphe de dépendance complet lié au code source des
+  logiciels.  Chacun·e peut /vérifier/ que le binaire correspond bien au
+  code source — puisque les compilations sont déterministes — plutôt que
+  de faire confiance à la personne qui fournit les binaires.  C’est le
+  principe même de la démarche scientifique expérimentale qui est
+  appliquée au logiciel.
+
+  La deuxième différence est que, ayant accès à toutes les instructions
+  pour compiler les logiciels, Guix fournit aux usagers les moyens
+  d'/expérimenter/ avec cet ensemble logiciel : on peut, y compris
+  depuis la ligne de commande, faire varier certains aspects, tel que
+  les versions ou variantes utilisées.  L’expérimentation reste
+  possible.
+
+  Et si le code source de ces logiciels venait à disparaître ?  On peut
+  compter sur Software Heritage (abrégé SWH), qui a pour mission rien de
+  moins que d’archiver tout le code source public disponible[fn:6].
+  Depuis quelques années, Guix est intégré à SWH de deux manières :
+  d’une part Guix va automatiquement chercher le code source sur SWH
+  lorsqu’il est devenu indisponible à l’adresse initiale
+  [[cite:courtes2019connecting]], et d’autre part Guix alimente la liste des
+  codes sources archivés par SWH.  Le lien avec l’archivage de code en
+  amont est assuré.
+
+* Vers des articles reproductibles
+
+  On a vu le lien en amont avec l’archivage de code source, mais le lien
+  en aval avec la production scientifique est également crucial.  C’est
+  un travail en cours, mais on peut déjà citer quelques initiatives pour
+  construire au-dessus de Guix des outils et méthodes pour aider les
+  scientifiques dans la production et dans la critique scientifique.
+
+  Alors que les annexes pour la reproductibilité logicielle des
+  conférences scientifiques sont bien souvent informelles, écrites en
+  langage naturel, et laissent le soin aux lecteurs et lectrices de
+  reproduire tant bien que mal l’environnement logiciel, un saut
+  qualitatif consiste Ă  fournir les fichiers ~canaux.scm~ et
+  ~manifeste.scm~ qui constituent en quelque sorte une description
+  exécutable de l’environnement logiciel.  Cette approche a montré ses
+  bénéfices notamment pour des travaux en génomique dont les résultats
+  demandent de nombreux traitements logiciels.
+
+  La revue en ligne ReScience C organisait en 2020 le /Ten Years
+  Reproducibility Challenge/, un défi invitant les scientifiques a
+  reproduire les résultats d’articles vieux de dix ans ou plus[fn:7].
+  C’est dans ce cadre que nous avons montré comment Guix peut être
+  utilisé pour décrire l’ensemble d’une chaîne de traitement
+  scientifique, incluant le code source du logiciel dont traite
+  l’article, les expériences effectuées avec ce logiciel, les courbes
+  produites dans ce cadre, pour enfin arriver au PDF de l’article
+  incluant la prose et ces courbes [[cite:courtes2020:storage]].  Toute
+  cette chaîne est décrite, automatisée, et reproductible, de bout en
+  bout.  Cette approche pourrait être généralisée aux domaines
+  scientifiques ne requérant pas de ressources de calcul spécialisées ;
+  nous comptons fournir des outils pour la rendre plus accessible.
+
+  La question du déploiement logiciel se retrouve également dans
+  d’autres contextes.  Guix-Jupyter[fn:8], par exemple, permet d’ajouter
+  à des bloc-notes Jupyter des annotations décrivant l’environnement
+  logiciel dans lequel doit s’exécuter le bloc-notes.  L’environnement
+  décrit est automatiquement déployé /via/ Guix, ce qui garantit que les
+  cellules du bloc-notes s’exécutent avec les « bons » logiciels.  Dans
+  le domaine du calcul intensif et du traitement de données
+  volumineuses, le /Guix Workflow Language/ (GWL) permet de décrire des
+  chaînes de traitement pouvant s’exécuter sur des grappes de calcul
+  tout en bénéficiant de déploiement reproductible /via/ Guix[fn:9].
+
+* Adapter les pratiques scientifiques
+
+  La place croissante prise par le logiciel dans les travaux
+  scientifiques avait, paradoxalement, probablement été une des causes
+  de la « crise » de la reproductibilité en sciences expérimentales que
+  beaucoup ont observée — par la perte de bonnes pratiques anciennes
+  telles que les cahiers de laboratoire.  Notre souhait est qu’elle
+  puisse maintenant, au contraire, permettre une /meilleure/
+  reproductibilité des résultats expérimentaux, en refusant de mettre de
+  côté la rigueur scientifique quand on arrive dans le terrain logiciel.
+
+  De mĂŞme que les outils de gestion de version sont progressivement
+  entrés dans la boîte à outils des scientifiques comme un moyen
+  incontournable de suivre les évolutions d’un logiciel, les outils de
+  déploiement logiciel reproductible tels que Guix mériteraient faire
+  partie des bonnes pratiques communément admises.  Il en va de la
+  crédibilité de la démarche scientifique moderne.
+  
+
+#+BIBLIOGRAPHY: article-1024 plain
+
+* COMMENT Bibliographie
+
+
+** Deuxième Plan national pour la science ouverte
+   :PROPERTIES:
+   :TITLE:    Deuxième {Plan} national pour la science ouverte — {Généraliser} 
la science ouverte en {France}, 2021–2024
+   :BTYPE:    misc
+   :AUTHOR:   {Ministère de l’enseignement supérieur, de la recherche et de 
l’innovation}
+   :YEAR:     2021
+   :MONTH:    July
+   :CUSTOM_ID: mesri2021planscienceouverte
+   :NOTE:     
\url{https://www.ouvrirlascience.fr/deuxieme-plan-national-pour-la-science-ouverte/}
+   :END:
+
+** Reflections on Trusting Trust
+  :PROPERTIES:
+  :TITLE:    Reflections on Trusting Trust
+  :BTYPE:    article
+  :AUTHOR:   Ken Thompson
+  :JOURNAL:  Communications of the {ACM}
+  :YEAR:     1984
+  :MONTH:    August
+  :PAGES:    761--763
+  :CUSTOM_ID: thompson1984trusting
+  :END:
+
+** Connecting Reproducible Deployment to a Long-Term Source Code Archive
+   :PROPERTIES:
+   :TITLE:    Connecting Reproducible Deployment to a Long-Term Source Code 
Archive
+   :BTYPE:    misc
+   :AUTHOR:   Ludovic Courtès
+   :CUSTOM_ID: courtes2019connecting
+   :NOTE:     
\url{https://guix.gnu.org/en/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/}
+   :YEAR:     2019
+   :MONTH:    March
+   :END:
+
+** {Guix} Further Reduces Bootstrap Seed to 25%
+   :PROPERTIES:
+   :TITLE:    {Guix} Further Reduces Bootstrap Seed to 25\%
+   :BTYPE:    misc
+   :NOTE:     
\url{https://guix.gnu.org/en/blog/2020/guix-further-reduces-bootstrap-seed-to-25/}
+   :YEAR:     2020
+   :MONTH:    June
+   :AUTHOR:   Jan Nieuwenhuizen
+   :CUSTOM_ID: janneke2020bootstrap
+   :END:
+
+** Reproducible and User-Controlled Software Environments in HPC with Guix
+   :PROPERTIES:
+   :TITLE:    Reproducible and User-Controlled Software Environments in {HPC} 
with {Guix}
+   :BTYPE:    inproceedings
+   :AUTHOR:   Ludovic Courtès and Ricardo Wurmus
+   :BOOKTITLE: Euro-Par 2015: Parallel Processing Workshops
+   :YEAR:     2015
+   :PAGES:    579--591
+   :MONTH:    August
+   :SERIES:   Lecture Notes in Computer Science
+   :URL:      https://hal.inria.fr/hal-01161771/en
+   :CUSTOM_ID: courtes2015reproducible
+   :END:
+
+** Code Staging in GNU Guix
+   :PROPERTIES:
+   :TITLE:    Code Staging in {GNU Guix}
+   :BTYPE:    inproceedings
+   :AUTHOR:   Ludovic Courtès
+   :BOOKTITLE: 16th {ACM SIGPLAN} International Conference on Generative 
Programming: Concepts and Experiences ({GPCE}'17)
+   :YEAR:     2017
+   :MONTH:    October
+   :VOLUME:   52
+   :NUMBER:   12
+   :PAGES:    41--48
+   :NOTE:     \url{https://hal.inria.fr/hal-01580582}
+   :CUSTOM_ID: courtes2017staging
+   :END:
+
+** Nix: A Safe and Policy-Free System for Software Deployment
+   :PROPERTIES:
+   :TITLE:   {Nix}: A Safe and Policy-Free System for Software Deployment
+   :BTYPE:   inproceedings
+   :AUTHOR: Eelco Dolstra and Merijn de Jonge and Eelco Visser
+   :BOOKTITLE: Proceedings of the 18th Large Installation System 
Administration Conference (LISA '04)
+   :PAGES:   79--92
+   :PUBLISHER: USENIX
+   :YEAR:    2004
+   :MONTH:   November
+   :CUSTOM_ID: dolstra2004nix
+   :END:
+
+** CODECHECK: an Open Science initiative for the independent execution of 
computations underlying research articles during peer review to improve 
reproducibility
+   :PROPERTIES:
+   :TITLE:    {CODECHECK}: an {Open Science} initiative for the independent 
execution of computations underlying research articles during peer review to 
improve reproducibility  [version 1; peer review: 1 approved, 1 approved with 
reservation]
+   :BTYPE:    article
+   :AUTHOR:   NĂĽst, Daniel and Eglen, Stephen J.
+   :JOURNAL:  F1000Research
+   :NOTE:     \url{https://doi.org/10.12688/f1000research.51738.1}
+   :VOLUME:   10
+   :NUMBER:   253
+   :YEAR:     2021
+   :CUSTOM_ID: nust2021:codecheck
+   :END:
+
+** {[Re]} Storage Tradeoffs in a Collaborative Backup Service for Mobile 
Devices
+   :PROPERTIES:
+   :TITLE:    {[Re]} {Storage} Tradeoffs in a Collaborative Backup Service for 
Mobile Devices
+   :BTYPE:    article
+   :AUTHOR:   Ludovic Courtès
+   :JOURNAL:  ReScience C
+   :VOLUME:   6
+   :NUMBER:   1
+   :YEAR:     2020
+   :MONTH:    June
+   :DOI:      {10.5281/zenodo.3886739}
+   :NOTE:      \url{https://doi.org/10.5281/zenodo.3886739}
+   :CUSTOM_ID: courtes2020:storage
+   :END:
+
+** Guix-HPC Activity Report 2020
+   :PROPERTIES:
+   :TITLE:   {Guix-HPC Activity Report 2020}
+   :BTYPE:   techreport
+   :YEAR:    2020
+   :AUTHOR:  Braun, Lars-Dominik and Courtès, Ludovic and Prins, Pjotr and 
Tournier, Simon and Wurmus, Ricardo
+   :NOTE:     
\url{https://hpc.guix.info/blog/2021/02/guix-hpc-activity-report-2020/}
+   :CUSTOM_ID: braun2021:guixhpc
+   :END:
+
+** Guix-HPC Activity Report 2019
+   :PROPERTIES:
+   :TITLE:   {Guix-HPC} Activity Report 2019
+   :BTYPE:   techreport
+   :YEAR:    2020
+   :AUTHOR:  Courtès, Ludovic and Garlick, Paul and Hinsen, Konrad and Prins, 
Pjotr and Wurmus, Ricardo
+   :NOTE:     
\url{https://hpc.guix.info/blog/2020/02/guix-hpc-activity-report-2019/}
+   :CUSTOM_ID: courtes2020:guixhpc
+   :END:
+
+** Maneage
+   :PROPERTIES:
+   :AUTHOR: Mohammad Akhlaghi
+   :TITLE: {Maneage}: Managing Data Lineage
+   :BTYPE: misc
+   :HOWPUBLISHED: {\url{http://maneage.org/}}
+   :YEAR: 2020
+   :NOTE: {Accessed 2020/05/29}
+   :CUSTOM_ID: akhlaghi20:maneage
+   :END:
+
+** Software Heritage
+   :PROPERTIES:
+   :AUTHOR: Roberto Di Cosmo
+   :TITLE: {Software Heritage} and {GNU Guix} join forces to enable long term 
reproducibility
+   :BTYPE: misc
+   :HOWPUBLISHED: 
{\url{https://www.softwareheritage.org/2019/04/18/software-heritage-and-gnu-guix-join-forces-to-enable-long-term-reproducibility/}}
+   :YEAR: 2019
+   :NOTE: {Accessed 2020/06/05}
+   :CUSTOM_ID: swh2019:guix
+   :END:
+
+** Manuel de référence de GNU Guix
+   :PROPERTIES:
+   :AUTHOR: {Projet GNU Guix}
+   :TITLE: Manuel de référence de {GNU Guix}
+   :BTYPE: manual
+   :NOTE: \url{https://guix.gnu.org/manual/fr/html_node/}
+   :YEAR: 2020
+   :NOTE: {Accessed 2020/06/05}
+   :CUSTOM_ID: guix2020:manual
+   :END:
+
+** Challenge to Scientists
+   :PROPERTIES:
+   :TITLE:    Challenge to Scientists: Does Your Ten-Year-Old Code Still Run?
+   :BTYPE:    article
+   :AUTHOR:   Jeffrey M. Perkel
+   :JOURNAL:  Nature
+   :NOTE:     \url{https://www.nature.com/articles/d41586-020-02462-7}
+   :YEAR:     2020
+   :MONTH:    August
+   :CUSTOM_ID: perkel2020:challenge
+   :END:
+
+** Staged Computation
+   :PROPERTIES:
+   :TITLE:    Staged Computation: The Technique You Didn’t Know You Were Using
+   :BTYPE:    article
+   :AUTHOR:   Konrad Hinsen
+   :JOURNAL:  Computing in Science and Engineering, Institute of Electrical 
and Electronics Engineers (CiSE)
+   :VOLUME:   22
+   :NUMBER:   4
+   :PAGES:    99--103
+   :YEAR:     2020
+   :MONTH:    June
+   :NOTE:     \url{https://dx.doi.org/10.1109/MCSE.2020.2985508}
+   :CUSTOM_ID: hinsen2020:staged
+   :END:
+
+
+* Copier cet article
+ :PROPERTIES:
+ :COPYING:  t
+ :END:
+
+ Copyright © 2021 Ludovic Courtès
+
+ #+BEGIN_QUOTE
+ Cet article est mis Ă  disposition suivant les termes de la licence
+ Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0
+ International ([[https://creativecommons.org/licenses/by-sa/4.0/deed.fr][CC 
BY-SA 4.0]]).
+ #+END_QUOTE
+
+* Footnotes
+[fn:1] /Reproducible Builds/, https://reproducible-builds.org 
+
+[fn:9] Guix Workflow Language, https://workflows.guix.info 
+
+[fn:8] Guix-Jupyter, https://gitlab.inria.fr/guix-hpc/guix-kernel 
+
+[fn:7] ReScience, /Ten Years Reproducibility Challenge/,
+https://rescience.github.io/ten-years/
+
+[fn:6] Software Heritage, https://www.softwareheritage.org
+
+[fn:5] Un /canal/ Guix est une collection de définitions de paquets
+stockée dans un dépôt Git.
+
+[fn:4] Projet Guix-HPC, https://hpc.guix.info 
+
+[fn:3] GNU Guix, https://guix.gnu.org
+
+[fn:2] 
[[https://www.acm.org/publications/policies/artifact-review-badging][Artifact 
Review and Badging – Version 1.0]], Association for
+Computer Machinery, August 2020
+
+* COMMENT Emacs
+
+Local Variables:
+ispell-local-dictionary: "francais"
+eval: (require 'ox-bibtex)
+eval: (setq-local org-bibtex-export-arbitrary-fields t)
+eval: (setq-local org-bibtex-prefix "")
+eval: (setq-local org-latex-default-packages-alist '())
+eval: (setq-local org-latex-pdf-process '("rubber --pdf %f"))
+End:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]