maintenance/talks/fosdem-2020/containers/talk.tex

902 lines
31 KiB
TeX

% 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 <https://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url>.
\RequirePackage[hyphens]{url}
\documentclass[aspectratio=169]{beamer}
\usepackage{ragged2e} % for 'flushleft', etc.
\usetheme{default}
\usefonttheme{structurebold}
% Nice sans-serif font.
\usepackage[sfdefault,lining]{FiraSans} %% option 'sfdefault' activates Fira Sans as the default text font
%% \usepackage[fakebold]{firamath-otf}
\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}
% Typeset maths using a slanted, serif font.
\def\mathfamilydefault{\rmdefault}
\ProcessOptionsBeamer
\usepackage{helvet}
%% \usepackage{fontspec}
%% \setmainfont[
%% Ligatures=TeX,
%% UprightFont = *-Boo,
%% ItalicFont = *-BooObl,
%% SmallCapsFont = *SC-Boo,
%% BoldFont = *-Dem,
%% BoldItalicFont = *-DemObl
%% ]{Futura}
\usepackage{multimedia} % movie
\usecolortheme{seagull} % white on black
\usepackage[utf8]{inputenc}
\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol}
\usepackage[absolute,overlay]{textpos}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,trees,shadows,positioning}
\usepackage{fancyvrb} % for \Verb
% 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
\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{GNU Guix: Unifying provisioning, deployment, and package management}
\author{Ludovic Courtès}
\date{FOSDEM, 1 February 2020}
\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]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=\paperwidth]{images/sun}};
\end{tikzpicture}
{\color{guixdarkgrey}\Huge{\textbf{\\GNU Guix:\\Unifying provisioning,
deployment,\\and package management}}}
\vfill{}
{\color{guixdarkgrey}{\Large{Ludovic Courtès}}}
\\[4mm]
{\color{guixorange2}{\Large{{FOSDEM, \oldstylenums{1 February 2020}}}}}
\end{frame}
\setbeamercolor{normal text}{bg=guixred3,fg=white}
\begin{frame}[plain]
\begin{quotation}
\noindent
\begin{flushright}
\LARGE{``The Linux distribution as we know it is \textbf{coming to
an end}, and is being replaced by a new concept of
containerized, multi-instance, multi-user applications [...]''}
\end{flushright}
\end{quotation}
\hfill{--- Daniel Riek (\oldstylenums{2020})}
\begin{tikzpicture}[overlay]
\node [at=(current page.south east), anchor=south east]{
\url{https://fosdem.org/2020/schedule/event/riek_kubernetes/}
};
\end{tikzpicture}
\end{frame}
\setbeamercolor{normal text}{fg=white,bg=black}
% https://commons.wikimedia.org/wiki/Category:Sun?uselang=fr#/media/File:%22Sun%22.JPG
% https://en.wikipedia.org/wiki/Zenith#/media/File:Tropical-area-mactan-philippines.jpg
\begin{frame}[plain, fragile]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=\paperwidth]{images/sun}};
\node [at=(current page.center), text=black,
text opacity=1, rounded corners=2pt]
{\LARGE{\textbf{ Slackware {\tt |} Debian {\tt |} Red Hat }}};
\end{tikzpicture}
\end{frame}
% https://commons.wikimedia.org/wiki/Category:Clouds_from_below?uselang=fr#/media/File:Cloud_(5018750171).jpg
% https://commons.wikimedia.org/wiki/Category:Clouds_from_below?uselang=fr#/media/File:Chigwell_Meadow_Essex_England_-_cumulus_clouds.jpg
% https://commons.wikimedia.org/wiki/Category:Clouds_from_below?uselang=fr#/media/File:Clouds_above_Lordship_Recreation_Ground_Haringey_London_England_1.jpg
% https://commons.wikimedia.org/wiki/Category:Clouds_and_blue_sky?uselang=fr#/media/File:2018_05_Havelland_IMG_1931.JPG
\begin{frame}[plain, fragile]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=1.4\paperwidth]{images/clouds}};
\node [at=(current page.center), text=white,
text opacity=1, rounded corners=2pt]
{\LARGE{\textbf{ modules {\tt |} Spack {\tt |} EasyBuild {\tt
|} VirtualEnv }}};
\end{tikzpicture}
\end{frame}
% https://commons.wikimedia.org/wiki/Category:Cumulus_congestus_clouds?uselang=fr#/media/File:Cumulunimbus_IMG_5537.JPG
\begin{frame}[plain, fragile]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=1.4\paperwidth]{images/cumulunimbus}};
\node [at=(current page.center), text=white,
text opacity=1, rounded corners=2pt]
{\LARGE{\textbf{ Ansible {\tt |} Puppet {\tt |} Propellor }}};
\end{tikzpicture}
\end{frame}
% https://commons.wikimedia.org/wiki/Category:Stratus_clouds?uselang=fr#/media/File:2018-05-18_18_27_24_Low_stratiform_clouds_(base_near_3,000_feet_AGL)_with_wavy,_bumpy_base_viewed_from_Mercer_County_Route_622_(North_Olden_Avenue)_in_Ewing_Township,_Mercer_County,_New_Jersey.jpg
\begin{frame}[plain, fragile]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=1.4\paperwidth]{images/low-clouds}};
\node [at=(current page.center), text=white, inner sep=5cm,
text opacity=1, rounded corners=2pt, fill=black, opacity=.5]
{\LARGE{\textbf{ pip {\tt |} Cabal {\tt |} Cargo {\tt |} CONDA
{\tt |} Gradle }}};
\end{tikzpicture}
\end{frame}
% https://commons.wikimedia.org/wiki/Category:Cloud-to-cloud_lightning#/media/File:004_2018_05_14_Extremes_Wetter.jpg
\begin{frame}[plain, fragile]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=1.4\paperwidth]{images/thunder}};
\node [at=(current page.center), text=white,
text opacity=1, rounded corners=2pt]
{\LARGE{\textbf{ Flatpak {\tt |} snap {\tt |} Docker {\tt |} Vagrant }}};
\end{tikzpicture}
\end{frame}
% TODO 2048 vuln + Docker license opacity
\setbeamercolor{normal text}{bg=guixred3}
\begin{frame}[plain, fragile]
\center{\Huge{\textbf{Are distros doomed?}}}
%% \\[2cm]
%% \uncover<2->{\center{Yes!} \par}
%% \uncover<3->{\center{No!} \par}
\end{frame}
\setbeamercolor{normal text}{bg=black,fg=white}
\setbeamercolor{normal text}{bg=guixred3,fg=white}
\begin{frame}[plain]
\begin{quotation}
\begin{flushright}
\LARGE{``Debian and other distributions are going to be \textbf{that
thing you run docker on}, little~more.''}
\end{flushright}
\end{quotation}
\hfill{--- Jos Poortvliet, ownCloud developer (\oldstylenums{2016})}
\begin{tikzpicture}[overlay]
\node [at=(current page.south east), anchor=south east]{
\url{http://lwn.net/Articles/670566/}
};
\end{tikzpicture}
\end{frame}
\setbeamercolor{normal text}{fg=white,bg=black}
\setbeamercolor{normal text}{fg=white,bg=white}
\begin{frame}[plain]
\begin{tikzpicture}[remember picture, overlay]
% https://github.com/owncloud-docker/server/blob/master/v19.10/Dockerfile.amd64
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[height=\paperheight]{images/owncloud-dockerfile}};
\node [at=(current page.center), anchor=south west, overlay,
inner sep=3mm, rounded corners,
text=black, text opacity=1, fill=white, opacity=.5, text width=7cm]
{\LARGE{\textbf{It's also that thing you run \emph{inside} Docker!}}};
\end{tikzpicture}
\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=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://en.wikipedia.org/wiki/Don't_throw_the_baby_out_with_the_bathwater#/media/File:Murner.Nerrenbeschwerung.kind.jpg
\setbeamercolor{normal text}{bg=white}
\screenshot[height=.95\paperheight]{images/throwing-the-baby-out-with-the-bathwater}
\setbeamercolor{normal text}{bg=white}
\begin{frame}[plain]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[width=0.7\paperwidth]{images/Guix-horizontal-print}};
\end{tikzpicture}
\end{frame}
\screenshot{images/guix-scope}
\setbeamercolor{normal text}{fg=white,bg=black}
% demo
\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 install \alert{--profile}=./experiment \\
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" "emacs"
"guile" "emacs-geiser"))
}
\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}
%% \begin{tikzpicture}[overlay]
%% \node<3>[rounded corners=4, text centered, anchor=north,
%% fill=guixorange1, text width=7cm,
%% inner sep=3mm, opacity=.75, text opacity=1]
%% at (current page.center) {
%% \textbf{\Large{bit-reproducible \& portable!}}
%% };
%% \end{tikzpicture}
\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}
\begin{frame}[fragile]
\begin{semiverbatim}
\LARGE{
guix \alert{time-machine} --commit=cabba9e -- \\
install hello
}
\end{semiverbatim}
\end{frame}
\setbeamercolor{normal text}{bg=guixblue1}
\begin{frame}[fragile]%{``Virtual environments''}
\LARGE{
\begin{semiverbatim}
guix \alert{environment} --ad-hoc\uncover<2->{ \alert{--container}} \\
python python-numpy python-scipy \\
-- python3
\end{semiverbatim}
}
\end{frame}
\setbeamercolor{normal text}{bg=guixred3}
\begin{frame}[fragile]%{Container provisioning}
\LARGE{
\begin{semiverbatim}
\$ guix \alert{pack}\only<2>{ --relocatable}\only<3->{ --format=docker} \\
python python-numpy
\textrm{...}
/gnu/store/\textrm{...}-\only<1-2>{pack.tar.gz}\only<3->{docker-image.tar.gz}
\end{semiverbatim}
}
\end{frame}
\setbeamercolor{normal text}{bg=white}
\screenshot[width=.9\paperwidth]{images/docker-guix-lol}
\setbeamercolor{normal text}{fg=white,bg=black}
\screenshot{images/guix-scope-systems}
\begin{frame}[fragile]
\begin{semiverbatim}
\Large{
<\textit{bob}> this is how Guix System works: you tell it
what you want, and it puts all the pieces in place
for you
<\textit{alice}> yeah you just need to speak its language
<\textit{civodul}> such a fine language, though :-)
}
\end{semiverbatim}
\vfill{
(seen on \#guix)}
\end{frame}
\begin{frame}[fragile]
\begin{semiverbatim}
\vspace{-1cm}
\small{
(\alert{operating-system}
(host-name "guixbox")
(timezone "Europe/Brussels")
(locale "fr_BE.utf8")
(bootloader (\alert{bootloader-configuration}
(bootloader grub-efi-bootloader)
(target "/boot/efi")))
(file-systems (append (list (\alert{file-system}
(device (file-system-label "my-root"))
(mount-point "/")
(type "ext4")))
%base-file-systems))
(users (append (list (\alert{user-account}
(name "charlie")
(group "users")
(home-directory "/home/charlie")))
%base-user-accounts))
(services (append (list (\alert{service} dhcp-client-service-type)
(\alert{service} openssh-service-type))
%base-services)))
}
\end{semiverbatim}
\end{frame}
\begin{frame}[fragile]
\begin{semiverbatim}
\Large{
\$ guix system \alert{vm} config.scm
\textrm{...}
\$ guix system \alert{docker-image} config.scm
\textrm{...}
\$ guix system \alert{container} config.scm
\textrm{...}
\$ guix system \alert{reconfigure} config.scm
\textrm{...}
}
\end{semiverbatim}
\end{frame}
\setbeamercolor{normal text}{bg=guixdarkgrey}
\begin{frame}[fragile]
\begin{semiverbatim}
(\alert{define} (os-for-machine n)
;; \textsf{\textit{Return an OS for machine number N.}}
(operating-system
(host-name (string-append "machine"
(number->string n)))
\textsf{...}))
;; \textsf{\textit{Return a list of machines.}}
(map (\alert{lambda} (n)
(\alert{machine}
(operating-system (os-for-machine n))
\only<1-3>{(environment managed-host-environment-type)
(configuration (\alert{machine-ssh-configuration}
(host-name (ip-for-machine n))))))}\only<4->{(environment digital-ocean-environment-type)
(configuration (\alert{digital-ocean-configuration}
(region "nyc3")
\textsf{...}))))}
(list 1 2 3 4 5))
\end{semiverbatim}
\begin{tikzpicture}[overlay]
\node<1-2> at (14,6) [anchor=north east,
inner sep=1mm, rotate=-30, shape=star,
fill=guixorange1, text=white] {
\Large{\textbf{New!}}
};
\node<2> [at=(current page.center), inner sep=5mm,
rounded corners, fill=black, text=white,
opacity=.75, text opacity=1] {
\LARGE{\texttt{guix deploy machines.scm}}
};
\end{tikzpicture}
\end{frame}
\setbeamercolor{normal text}{bg=guixgreen1}
\begin{frame}[fragile]
\Huge{\textbf{It's all about source code.}}
\end{frame}
\setbeamercolor{normal text}{bg=guixgrey}
\begin{frame}[fragile]
\begin{semiverbatim}
(define audacity
(\alert{package}
(name "audacity")
(home-page "https://github.com/audacity/audacity")
(\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=white}
\screenshot[width=.8\paperwidth]{images/reproducible-builds}
\setbeamercolor{normal text}{bg=guixdarkgrey}
\begin{frame}[plain]
\LARGE{
$\texttt{emacs} = f(\texttt{gtk+}, \texttt{gcc}, \texttt{make}, \texttt{coreutils})$
\\[1.1cm]
\uncover<2->{$\texttt{gtk+} = g(\texttt{glib}, \texttt{gcc}, \texttt{make}, \texttt{coreutils})$}
\\[1.1cm]
\uncover<3->{$\texttt{gcc} = h(\texttt{make}, \texttt{coreutils}, \texttt{gcc}_0)$}
\\[1.1cm]
\uncover<3->{\textrm{...}}
}
\uncover<1>{\large{where $f =$ \texttt{./configure \&\& make \&\& make install}}}
%% \begin{tikzpicture}[overlay]
%% \node<4->[fill=guixorange1, text=black, text opacity=1, opacity=.7,
%% rounded corners=2mm, inner sep=5mm] at (5, 1) {
%% \textbf{\Large{the complete DAG is captured}}
%% };
%% \end{tikzpicture}
\end{frame}
%% \begin{frame}[fragile]
%% \begin{tikzpicture}[overlay]
%% \node [at=(current page.north west), anchor=north west,
%% outer sep=4mm, text=white, text width=13mm]{
%% \texttt{configure},
%% \texttt{src/hello.c},
%% GCC,\\
%% Binutils,
%% etc.
%% };
%% \node [at=(current page.center), outer sep=3mm, font=\rmfamily]{
%% {\fontfamily{roman}\fontsize{45}{45}{$f(x,y,z)$}}
%% };
%% \end{tikzpicture}
%% \end{frame}
\setbeamercolor{normal text}{bg=black}
\begin{frame}[fragile]
%% \frametitle{Bit-Reproducible Builds$^*$}
%% \framesubtitle{$^*$ almost!}
\begin{semiverbatim}
\Large{
\$ guix build hello
\uncover<2->{/gnu/store/\tikz[baseline]{\node[anchor=base](nixhash){\alert<2>{h2g4sf72\textrm{...}}};}-hello-2.10}
\uncover<3->{\$ \alert<3>{guix gc --references /gnu/store/\textrm{...}-hello-2.10}
/gnu/store/\textrm{...}-glibc-2.29
/gnu/store/\textrm{...}-gcc-7.4.0-lib
/gnu/store/\textrm{...}-hello-2.10
}}
\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=guixblue2}
\begin{frame}[fragile]
\begin{semiverbatim}
$ \alert{guix challenge} --substitute-urls="https://ci.guix.gnu.org https://example.org"
\alert{/gnu/store/\dots{}-openssl-1.0.2d contents differ}:
local hash: 0725l22\dots{}
http://ci.guix.gnu.org/\dots{}-openssl-1.0.2d: 0725l22\dots{}
http://example.org/\dots{}-openssl-1.0.2d: 1zy4fma\dots{}
\alert{/gnu/store/\dots{}-git-2.5.0 contents differ}:
local hash: 00p3bmr\dots{}
http://ci.guix.gnu.org/\dots{}-git-2.5.0: 069nb85\dots{}
http://example.org/\dots{}-git-2.5.0: 0mdqa9w\dots{}
\alert{/gnu/store/\dots{}-pius-2.1.1 contents differ}:
local hash: 0k4v3m9\dots{}
http://ci.guix.gnu.org/\dots{}-pius-2.1.1: 0k4v3m9\dots{}
http://example.org/\dots{}-pius-2.1.1: 1cy25x1\dots{}
\end{semiverbatim}
\end{frame}
\setbeamercolor{normal text}{bg=black}
% demo guix build foo --check | guix challenge
\setbeamercolor{normal text}{fg=black,bg=white}
\begin{frame}[fragile]
\vspace{2.5cm}
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt,
drop shadow={opacity=0.5}, draw, color=guixgrey, line width=1pt]
{\includegraphics[height=0.9\paperheight]{images/reflections-on-trusting-trust}};
\end{tikzpicture}
\end{frame}
\setbeamercolor{normal text}{fg=white,bg=black}
\setbeamercolor{normal text}{bg=white}
\screenshot[width=.8\paperwidth]{images/bootstrappable}
\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[height=\paperheight]{images/bootstrap-graph}};
\node<2-> [at=(current page.center), anchor=north, inner sep=20pt, text=guixgrey]
{\Large{\textbf{250 MiB of binary blobs}}};
\end{tikzpicture}
\end{frame}
\begin{frame}[plain]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt]
{\includegraphics[height=\paperheight]{images/bootstrap-graph-reduced}};
\node<2-> [at=(current page.center), fill=guixorange1, rounded corners=10pt,
inner sep=10pt, opacity=.8, text opacity=1]
{\Large{\textbf{250 MiB $\rightarrow$ 130 MiB of binary blobs}}};
\node<2-> [at=(current page.south), anchor=south,
inner sep=2mm, outer sep=3mm, rounded corners,
fill=white, opacity=.7, text opacity=1, text=black]
{\url{https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/}};
\node<2-> [at=(current page.north east), anchor=north east,
fill=white, text=guixdarkgrey, draw=guixblue1,
rounded corners=10pt, %text width=5cm,
inner sep=10pt, outer sep=3mm, text opacity=1]
{\large{\textbf{Go to AW1.125, Sun.~11:50AM}}};
\end{tikzpicture}
\end{frame}
\begin{frame}[plain]
\begin{tikzpicture}[remember picture, overlay]
\node [at=(current page.center), inner sep=0pt, rotate=30]
{\includegraphics[height=1.1\paperheight]{images/rust-bootstrap}};
%% \node<2-> [at=(current page.center), fill=guixorange1, rounded corners=10pt,
%% inner sep=10pt, opacity=.8, text opacity=1]
%% {\Large{\textbf{Thumbs up, Danny Milosavljevic!}}};
\node<1> [at=(current page.center), fill=guixorange1, rounded corners=10pt,
inner sep=10pt, opacity=.8, text opacity=1]
{\Large{\textbf{Rust entirely built from source!}}};
\node<1> [at=(current page.south), anchor=south,
inner sep=2mm, outer sep=3mm, rounded corners, fill=white,
opacity=.7, text opacity=1, text=black]
{\url{https://guix.gnu.org/blog/2018/bootstrapping-rust/}};
\node<1-> [at=(current page.north east), anchor=north east,
fill=white, text=guixdarkgrey, draw=guixblue1,
rounded corners=10pt, %text width=5cm,
inner sep=10pt, outer sep=3mm, text opacity=1]
{\large{\textbf{Go to K.3.401, Sun.~10:00AM}}};
\end{tikzpicture}
\end{frame}
\setbeamercolor{normal text}{fg=white,bg=black}
%% \setbeamercolor{normal text}{bg=white}
%% \begin{frame}[plain]
%% \begin{tikzpicture}[remember picture, overlay]
%% \node [at=(current page.center), fill=guixblue1,
%% shape=circle, inner sep=2.2cm, opacity=.8, text opacity=1] {};
%% \node [at=(current page.center), fill=guixorange1, rounded corners=10pt,
%% shape=circle, inner sep=2cm, opacity=1, text opacity=1] {};
%% \node [at=(current page.center), fill=guixorange1, rounded corners=10pt,
%% shape=circle, inner sep=10pt, opacity=0, text opacity=1]
%% {\Huge{\textbf{1.0!}}};
%% \end{tikzpicture}
%% \end{frame}
%% \setbeamercolor{normal text}{fg=white,bg=black}
\setbeamercolor{normal text}{bg=guixtaupe}
\begin{frame}[fragile]
\Huge{$f(\texttt{config.scm}) = \vcenter{\hbox{\includegraphics[width=20mm]{images/emblem-system-symbolic}}}$}
\begin{tikzpicture}[remember picture, overlay]
\node<2-> [at=(current page.center), shape=circle, inner sep=1cm,
fill=white, text=black, opacity=.75, text opacity=.9] {
\Huge{$f^{-1}$}~?
};
\end{tikzpicture}
\end{frame}
\begin{frame}[fragile]
\begin{semiverbatim}
\Large{
\$ guix system \alert{describe}
file name: /var/guix/profiles/system-126-link
canonical file name: /gnu/store/\textsf{\dots{}}-system
label: GNU with Linux-Libre 5.4.15
bootloader: grub-efi
root device: label: "root"
\alert{channels}:
guix:
repository URL: https://git.savannah.gnu.org/\textsf{\dots{}}
commit: 93f4511eb0c9b33f5083c2a04f4148e0a494059c
\alert{configuration file}: /gnu/store/\textsf{\dots{}}-configuration.scm
}
\end{semiverbatim}
\begin{tikzpicture}[overlay]
\node at (14,6) [anchor=east,
inner sep=1mm, rotate=-30, shape=star,
fill=guixorange1, text=white] {
\Large{\textbf{New!}}
};
\end{tikzpicture}
\end{frame}
\setbeamercolor{normal text}{bg=guixblue1}
\begin{frame}
\Huge{\textbf{Wrap-up.}}
\end{frame}
\setbeamercolor{normal text}{fg=white,bg=black}
\setbeamercolor{normal text}{fg=white,bg=guixdarkgrey}
\begin{frame}[fragile]
\LARGE{
Not included in this talk :-)
\\[1cm]
\begin{itemize}
\item{ \textbf{embedded} usage
\begin{itemize}
\item Go to K.3.201, Sun. 11:00AM!
\end{itemize} }
\item { \textbf{Guile} \& programming language technology
\begin{itemize}
\item Go to AW1.125, Sun. 11:30AM!
\end{itemize} }
\item{ \textbf{Guix-HPC}: high-performance computing
\begin{itemize}
\item Go to UB.132, Sun. 12:30PM!
\end{itemize}}
\end{itemize}
}
\end{frame}
\begin{frame}[fragile]
\Huge{\textbf{Join us now, share the parens!}}
\vspace{0.7cm}
\Large{
\begin{itemize}
\item \textbf{install it!}
\item \textbf{use it!}
\item \textbf{hack it!}
\item \textbf{join} for Outreachy or GSoC!
\end{itemize}
}
\end{frame}
\setbeamercolor{normal text}{bg=white}
\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{\textbf{Reproducible deployment}\\ is
the logical next step. \par
}};
\end{tikzpicture}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setbeamercolor{normal text}{bg=black}
\begin{frame}[plain]
\vfill{
\vspace{1.5cm}
\center{\includegraphics[width=0.3\textwidth]{images/Guix-white}}\\[1.0cm]
\texttt{ludo@gnu.org}\hfill{\alert{\url{https://guix.gnu.org/}}}
}
\end{frame}
\begin{frame}{}
\begin{textblock}{12}(2, 3)
\tiny{
Copyright \copyright{} 2010, 2012--2020 Ludovic Courtès \texttt{ludo@gnu.org}.\\[3.0mm]
GNU Guix logo, CC-BY-SA 4.0, \url{https://gnu.org/s/guix/graphics} \\
Reproducible Builds logo under CC-BY 3.0,
\url{https://uracreative.github.io/reproducible-builds-styleguide/visuals/}. \\
Bootstrappable Builds logo by Ricardo Wurmus,
\url{https://bootstrappable.org}. \\
Docker whale image by Ricardo Wurmus. \\
Smoothie image \copyright{} 2019 Ricardo Wurmus, CC-BY-SA 4.0. \\
Hand-drawn arrows by Freepik from flaticon.com.
\\[1.5mm]
Picture of the sun under CC-BY-SA 3.0,
\url{https://commons.wikimedia.org/wiki/File:\%22Sun\%22.JPG}. \\
Cloud picture 1 under CC-BY-SA 2.0,
\url{https://commons.wikimedia.org/wiki/File:Cloud_(5018750171).jpg}. \\
Cloud picture 2 under CC-BY-SA 3.0,
\url{https://commons.wikimedia.org/wiki/File:Cumulunimbus_IMG_5537.JPG}. \\
Cloud picture 3 under CC-BY-SA 4.0,
\url{https://commons.wikimedia.org/wiki/File:2018-05-18_18_27_24_Low_stratiform_clouds_(base_near_3,000_feet_AGL)_with_wavy,_bumpy_base_viewed_from_Mercer_County_Route_622_(North_Olden_Avenue)_in_Ewing_Township,_Mercer_County,_New_Jersey.jpg}. \\
Thunder picture under CC-BY-SA 4.0,
\url{https://commons.wikimedia.org/wiki/File:004_2018_05_14_Extremes_Wetter.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{http://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{http://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{http://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: "american"
% compile-command: "rubber --pdf talk.tex"
% End: