doc: Add LibrePlanet20 talk.

* doc/talks/lp20: New talk.
This commit is contained in:
Jan Nieuwenhuizen 2020-03-13 10:18:17 +01:00 committed by Jan (janneke) Nieuwenhuizen
parent 8c44f8c315
commit d8cc62f166
No known key found for this signature in database
GPG Key ID: F3C1A0D9C1D65273
103 changed files with 4509 additions and 0 deletions

57
doc/talks/lp20/EVINCE Normal file
View File

@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------------------------
xwininfo: Window id: 0x1e0000e "GNU Mes [2] Bootstrapping GNU"
Absolute upper-left X: 1
Absolute upper-left Y: -1
Relative upper-left X: 1
Relative upper-left Y: -1
Width: 1230
Height: 942
Depth: 24
Visual: 0x161
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x1e0000d (not installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +1+-1 -1969+-1 -1969-859 +1-859
-geometry 615x471+1+-1

BIN
doc/talks/lp20/Guix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

5
doc/talks/lp20/RECORD Normal file
View File

@ -0,0 +1,5 @@
guix environment --ad-hoc espeak xwininfo recordmydesktop
xwininfo
recordmydesktop --delay 3 --windowid 0x1e0000e -x 50 -y 130 --width 1280 --height 960 --no-cursor
recordmydesktop --delay 3 --fps 15 --windowid 0x1e0000e -x 375 -y 340 --width 480 --height 350 --no-cursor

Binary file not shown.

After

Width:  |  Height:  |  Size: 953 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 KiB

165
doc/talks/lp20/autocue.org Normal file
View File

@ -0,0 +1,165 @@
# time grep -E '^([^#]|$)' autocue.org | sed -re 's/^[*]+.*/. . slide. ./' | head -156 | tr '\n' ' ' | espeak -s 110 -l 1
#+TITLE: GNU Mes
* Introduction
hello, i am janneke.
this talk is about GNU Mes and our efforts to create an auditable, full
source bootstrap for our free software systems.
** Scheme-only bootstrap: GNU Mes
MesCC is a C99 compiler written in a subset of Guile Scheme and comes
with Mes, a Scheme interpreter to run it.
** A big problem, predicted 40y ago
in the eighties, ken thompson showed us the growing trust problem that
was being introduced in computing.
** Long path: Ignoring the problem
his message has mostly been ignored.
** Journey to the Source?
we are injecting more and larger binary seeds to build our free software
systems.
** Carl Dong -- bitcoin build system security
the importance to stop this trend was evident to bitcoin developer Carl
Dong of Chaincode Labs.
i warmly recommend the talk he gave at the breaking bitcoin conference.
** Reproducible-Builds.org
bitcoin has implemented Gitian, a system that uses reproducible builds.
** What is a Bootstrap?
let's say you wrote the first ever GNU CC compiler and you wrote it in
C; it is impossible to compile this C source code into an executable gcc
program.
** How to Bootstrap: An Old Recipe...
ah but that's like making yoghurt: use fresh milk and just add some
yoghurt leftover from yesterday.
** How to Bootstrap: Create your second GCC
using this insight, we can now create our second GCC!
** Pour milk
we take fresh, security-audited milk.
** Add yoghurt
we publish the recipe, so that others may verify the result.
** We're reproducible
and low and behold, your second compiler exactly matches ours!
as long as you follow our recipe.
** Add evil yoghurt
and use the exact same, FIRST compiler...
** We're reproducible
everyone is ...
** Evil yoghurt
just as bug-free and secure
** We're reproducibly malicous
as our shared, FIRST compiler was
** Reproducibility is not enough
reproducibility is no substitute for bootstrappability
** Reproducibility plus clean source code is not enough
and while bug-free source code remains important, we need something
else.
** Guix /pronounced geeks/
enter GNU Guix.
in Guix, we implemented a Reduced Binary Seed bootstrap.
** Long path: Reduced Binary Seed bootstrap
a full GNU/Linux system is bootstrapped from only 60 megabytes of
trusted binaries.
** NLnet Foundation
so we are very excited that NlNet provided a grant to make that possible
** GCC core-mesboot0-scheme-only
this is what the graph looks like now: the only interesting binaries
left, are a scheme interpreter and scheme compiler: gnu mes and gnu guile.
** Full Source Bootstrap
given that we dislike downloading binaries and trusting them, why not
stop doing so altogether?
** Long path: Full Source Bootstrap
we are creating a full source bootstrap path
** Joy of Source
are we doing this only to counter the trusting trust attack?
i think that building from source is the proper way to do computing; and
the trusting trust attack is only a symptom of confusing a binary
substitute with the compilation of source code.
* Thanks
i am very grateful for getting so much help and seeing this crazy
project grow!
** Want to join?
that's all folks!
*** You can help
* raise awareness
* make core GNU packages bootstrappable again
+ +XZ-only+ => *.GZ* tarballs (thank you: sed, coreutils!)
+ GCC (c++!), GNU Libc (python?!)
* reduced bootstrap NixOS, Debian
* port MesCC to the Hurd, FreeBSD
* retweet/toot =@janneke_gnu= =janneke@octodon.social=
*** Connect
* irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
* mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
* git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
* web [[http://bootstrappable.org][bootstrappable.org]]
* legalese
Copyright \copy 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#+BEGIN_QUOTE
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.
#+END_QUOTE

View File

@ -0,0 +1,27 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\usecolortheme{spruce}
\setbeamercolor*{structure}{fg=blue!25!white}
\setbeamercolor*{structure}{fg=MSUgreen!80!white}
\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black}
\mode
<all>

View File

@ -0,0 +1,36 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\setbeamertemplate{navigation symbols}{}
\newif\ifbeamer@secheader
\beamer@secheaderfalse
\DeclareOptionBeamer{secheader}{\beamer@secheadertrue}
\ProcessOptionsBeamer
\usecolortheme{X}
\useinnertheme[shadow]{rounded}
\useoutertheme{infolines}
\ifbeamer@secheader\else\setbeamertemplate{headline}[default]\fi
\mode
<all>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
doc/talks/lp20/chain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
doc/talks/lp20/egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/talks/lp20/egg.xcf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

BIN
doc/talks/lp20/fsb-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
doc/talks/lp20/gcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.2 KiB

386
doc/talks/lp20/lp20.org Normal file
View File

@ -0,0 +1,386 @@
#+TITLE: GNU Mes
#+TITLE: \smaller[2]{-- Bootstrapping GNU}
#+DATE:2020-03-15
#+EMAIL: janneke@gnu.org
#+AUTHOR: janneke@gnu.org
#+COPYRIGHT: janneke (Jan) Nieuwenhuizen <janneke@gn.org>
#+LICENSE: GNU Free Documentation License, version 1.3 or later.
#+OPTIONS: H:2 @:t ::t
#+OPTIONS: tex:t latex:t todo:t tasks:t
#+LATEX_HEADER:\institute{Libre Planet '20}
#+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}}
#+LATEX_CLASS: beamer
#+LATEX_CLASS_OPTIONS: [presentation]
#+LATEX_HEADER: \usepackage{relsize}
#+LATEX_HEADER: \usepackage{hyperref}
#+LATEX_HEADER: \mode<beamer>{\usetheme{X}}
#+KEYWORDS: GNU, Mes, Mes, Guix, bootstrappable, reproducible
#+BEAMER_THEME: X
#+BEAMER_FRAME_LEVEL: 2
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
# #+LATEX_HEADER:\usepackage{pgfpages}
# #+LATEX_HEADER:\setbeameroption{show notes}
# #+LATEX_HEADER:\setbeameroption{show notes on second screen=left}
* Introduction
** GNU Mes: Bootstrapping GNU
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.6
:BEAMER_ENV: block
:END:
* A Scheme interpreter written in ~5,000LOC of simple C.
* A C compiler written in Scheme.
* Built on LISP: eval/apply, the *Maxwell Equations of Software*.
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.3
:BEAMER_ENV: quote
:END:
#+LATEX:\rightskip=2cm\includegraphics[width=0.7\textwidth]{mes.png}
** A big problem, predicted 40y ago
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{ken-thompson.png}}}
#+LATEX:\end{frame}}
** Long path: Ignoring the Problem
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.7
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.3
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\normalsize
*** FOO
:PROPERTIES:
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[width=2cm]{logos/android.png}
#+LATEX:{\includegraphics[height=0.8cm]{logos/apple.png}\includegraphics[width=1.2cm]{logos/macos.png}}
#+LATEX:\includegraphics[height=1cm]{logos/debian.png}
#+LATEX:\includegraphics[width=2cm]{logos/fedora.png}
#+LATEX:\includegraphics[height=0.8cm]{logos/freebsd.png}
#+LATEX:\includegraphics[height=0.8cm]{logos/netbsd.png}
#+LATEX:\includegraphics[height=1cm]{logos/openbsd.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/opensuse.png}
#+LATEX:\includegraphics[width=2cm]{logos/redhat.png}
#+LATEX:\includegraphics[width=2cm]{logos/ubuntu.png}
#+LATEX:\includegraphics[width=2.2cm]{logos/windows.png}
#+LATEX:\vskip 5cm
#+LATEX:\normalsize
** Journey to the Source?
#+LATEX:\hspace{115mm}\tiny{???}\\[-6.0ex]
#+LATEX:\hspace{ 90mm}\tiny{Soft Landing Systems}\\[-0.5ex]
#+LATEX:\hspace{ 82mm}\tiny{0.90 .. 0.01}\\[-1.0ex]
#+LATEX:\hspace{ 74mm}\tiny{0.93rc5}\\[-1.1ex]
#+LATEX:\hspace{ 66mm}\tiny{0.93rc6}\\[-1.0ex]
#+LATEX:\hspace{ 60mm}\tiny{1.1 buzz}\\[-1.0ex]
#+LATEX:\hspace{ 54mm}\tiny{1.2 rex}\\[-1.0ex]
#+LATEX:\hspace{ 48mm}\tiny{1.3 bo}\\[-1.0ex]
#+LATEX:\hspace{ 42mm}\tiny{2.0 hamm}\\[-0.6ex]
#+LATEX:\hspace{ 37mm}\tiny{2.1 slink}\\[-1.1ex]
#+LATEX:\hspace{ 30mm}\scriptsize{2.2 potato}\\[-1.1ex]
#+LATEX:\hspace{ 24mm}\footnotesize{3.0 woody}\\[-1.1ex]
#+LATEX:\hspace{ 19mm}\small{3.1 sarge}\\[-1.0ex]
#+LATEX:\hspace{ 14mm}\normalsize{4 etch}\\[-1.1ex]
#+LATEX:\hspace{ 10mm}\large{5 lenny}\\[-1.2ex]
#+LATEX:\hspace{ 6mm}\Large{6 squeeze}\\[-1.2ex]
#+LATEX:\hspace{ 3mm}\LARGE{7 wheezy}\\[-1.2ex]
#+LATEX:\hspace{ 1mm}\huge{8 jessie}\\[-1.3ex]
#+LATEX:\hspace{ 0mm}\Huge{9 stretch}\\[-0.2ex]
#+LATEX:\hspace{ 0mm}\Huge{10 buster}
#+LATEX:\normalsize
#+BEGIN_QUOTE
As time goes on we will expire the binary packages for old releases.
Currently we have binaries for squeeze, lenny, etch, sarge, woody,
potato, slink, hamm and bo available, and only source code for the other
releases. -- \ahref{https://www.debian.org/distrib/archive}{www.debian.org/distrib/archive}
#+END_QUOTE
* Reproducibility
** Carl Dong -- bitcoin build system security
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{bitcoin-carl-dong.png}}}
#+LATEX:\end{frame}}
** Reproducible-Builds.org
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}}
#+LATEX:\end{frame}}
** What is a Bootstrap?
*** Impossible task: pull yourself up on your boot straps
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{boot-strap.png}
*** Software: to create your first: kernel, shell, C compiler, ...
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{20}{10}\selectfont source\normalsize}
#+LATEX:{\fontsize{40}{20}\selectfont + ?? =}
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{20}{10}\selectfont binary\normalsize}
** How to Bootstrap: An Old Recipe...
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{yoghurt.png}\\
#+BEGIN_QUOTE
Recipe for yoghurt: Add yoghurt to milk -- Anonymous
#+END_QUOTE
** How to Bootstrap: Create your second GCC
*** IGNORE
:PROPERTIES:
:BEAMER_env: ignoreheading
:END:
Traditional recipe: like yoghurt
#+LATEX:\\[1cm]
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{10}{5}\selectfont source\normalsize}
#+LATEX:{\fontsize{40}{20}\selectfont +}
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{10}{5}\selectfont binary - 1\normalsize}
#+LATEX:{\fontsize{40}{10}\selectfont = \normalsize}
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{10}{5}\selectfont binary\normalsize}
#+LATEX:\\[1cm]
*** IGNORE
:PROPERTIES:
:BEAMER_env: ignoreheading
:END:
... and done!
** Pour milk
#+LATEX:{\begin{frame}[plain]
#+LATEX:{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{pour-milk.png}}
#+LATEX:\end{frame}}
** Add yoghurt
#+LATEX:{\begin{frame}[plain]
#+LATEX:{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{add-yoghurt.png}}
#+LATEX:\end{frame}}
** We're reproducible
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducible.png}}}
#+LATEX:\end{frame}}
** Add evil yoghurt
#+LATEX:{\begin{frame}[plain]
#+LATEX:{\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{add-evil-yoghurt.png}}
#+LATEX:\end{frame}}
** We're reproducible
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducible.png}}}
#+LATEX:\end{frame}}
** Evil yoghurt
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{evil-yoghurt-rect-black.png}}}
#+LATEX:\end{frame}}
** We're reproducibly malicous
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducibly-malicious.png}}}
#+LATEX:\end{frame}}
** Reproducibility is not enough
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducibility-is-not-enough.png}}}
#+LATEX:\end{frame}}
** Reproducibility plus clean source code is not enough
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducibility+clean-source-code.png}}}
#+LATEX:\end{frame}}
* Bootstrappability
** Guix /pronounced geeks/
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{guix-pronounced-geeks.png}}}
#+LATEX:\end{frame}}
** Long path: Scheme-only bootstrap
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.75
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
* *252 MB:* GNU Guix System v1.0
* *145 MB:* Reduced Binary Seed
+ master branch
+ +GCC+, +GLIBC+, +Binutils+
+ + MesCC-Tools, + Mes
* *57 MB:* Scheme-only
+ wip-bootstrap branch
+ +Awk+, +Bash+, +Bzip2+, +GNU Core Utilities+, +Grep+, +Gzip+,
+Make+, +Patch+, +Sed+, +Tar+, and +XZ+.
+ + Gash (source only!)
#+LATEX:\vskip 3cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.25
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\
#+LATEX:\vskip 4.75cm
#+LATEX:\normalsize
** NLnet Foundation
#+LATEX:\begin{center}
#+LATEX:\includegraphics[width=0.5\paperwidth,height=0.5\paperheight]{nl-net.png}
#+LATEX:\end{center}
** GCC mesboot0-scheme-only
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-mesboot0-scheme-only-unversioned.png}}}
#+LATEX:\end{frame}}
** Full Source Bootstrap
#+LATEX:\begin{center}
#+LATEX:\includegraphics[width=0.6\textwidth]{fsb-logo-guile-guix-mes.png}
#+LATEX:\end{center}
** Long path: Full Source Bootstrap
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.75
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
* *252 MB:* GNU Guix System v1.0
* *145 MB:* Reduced Binary Seed
+ master branch
+ +GCC+, +GLIBC+, +Binutils+
+ + MesCC-Tools, + Mes
* *57 MB:* Scheme-only
+ wip-bootstrap branch
+ +Awk+, +Bash+, +Bzip2+, +GNU Core Utilities+, +Grep+, +Gzip+,
+Make+, +Patch+, +Sed+, +Tar+, and +XZ+.
+ + Gash (source only!)
* *357 bytes:* Full Source
+ +MesCC-Tools+, +Mes+
+ + Stage0: 357 bytes (x86)
#+LATEX:\vskip 1cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.25
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\
#+LATEX:\vskip 4.2cm
#+LATEX:\normalsize
** Joy of Source
#+LATEX:\large
#+BEGIN_QUOTE
Vulnerability to a *trusting trust attack* is a symptom of an
unauditable or missing bootstrap story. -- janneke
#+END_QUOTE
#+LATEX:\normalsize
* Thanks
** Thanks
# *** Mortals :B_block:BMCOL:
# :PROPERTIES:
# :BEAMER_COL: 0.48
# :BEAMER_ENV: block
# :END:
* Carl Dong
* Danny Milosavljevic
* David Terry
* Jeremiah Orians
* Ludovic Courtès
* Matt Wette
* Pjotr Prins
* Rutger van Beusekom
* Timothy Sample
* Vagrant Cascadian
# *** All the Giants :B_block:BMCOL:
# :PROPERTIES:
# :BEAMER_COL: 0.48
# :xBEAMER_ACT: <2->
# :BEAMER_ENV: block
# :END:
# * ...
# *** Connect
# * irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
# * mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
# * git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
# * web [[http://bootstrappable.org][bootstrappable.org]]
** Want to join?
*** You can help
* raise awareness
* make core GNU packages bootstrappable again
+ +XZ-only+ => *.GZ* tarballs (thank you: sed, coreutils!)
+ GCC (c++!), GNU Libc (python?!)
* reduced bootstrap NixOS, Debian
* port MesCC to the Hurd, FreeBSD
* retweet/toot =@janneke_gnu= =janneke@octodon.social=
*** Connect
* irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
* mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
* git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
* web [[http://bootstrappable.org][bootstrappable.org]]
* legalese
:PROPERTIES:
:BEAMER_ENV: note
:COPYING: t
:END:
Copyright \copy 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#+BEGIN_QUOTE
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts,
and with no Back-Cover Texts.
#+END_QUOTE
By Debian - www.debian.org/logos/, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=3330975
By Canonical Ltd. - http://design.ubuntu.com/wp-content/uploads/logo-ubuntu_no%C2%AE-black_orange-hex.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=18296544
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=60635229
By Original: Apple Inc.Vectorization: Totie - https://www.apple.com/macos/high-sierra/, Public Domain, https://commons.wikimedia.org/w/index.php?curid=59644704
By Original: Rob Janoff - https://www.apple.com/ac/globalnav/2.0/en_US/images/ac-globalnav/globalnav/apple/image_large.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=10472152
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=26987122
By Source (WP:NFCC#4), Fair use, https://en.wikipedia.org/w/index.php?curid=38767733
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=13822991
By Microsoft - File:Windows Server 2012 logo.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=45931123
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=28200444

BIN
doc/talks/lp20/lp20.pdf Normal file

Binary file not shown.

BIN
doc/talks/lp20/make.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

BIN
doc/talks/lp20/mes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
doc/talks/lp20/mes.xcf Normal file

Binary file not shown.

BIN
doc/talks/lp20/nl-net.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 KiB

BIN
doc/talks/lp20/stage-0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
doc/talks/lp20/stage-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
doc/talks/lp20/stage-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
doc/talks/lp20/tcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Some files were not shown because too many files have changed in this diff Show More