diff --git a/.gitignore b/.gitignore index 7928c8d..9d08a82 100644 --- a/.gitignore +++ b/.gitignore @@ -203,3 +203,13 @@ /talks/fosdem-2020/containers/talk.toc /talks/fosdem-2020/containers/talk.vrb /talks/fosdem-2020/containers/talk.dvi +/talks/jdev-2020/images/hwloc-graph.pdf +/talks/jdev-2020/talk.aux +/talks/jdev-2020/talk.log +/talks/jdev-2020/talk.nav +/talks/jdev-2020/talk.out +/talks/jdev-2020/talk.pdf +/talks/jdev-2020/talk.pdf.log +/talks/jdev-2020/talk.snm +/talks/jdev-2020/talk.toc +/talks/jdev-2020/talk.vrb diff --git a/talks/jdev-2020/images/Git-Logo-2Color.pdf b/talks/jdev-2020/images/Git-Logo-2Color.pdf new file mode 120000 index 0000000..cc315a8 --- /dev/null +++ b/talks/jdev-2020/images/Git-Logo-2Color.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/Git-Logo-2Color.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/Guix-1-0.pdf b/talks/jdev-2020/images/Guix-1-0.pdf new file mode 120000 index 0000000..8df586d --- /dev/null +++ b/talks/jdev-2020/images/Guix-1-0.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/Guix-1-0.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/Guix-horizontal-print.pdf b/talks/jdev-2020/images/Guix-horizontal-print.pdf new file mode 120000 index 0000000..a4472b3 --- /dev/null +++ b/talks/jdev-2020/images/Guix-horizontal-print.pdf @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/Guix-horizontal-print.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/IBM_Blue_Gene_P_supercomputer.jpg b/talks/jdev-2020/images/IBM_Blue_Gene_P_supercomputer.jpg new file mode 120000 index 0000000..9908c9e --- /dev/null +++ b/talks/jdev-2020/images/IBM_Blue_Gene_P_supercomputer.jpg @@ -0,0 +1 @@ +../../aramis-2019/images/IBM_Blue_Gene_P_supercomputer.jpg \ No newline at end of file diff --git a/talks/jdev-2020/images/acm-artifacts-functional.jpg b/talks/jdev-2020/images/acm-artifacts-functional.jpg new file mode 120000 index 0000000..c9fd040 --- /dev/null +++ b/talks/jdev-2020/images/acm-artifacts-functional.jpg @@ -0,0 +1 @@ +../../aramis-2019/images/acm-artifacts-functional.jpg \ No newline at end of file diff --git a/talks/jdev-2020/images/arrow-right.pdf b/talks/jdev-2020/images/arrow-right.pdf new file mode 120000 index 0000000..e9e8f57 --- /dev/null +++ b/talks/jdev-2020/images/arrow-right.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/arrow-right.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/big-picture-1.pdf b/talks/jdev-2020/images/big-picture-1.pdf new file mode 120000 index 0000000..cfa6c7a --- /dev/null +++ b/talks/jdev-2020/images/big-picture-1.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/big-picture-1.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/big-picture-2.pdf b/talks/jdev-2020/images/big-picture-2.pdf new file mode 120000 index 0000000..760875b --- /dev/null +++ b/talks/jdev-2020/images/big-picture-2.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/big-picture-2.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/big-picture-3.pdf b/talks/jdev-2020/images/big-picture-3.pdf new file mode 120000 index 0000000..3fe6c8a --- /dev/null +++ b/talks/jdev-2020/images/big-picture-3.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/big-picture-3.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/conda-broke-tweet.png b/talks/jdev-2020/images/conda-broke-tweet.png new file mode 120000 index 0000000..8e14f1b --- /dev/null +++ b/talks/jdev-2020/images/conda-broke-tweet.png @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/conda-broke-tweet.png \ No newline at end of file diff --git a/talks/jdev-2020/images/conda.pdf b/talks/jdev-2020/images/conda.pdf new file mode 120000 index 0000000..1e990f5 --- /dev/null +++ b/talks/jdev-2020/images/conda.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/conda.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/delorean.jpg b/talks/jdev-2020/images/delorean.jpg new file mode 120000 index 0000000..43d3a41 --- /dev/null +++ b/talks/jdev-2020/images/delorean.jpg @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/delorean.jpg \ No newline at end of file diff --git a/talks/jdev-2020/images/docker-guix-lol.pdf b/talks/jdev-2020/images/docker-guix-lol.pdf new file mode 120000 index 0000000..4a296c8 --- /dev/null +++ b/talks/jdev-2020/images/docker-guix-lol.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/docker-guix-lol.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/easybuild.png b/talks/jdev-2020/images/easybuild.png new file mode 120000 index 0000000..c171cdd --- /dev/null +++ b/talks/jdev-2020/images/easybuild.png @@ -0,0 +1 @@ +../../aramis-2019/images/easybuild.png \ No newline at end of file diff --git a/talks/jdev-2020/images/end-to-end-1.pdf b/talks/jdev-2020/images/end-to-end-1.pdf new file mode 100644 index 0000000..7d753d3 Binary files /dev/null and b/talks/jdev-2020/images/end-to-end-1.pdf differ diff --git a/talks/jdev-2020/images/end-to-end-2.pdf b/talks/jdev-2020/images/end-to-end-2.pdf new file mode 100644 index 0000000..7abe7a6 Binary files /dev/null and b/talks/jdev-2020/images/end-to-end-2.pdf differ diff --git a/talks/jdev-2020/images/end-to-end.svg b/talks/jdev-2020/images/end-to-end.svg new file mode 100644 index 0000000..b8a2575 --- /dev/null +++ b/talks/jdev-2020/images/end-to-end.svg @@ -0,0 +1,3379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + source + + + + + + + + + + + executable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PDF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .tex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + python.tar.gz + + + + + + + + + + + + + + python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gcc.tar.gz + + + + + + + + + + + + + gcc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/talks/jdev-2020/images/environment-modules.png b/talks/jdev-2020/images/environment-modules.png new file mode 120000 index 0000000..e757fc5 --- /dev/null +++ b/talks/jdev-2020/images/environment-modules.png @@ -0,0 +1 @@ +../../aramis-2019/images/environment-modules.png \ No newline at end of file diff --git a/talks/jdev-2020/images/environment.png b/talks/jdev-2020/images/environment.png new file mode 120000 index 0000000..88f87e6 --- /dev/null +++ b/talks/jdev-2020/images/environment.png @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/environment.png \ No newline at end of file diff --git a/talks/jdev-2020/images/guix-jupyter.png b/talks/jdev-2020/images/guix-jupyter.png new file mode 120000 index 0000000..1391ab8 --- /dev/null +++ b/talks/jdev-2020/images/guix-jupyter.png @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/guix-jupyter.png \ No newline at end of file diff --git a/talks/jdev-2020/images/guix-scope.png b/talks/jdev-2020/images/guix-scope.png new file mode 120000 index 0000000..5622c09 --- /dev/null +++ b/talks/jdev-2020/images/guix-scope.png @@ -0,0 +1 @@ +../../aramis-2019/images/guix-scope.png \ No newline at end of file diff --git a/talks/jdev-2020/images/guixhpc-logo-transparent-white.pdf b/talks/jdev-2020/images/guixhpc-logo-transparent-white.pdf new file mode 120000 index 0000000..febf548 --- /dev/null +++ b/talks/jdev-2020/images/guixhpc-logo-transparent-white.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/guixhpc-logo-transparent-white.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/guixhpc-logo-transparent.pdf b/talks/jdev-2020/images/guixhpc-logo-transparent.pdf new file mode 120000 index 0000000..c618dd1 --- /dev/null +++ b/talks/jdev-2020/images/guixhpc-logo-transparent.pdf @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/guixhpc-logo-transparent.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/hwloc-graph.dot b/talks/jdev-2020/images/hwloc-graph.dot new file mode 120000 index 0000000..04bb25e --- /dev/null +++ b/talks/jdev-2020/images/hwloc-graph.dot @@ -0,0 +1 @@ +../../aramis-2019/images/hwloc-graph.dot \ No newline at end of file diff --git a/talks/jdev-2020/images/inria-white-2019.pdf b/talks/jdev-2020/images/inria-white-2019.pdf new file mode 120000 index 0000000..2e94f2d --- /dev/null +++ b/talks/jdev-2020/images/inria-white-2019.pdf @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/inria-white-2019.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/jupyter-select-kernel.png b/talks/jdev-2020/images/jupyter-select-kernel.png new file mode 120000 index 0000000..f21c2fc --- /dev/null +++ b/talks/jdev-2020/images/jupyter-select-kernel.png @@ -0,0 +1 @@ +../../fosdem-2020/guix-jupyter/images/jupyter-select-kernel.png \ No newline at end of file diff --git a/talks/jdev-2020/images/lwn-docker-hello-world.png b/talks/jdev-2020/images/lwn-docker-hello-world.png new file mode 120000 index 0000000..f2f6211 --- /dev/null +++ b/talks/jdev-2020/images/lwn-docker-hello-world.png @@ -0,0 +1 @@ +../../aramis-2019/images/lwn-docker-hello-world.png \ No newline at end of file diff --git a/talks/jdev-2020/images/openhub-contributors.png b/talks/jdev-2020/images/openhub-contributors.png new file mode 120000 index 0000000..45262e2 --- /dev/null +++ b/talks/jdev-2020/images/openhub-contributors.png @@ -0,0 +1 @@ +../../aramis-2019/images/openhub-contributors.png \ No newline at end of file diff --git a/talks/jdev-2020/images/re-storage-tradeoffs.png b/talks/jdev-2020/images/re-storage-tradeoffs.png new file mode 100644 index 0000000..fe1908f Binary files /dev/null and b/talks/jdev-2020/images/re-storage-tradeoffs.png differ diff --git a/talks/jdev-2020/images/repeatability-study.png b/talks/jdev-2020/images/repeatability-study.png new file mode 120000 index 0000000..e70af8c --- /dev/null +++ b/talks/jdev-2020/images/repeatability-study.png @@ -0,0 +1 @@ +../../aramis-2019/images/repeatability-study.png \ No newline at end of file diff --git a/talks/jdev-2020/images/rescience.png b/talks/jdev-2020/images/rescience.png new file mode 120000 index 0000000..e4eea5e --- /dev/null +++ b/talks/jdev-2020/images/rescience.png @@ -0,0 +1 @@ +../../aramis-2019/images/rescience.png \ No newline at end of file diff --git a/talks/jdev-2020/images/singularity-def-file.png b/talks/jdev-2020/images/singularity-def-file.png new file mode 120000 index 0000000..c2c903f --- /dev/null +++ b/talks/jdev-2020/images/singularity-def-file.png @@ -0,0 +1 @@ +../../aramis-2019/images/singularity-def-file.png \ No newline at end of file diff --git a/talks/jdev-2020/images/singularity-hpc-wire.png b/talks/jdev-2020/images/singularity-hpc-wire.png new file mode 120000 index 0000000..33ad971 --- /dev/null +++ b/talks/jdev-2020/images/singularity-hpc-wire.png @@ -0,0 +1 @@ +../../aramis-2019/images/singularity-hpc-wire.png \ No newline at end of file diff --git a/talks/jdev-2020/images/smoothie.pdf b/talks/jdev-2020/images/smoothie.pdf new file mode 120000 index 0000000..535ff3b --- /dev/null +++ b/talks/jdev-2020/images/smoothie.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/smoothie.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/snap-crypto-miner.png b/talks/jdev-2020/images/snap-crypto-miner.png new file mode 120000 index 0000000..e8c1262 --- /dev/null +++ b/talks/jdev-2020/images/snap-crypto-miner.png @@ -0,0 +1 @@ +../../aramis-2019/images/snap-crypto-miner.png \ No newline at end of file diff --git a/talks/jdev-2020/images/software-heritage-logo-title-white.pdf b/talks/jdev-2020/images/software-heritage-logo-title-white.pdf new file mode 120000 index 0000000..0c5148d --- /dev/null +++ b/talks/jdev-2020/images/software-heritage-logo-title-white.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/software-heritage-logo-title-white.pdf \ No newline at end of file diff --git a/talks/jdev-2020/images/spack-bug.png b/talks/jdev-2020/images/spack-bug.png new file mode 120000 index 0000000..8fe73da --- /dev/null +++ b/talks/jdev-2020/images/spack-bug.png @@ -0,0 +1 @@ +../../aramis-2019/images/spack-bug.png \ No newline at end of file diff --git a/talks/jdev-2020/images/spack-build-errors.png b/talks/jdev-2020/images/spack-build-errors.png new file mode 120000 index 0000000..c19daa1 --- /dev/null +++ b/talks/jdev-2020/images/spack-build-errors.png @@ -0,0 +1 @@ +../../aramis-2019/images/spack-build-errors.png \ No newline at end of file diff --git a/talks/jdev-2020/images/spack.png b/talks/jdev-2020/images/spack.png new file mode 120000 index 0000000..00f738c --- /dev/null +++ b/talks/jdev-2020/images/spack.png @@ -0,0 +1 @@ +../../aramis-2019/images/spack.png \ No newline at end of file diff --git a/talks/jdev-2020/images/ten-years-challenge.png b/talks/jdev-2020/images/ten-years-challenge.png new file mode 100644 index 0000000..f449ae4 Binary files /dev/null and b/talks/jdev-2020/images/ten-years-challenge.png differ diff --git a/talks/jdev-2020/images/workflow-management-3.pdf b/talks/jdev-2020/images/workflow-management-3.pdf new file mode 120000 index 0000000..5fa03ac --- /dev/null +++ b/talks/jdev-2020/images/workflow-management-3.pdf @@ -0,0 +1 @@ +../../aramis-2019/images/workflow-management-3.pdf \ No newline at end of file diff --git a/talks/jdev-2020/rules.ini b/talks/jdev-2020/rules.ini new file mode 100644 index 0000000..5a74423 --- /dev/null +++ b/talks/jdev-2020/rules.ini @@ -0,0 +1,9 @@ +;; Rules for Rubber. + +[dot-pdf] +target = (.*)\.pdf +source = \1.dot +rule = shell +cost = 0 +command = dot -Tpdf -Gratio=.78 -o $target $source +message = rendering $source into $target diff --git a/talks/jdev-2020/talk.tex b/talks/jdev-2020/talk.tex new file mode 100644 index 0000000..5e14d15 --- /dev/null +++ b/talks/jdev-2020/talk.tex @@ -0,0 +1,745 @@ +% The comment below tells Rubber to compile the .dot files. +% +% rubber: module graphics +% rubber: rules rules.ini + +% Make sure URLs are broken on hyphens. +% See . +\RequirePackage[hyphens]{url} + +\documentclass[aspectratio=169]{beamer} + +\usetheme{default} + +\usefonttheme{structurebold} + +% Nice sans-serif font. +\usepackage[sfdefault,lining]{FiraSans} %% option 'sfdefault' activates Fira Sans as the default text font +\renewcommand*\oldstylenums[1]{{\firaoldstyle #1}} + +% Nice monospace font. +\usepackage{inconsolata} +%% \renewcommand*\familydefault{\ttdefault} %% Only if the base font of the document is to be typewriter style +\usepackage[T1]{fontenc} + +\usepackage[utf8]{inputenc} +\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol} + +\usecolortheme{seagull} % white on black +\usepackage[absolute,overlay]{textpos} +\usepackage{tikz} +\usetikzlibrary{arrows,shapes,trees,shadows,positioning} +\usepackage{fancyvrb} % for '\Verb' +\usepackage{xifthen} % for '\isempty' + +% Remember the position of every picture. +\tikzstyle{every picture}+=[remember picture] + +\tikzset{onslide/.code args={<#1>#2}{% + \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path +}} + +% Colors. +\definecolor{guixred1}{RGB}{226,0,38} % red P +\definecolor{guixorange1}{RGB}{243,154,38} % guixorange P +\definecolor{guixyellow}{RGB}{254,205,27} % guixyellow P +\definecolor{guixred2}{RGB}{230,68,57} % red S +\definecolor{guixred3}{RGB}{115,34,27} % dark red +\definecolor{guixorange2}{RGB}{236,117,40} % guixorange S +\definecolor{guixtaupe}{RGB}{134,113,127} % guixtaupe S +\definecolor{guixgrey}{RGB}{91,94,111} % guixgrey S +\definecolor{guixdarkgrey}{RGB}{46,47,55} % guixdarkgrey S +\definecolor{guixblue1}{RGB}{38,109,131} % guixblue S +\definecolor{guixblue2}{RGB}{10,50,80} % guixblue S +\definecolor{guixgreen1}{RGB}{133,146,66} % guixgreen S +\definecolor{guixgreen2}{RGB}{157,193,7} % guixgreen S + +\definecolor{rescienceyellow}{RGB}{254,246,91} + +\setbeamerfont{title}{size=\huge} +\setbeamerfont{frametitle}{size=\huge} +\setbeamerfont{normal text}{size=\Large} + +% White-on-black color theme. +\setbeamercolor{structure}{fg=guixorange1,bg=black} +\setbeamercolor{title}{fg=white,bg=black} +\setbeamercolor{date}{fg=guixorange1,bg=black} +\setbeamercolor{frametitle}{fg=white,bg=black} +\setbeamercolor{titlelike}{fg=white,bg=black} +\setbeamercolor{normal text}{fg=white,bg=black} +\setbeamercolor{alerted text}{fg=guixyellow,bg=black} +\setbeamercolor{section in toc}{fg=white,bg=black} +\setbeamercolor{section in toc shaded}{fg=white,bg=black} +\setbeamercolor{subsection in toc}{fg=guixorange1,bg=black} +\setbeamercolor{subsection in toc shaded}{fg=white,bg=black} +\setbeamercolor{subsubsection in toc}{fg=guixorange1,bg=black} +\setbeamercolor{subsubsection in toc shaded}{fg=white,bg=black} +\setbeamercolor{frametitle in toc}{fg=white,bg=black} +\setbeamercolor{local structure}{fg=guixorange1,bg=black} + +\newcommand{\highlight}[1]{\alert{\textbf{#1}}} + +\title{Au-delà des conteneurs : \\ + Environnements reproductibles \\ + avec GNU Guix} + +\author{Ludovic Courtès} +\date{\small{Plénière ARAMIS, Lyon\\ 23 mai 2019}} + +\setbeamertemplate{navigation symbols}{} % remove the navigation bar + +\AtBeginSection[]{ + \begin{frame} + \frametitle{} + \tableofcontents[currentsection] + \end{frame} +} + + +\newcommand{\screenshot}[2][width=\paperwidth]{ + \begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[{#1}]{#2}}; + \end{tikzpicture} + \end{frame} +} + + +\begin{document} + +\begin{frame}[plain, fragile] + \vspace{10mm} + \Huge{\textbf{Au-delà des conteneurs~:\\Environnements + reproductibles\\avec GNU~Guix}} + \\[2cm] + \large{Ludovic Courtès} + \\[2mm] + \alert{JDEV, \oldstylenums{10 juillet 2020}} + + \vfill{} + \hfill{\includegraphics[width=0.2\paperwidth]{images/inria-white-2019}} + \vspace{2mm} +\end{frame} + + +\setbeamercolor{normal text}{fg=black,bg=white} +% http://www.nature.com/ngeo/journal/v7/n11/full/ngeo2294.html +%% \screenshot{images/nature-transparency} + +% https://www.nature.com/nmeth/journal/v12/n12/full/nmeth.3686.html +%% \screenshot{images/nature-reviewing-computational-methods} +% http://blogs.nature.com/methagora/2014/02/guidelines-for-algorithms-and-software-in-nature-methods.html + +% http://www.acm.org/publications/policies/artifact-review-badging +%% \screenshot[height=\paperheight]{images/acm-artifact-review-and-badging} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt]{ + \includegraphics[height=.8\textheight]{images/acm-artifacts-functional} + }; + \node [at=(current page.south), anchor=south, + text=guixdarkgrey, fill=white, text opacity=1]{ + \small{\url{https://www.acm.org/publications/policies/artifact-review-badging}} + }; + \end{tikzpicture} +\end{frame} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt]{ + \includegraphics[height=.8\textheight]{images/rescience} + }; + \node [at=(current page.south), anchor=south, + text=guixdarkgrey, fill=white, text opacity=1]{ + \small{\url{https://rescience.github.io/}} + }; + \end{tikzpicture} +\end{frame} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt]{ + \includegraphics[width=.9\textwidth]{images/repeatability-study} + }; + \node [at=(current page.south east), anchor=south east, + text=guixdarkgrey, fill=white, text opacity=1]{ + \small{\url{http://reproducibility.cs.arizona.edu/}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \includegraphics[width=\textwidth]{images/big-picture-1} +\end{frame} +\begin{frame}[plain] + \includegraphics[width=\textwidth]{images/big-picture-2} +\end{frame} +\begin{frame}[plain] + \includegraphics[width=\textwidth]{images/big-picture-3} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=\paperwidth]{images/IBM_Blue_Gene_P_supercomputer}}; + + \node[at=(current page.center), rounded corners=4, text centered, + inner sep=3mm, opacity=.75, text opacity=1]{ + \Huge{\textbf{HPC = cutting edge?}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{fg=black,bg=white} +\screenshot{images/environment-modules} +\setbeamercolor{normal text}{fg=white,bg=black} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[overlay] + \node [at=(current page.north), anchor=north, + fill=white, text width=\paperwidth, text centered, inner sep=0pt, + inner sep=0.2\paperheight] + {\includegraphics[width=0.3\paperwidth]{images/spack}}; + \node [at=(current page.center), anchor=center, + text width=\paperwidth, text centered, + inner sep=0.2\paperheight] + {\includegraphics[width=0.4\paperwidth]{images/conda}}; + \node [at=(current page.south), anchor=south, + text width=\paperwidth, text centered, inner sep=25pt, + text height=0.5\paperheight] + {\includegraphics[width=0.3\paperwidth]{images/easybuild}}; + + % https://github.com/LLNL/spack/blob/develop/share/spack/logo/spack-logo-text-64.png + % https://github.com/LLNL/spack/blob/develop/share/spack/logo/spack-logo-white-text-48.png + % https://docs.conda.io/en/latest/_images/conda_logo.svg + \end{tikzpicture} +\end{frame} + +%% \screenshot[width=\paperwidth]{images/easybuild-bug} + +% https://github.com/spack/spack/issues?q=is%3Aissue+is%3Aopen+label%3Abuild-error +%% \screenshot[width=\paperwidth]{images/spack-bug} +\screenshot[width=\paperwidth]{images/spack-build-errors} +\screenshot[width=.9\paperwidth]{images/conda-broke-tweet} + +\setbeamercolor{normal text}{bg=guixdarkgrey} +\begin{frame}[plain] + \Huge{\textbf{Approach \#2:\\``Preserve the mess''.}} + \\[0.5cm] + \hfill{\large{-- Arnaud Legrand (Inria reproducibility WG)}} +\end{frame} +\setbeamercolor{normal text}{bg=black} + +\setbeamercolor{normal text}{bg=white} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=0.95\paperwidth]{images/singularity-hpc-wire}}; + \node [at=(current page.south east), anchor=south east, + text=black, text opacity=1, fill=white]{ + \small{\url{https://www.hpcwire.com/2016/10/20/singularity-containers-easing-scientific-computing}} + }; + \end{tikzpicture} +\end{frame} + +%% \begin{frame}[fragile] +%% \begin{tikzpicture}[overlay] +%% \node [at=(current page.center)] +%% {\includegraphics[width=0.7\textwidth]{images/shrink-wrap}}; +%% \node<2> [at=(current page.east), anchor=east] +%% {\includegraphics[width=0.4\textwidth]{images/shrink-wrap2}}; +%% \end{tikzpicture} +%% \end{frame} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=1.3\textwidth]{images/smoothie}}; + \node [at=(current page.south east), anchor=south east, text=guixgrey] + {\small{courtesy of Ricardo Wurmus}}; + \end{tikzpicture} +\end{frame} + +% https://xkcd.com/1988/ + +\screenshot[height=0.95\paperheight]{images/singularity-def-file} +%% \screenshot[width=\paperwidth]{images/rena-container-ship-wreck-nz} + +\setbeamercolor{normal text}{bg=white,fg=guixorange1} +\begin{frame}[fragile] + \begin{tikzpicture}[overlay] + \node(logo) [at=(current page.center), inner sep=0pt] + {\includegraphics[width=\textwidth]{images/guixhpc-logo-transparent-white}}; + %% \node [at=(logo.south), anchor=north, text=black, inner sep=10pt] + %% {\Large{\textbf{Reproducible software deployment\\for high-performance computing.}}}; + \node [at=(current page.south), anchor=south, text=guixdarkgrey, inner sep=20pt] + {\Large{\url{https://hpc.guix.info}}}; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \begin{frame} +%% \LARGE{ +%% \begin{enumerate} +%% \item transactional package manager +%% \item software environment manager +%% \item APIs \& tools to customize environments +%% \item container provisioning tools +%% \end{enumerate} +%% } +%% \end{frame} + +\begin{frame} + \Large{ + \begin{itemize} + \item started in 2012 + \item \highlight{$\approx$14,000 packages}, all free software + \item \highlight{4 architectures}:\\ + x86\_64, i686, ARMv7, AArch64 + %% \item binaries available + \item \highlight{Guix-HPC effort (Inria, MDC, UBC, UTHCS) started in 2017} + \end{itemize} + } +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\screenshot[width=.7\paperwidth]{images/Guix-1-0} +\setbeamercolor{normal text}{bg=black} + + +\begin{frame}[fragile] + + \begin{semiverbatim} + \LARGE{ +guix \alert{install} gcc-toolchain openmpi hwloc + +eval `guix package \alert{--search-paths}=prefix` + +guix package \alert{--roll-back} + +guix \alert{environment} --ad-hoc \\ + gcc-toolchain@5.5 hwloc@1 +} + \end{semiverbatim} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} + \LARGE{ +guix package \alert{--manifest}=my-packages.scm + + + + (\alert{specifications->manifest} + '("gcc-toolchain" "openmpi" + "scotch" "mumps")) +} + \end{semiverbatim} +\end{frame} + +\setbeamercolor{normal text}{bg=guixdarkgrey} +\begin{frame}[fragile] + \begin{semiverbatim} + \Large{ +bob@laptop$ guix package \alert{--manifest}=my-packages.scm +bob@laptop$ guix \alert{describe} + guix cabba9e + repository URL: https://git.sv.gnu.org/git/guix.git + commit: cabba9e15900d20927c1f69c6c87d7d2a62040fe + +\pause + + +alice@supercomp$ guix \alert{pull} --commit=cabba9e +alice@supercomp$ guix package \alert{--manifest}=my-packages.scm +} + \end{semiverbatim} +\end{frame} + + +\begin{frame}[fragile] + \begin{tikzpicture}[remember picture, overlay] + % https://commons.wikimedia.org/wiki/File:TeamTimeCar.com-BTTF_DeLorean_Time_Machine-OtoGodfrey.com-JMortonPhoto.com-07.jpg + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=\paperwidth]{images/delorean}}; + \node [rounded corners=4, text centered, anchor=north, + text width=10cm, + inner sep=3mm, opacity=.75, text opacity=1] + at (current page.center) { + \textbf{\Huge{travel in space \emph{and} time!}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=guixgrey} +\begin{frame}[fragile] + \begin{semiverbatim} + \LARGE{ +guix \alert{time-machine} --commit=cabba9e -- \\ + install hello + } + \end{semiverbatim} +\end{frame} + +\begin{frame}[fragile] + \begin{semiverbatim} +(define pastix + (\alert{package} + (name "pastix") + (home-page "https://gitlab.inria.fr/solverstack/pastix") + (\alert{source} (origin + (method git-fetch) + (uri (git-reference + (\alert{url} home-page) + (\alert{commit} "2f30ff07a")\tikz{\node(commit){};} + (recursive? #t))) + (sha256 + (base32 + "106rf402cvfdhc2yf\textrm{...}")))) + \textrm{...})) + \end{semiverbatim} + + \begin{tikzpicture}[overlay] + \node<2->(swh) [inner sep=3mm, rounded corners, fill=black, + opacity=.3, text opacity=1] at (12,5) { + % https://annex.softwareheritage.org/public/logo/ + \includegraphics[width=0.33\textwidth]{images/software-heritage-logo-title-white} + }; + \node<2-> [at=(current page.south), anchor=south, + inner sep=2mm, rounded corners, fill=black, text width=13cm, + opacity=.3, text opacity=1] { + \url{https://www.softwareheritage.org/2019/04/18/software-heritage-and-gnu-guix-join-forces-to-enable-long-term-reproducibility/} + }; + + \path<2->[very thick, draw=guixorange1] + (swh) edge [out=-90, in=0, ->] (commit); + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=guixred3} +\begin{frame}[fragile]%{Container provisioning} + \LARGE{ + \begin{semiverbatim} +\$ guix \alert{pack}\only<2>{ --relocatable}\only<3>{ --format=squashfs}\only<4->{ --format=docker} \\ + python python-numpy python-scipy +\textrm{...} +/gnu/store/\textrm{...}-\only<1-2>{pack.tar.gz}\only<3>{singularity-image.tar.gz}\only<4->{docker-image.tar.gz} + \end{semiverbatim} + } +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\screenshot[width=.9\paperwidth]{images/docker-guix-lol} + +\setbeamercolor{normal text}{bg=guixdarkgrey} +\begin{frame}[fragile] + \begin{semiverbatim} +\LARGE{ +guix pack hwloc \\ + \alert{--with-source}=./hwloc-2.1rc1.tar.gz + + +guix install mumps \\ + \alert{--with-input}=scotch=pt-scotch +} + \end{semiverbatim} +\end{frame} + +\setbeamercolor{normal text}{bg=guixgreen1} +\begin{frame}[plain] + \Huge{\textbf{Reproducible deployment\\ is the key.}} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +%% \screenshot{images/pigx1} +%% \screenshot{images/pigx2} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt]{ + \includegraphics[height=.7\textheight]{images/workflow-management-3} + }; + \node [at=(current page.south), anchor=south, + text=guixdarkgrey, fill=white, text opacity=1]{ + \small{\url{https://www.guixwl.org/}} + }; + \node [at=(current page.north west), anchor=north west, opacity=0, + inner sep=5mm, text=guixdarkgrey, fill=white, text opacity=1]{ + \Large{\textbf{Guix Workflow Language}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain, fragile] + \center{\includegraphics[width=0.35\textwidth]{images/guix-jupyter}} + + \begin{tikzpicture}[overlay] + \node[text=guixdarkgrey, anchor=south, at=(current page.south), + inner sep=3mm] + {\url{https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks}}; + \end{tikzpicture} + +\end{frame} + +%% \screenshot{images/jupyter-select-kernel} +\screenshot{images/environment} + +%% \begin{frame}[plain] +%% \begin{tikzpicture}[remember picture, overlay] +%% \node [at=(current page.center), inner sep=0pt]{ +%% \includegraphics[width=.95\textwidth]{images/guix-kernel-python} +%% }; +%% \node [at=(current page.south), anchor=south, +%% text=guixdarkgrey, fill=white, text opacity=1]{ +%% \small{\url{https://gitlab.inria.fr/guix-hpc/guix-kernel/}} +%% }; +%% \node [at=(current page.north west), anchor=north west, opacity=0, +%% inner sep=5mm, text=guixdarkgrey, fill=white, text opacity=1]{ +%% \Large{\textbf{Guix-Jupyter}} +%% }; +%% \end{tikzpicture} +%% \end{frame} + +\setbeamercolor{normal text}{bg=rescienceyellow} +\begin{frame}[fragile, plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.south), anchor=south, inner sep=0pt]{ + \includegraphics[height=0.95\textheight]{images/ten-years-challenge} + }; + \node [at=(current page.north), anchor=north, text=guixgrey] { + \small{\url{https://rescience.github.io/ten-years/}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=white} + +\screenshot{images/end-to-end-1} +\screenshot[height=\textheight]{images/end-to-end-2} + +\begin{frame}[fragile, plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt]{ + \includegraphics[width=.9\textwidth]{images/re-storage-tradeoffs} + }; + \node [at=(current page.center), anchor=south, inner sep=8mm, text=guixgrey] { + \small{\url{https://doi.org/10.5281/zenodo.3886739}} + }; + \end{tikzpicture} +\end{frame} + +\setbeamercolor{normal text}{bg=guixblue2} +\begin{frame}[plain] + \Huge{\textbf{Wrap-up.}} +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\screenshot[width=\textwidth]{images/big-picture-3} + +%% \setbeamercolor{normal text}{fg=white,bg=black} +%% \begin{frame} +%% \LARGE{ +%% \begin{itemize} +%% \item \highlight{reproduce} software environments +%% \item \highlight{declare \& publish} complete environments +%% \item beyond replication: precision \highlight{experimentation} +%% \item a foundation for \highlight{``deployment-aware'' apps} +%% \end{itemize} +%% } +%% \end{frame} + +\screenshot{images/guix-scope} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[fragile] + \vspace{-2cm} + \begin{tikzpicture} + \matrix[row sep=10mm, column sep=1cm]{ + % https://git-scm.com/downloads/logos + \node {\includegraphics[width=0.2\textwidth]{images/Git-Logo-2Color}}; & + \node {\includegraphics[width=0.15\textwidth]{images/arrow-right}}; & + \node {\includegraphics[width=0.24\textwidth]{images/Guix-horizontal-print}}; + \\ + }; + \end{tikzpicture} + + \begin{tikzpicture}[overlay] + \node [at=(current page.center), anchor=north, + text=black, text width=.9\textwidth]{ + \Huge{Let's add\\ \textbf{reproducible deployment}\\ + to our best practices book. \par + }}; + \end{tikzpicture} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setbeamercolor{normal text}{bg=black} +\begin{frame}[plain] + +\vfill{ + \vspace{3cm} + \center{\includegraphics[width=0.5\textwidth]{images/guixhpc-logo-transparent}}\\[1.0cm] + \texttt{ludovic.courtes@inria.fr |} @GuixHPC + \center{\alert{\url{https://hpc.guix.info}}} + \\[1cm] +} +\end{frame} + +\setbeamercolor{normal text}{bg=guixred2} +\begin{frame} + \Huge{\textbf{Bonus slides!}} +\end{frame} + +\setbeamercolor{normal text}{bg=black} +\begin{frame}[fragile] + %% \frametitle{Bit-Reproducible Builds$^*$} + %% \framesubtitle{$^*$ almost!} + + \begin{semiverbatim} +\Large{ +\$ guix build hwloc +\uncover<2->{/gnu/store/\tikz[baseline]{\node[anchor=base](nixhash){\alert<2>{h2g4sf72\textrm{...}}};}-hwloc-1.11.2} + +\uncover<3->{\$ \alert<3>{guix gc --references /gnu/store/\textrm{...}-hwloc-1.11.2} +/gnu/store/\textrm{...}-glibc-2.24 +/gnu/store/\textrm{...}-gcc-4.9.3-lib +/gnu/store/\textrm{...}-hwloc-1.11.2 +}} + \end{semiverbatim} + + \begin{tikzpicture}[overlay] + \node<1>(labelnixhash) [fill=white, text=black, inner sep=0.5cm, + rounded corners] at (current page.center) {% + \Large{\textbf{isolated build}: chroot, separate name spaces, etc.} + }; + + \node<2>(labelnixhash) [fill=white, text=black] at (4cm, 2cm) {% + hash of \textbf{all} the dependencies}; + \path[->]<2>(labelnixhash.north) edge [bend left, in=180, out=-45] (nixhash.south); + + \draw<4-> (-10pt, 105pt) [very thick, color=guixorange2, rounded corners=8pt] + arc (10:-50:-50pt and 110pt); + \node<4->[fill=white, text=black, text opacity=1, opacity=.7, + rounded corners=2mm, inner sep=5mm] + at (7, 2) {\textbf{\Large{(nearly) bit-identical for everyone}}}; + \end{tikzpicture} + +\end{frame} + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=0.95\paperwidth]{images/snap-crypto-miner}}; + \node [at=(current page.south east), anchor=south east, + text=black, text opacity=1, fill=white]{ + \small{\url{https://github.com/canonical-websites/snapcraft.io/issues/651}} + }; + \end{tikzpicture} +\end{frame} + +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[width=0.9\paperwidth]{images/lwn-docker-hello-world}}; + \node [at=(current page.south east), anchor=south east, + text=white, fill=black, text opacity=1]{ + \small{\url{https://lwn.net/Articles/752982/}} + }; + \end{tikzpicture} +\end{frame} + + + +\setbeamercolor{normal text}{bg=white} +\begin{frame}[plain] + \begin{tikzpicture}[remember picture, overlay] + \node [at=(current page.center), inner sep=0pt] + {\includegraphics[height=\paperheight]{images/hwloc-graph}}; + \end{tikzpicture} +\end{frame} +\setbeamercolor{normal text}{fg=white,bg=black} + +\begin{frame}{cluster deployments} + \Large{ + \begin{itemize} + % http://zvfak.blogspot.ch/2015/07/gnu-guix-for-easily-managing.html + \item \highlight{Max Delbrück Center} (DE): 250-node cluster + + workstations + % https://ubc.uu.nl/infrastructure/ + % https://wiki.bioinformatics.umcutrecht.nl/pub/HPC/WebHome/HPC_Flyer.png + \item \highlight{UMC Utrecht} (NL): 68-node cluster (1,000+ cores) + % https://www.qriscloud.org.au/support/qriscloud-documentation/75-euramoo-datasheet + % https://www.qriscloud.org.au/support/qriscloud-documentation/76-flashlite-datasheet + \item \highlight{University of Queensland} (AU): 20-node cluster + (900 cores) + \item \highlight{PlaFRIM} (FR): Inria Bordeaux (3,000+ cores) + \end{itemize} + } +\end{frame} + +%% \screenshot[width=.9\paperwidth]{images/openhub-activity} +\screenshot[width=\paperwidth]{images/openhub-contributors} + +\begin{frame}{} + \begin{textblock}{12}(2, 6) + \tiny{ + Copyright \copyright{} 2010, 2012--2019 Ludovic Courtès \texttt{ludo@gnu.org}.\\[3.0mm] + GNU Guix logo, CC-BY-SA 4.0, \url{https://gnu.org/s/guix/graphics}. + \\[1.5mm] + Smoothie image and hexagon image \copyright{} 2019 Ricardo Wurmus, + CC-BY-SA 4.0. + \\[1.5mm] + Hand-drawn arrows by Freepik from flaticon.com. + \\[1.5mm] + DeLorean time machine picture \copyright{} 2014 Oto Godfrey and + Justin Morton, CC-BY-SA 4.0, + \url{https://commons.wikimedia.org/wiki/File:TeamTimeCar.com-BTTF_DeLorean_Time_Machine-OtoGodfrey.com-JMortonPhoto.com-07.jpg}. + \\[1.5mm] + Copyright of other images included in this document is held by + their respective owners. + \\[3.0mm] + This work is licensed under the \alert{Creative Commons + Attribution-Share Alike 3.0} License. To view a copy of this + license, visit + \url{https://creativecommons.org/licenses/by-sa/3.0/} or send a + letter to Creative Commons, 171 Second Street, Suite 300, San + Francisco, California, 94105, USA. + \\[2.0mm] + At your option, you may instead copy, distribute and/or modify + this document under the terms of the \alert{GNU Free Documentation + License, Version 1.3 or any later version} published by the Free + Software Foundation; with no Invariant Sections, no Front-Cover + Texts, and no Back-Cover Texts. A copy of the license is + available at \url{https://www.gnu.org/licenses/gfdl.html}. + \\[2.0mm] + % Give a link to the 'Transparent Copy', as per Section 3 of the GFDL. + The source of this document is available from + \url{https://git.sv.gnu.org/cgit/guix/maintenance.git}. + } + \end{textblock} +\end{frame} + +\end{document} + +% Local Variables: +% coding: utf-8 +% comment-start: "%" +% comment-end: "" +% ispell-local-dictionary: "francais" +% compile-command: "rubber --pdf talk.tex" +% End: + +%% LocalWords: Reproducibility