|
@ -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
|
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
|
@ -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
|
After Width: | Height: | Size: 953 KiB |
After Width: | Height: | Size: 854 KiB |
After Width: | Height: | Size: 967 KiB |
|
@ -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
|
|
@ -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>
|
|
@ -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>
|
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 551 KiB |
After Width: | Height: | Size: 936 KiB |
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 915 KiB |
After Width: | Height: | Size: 760 KiB |
After Width: | Height: | Size: 768 KiB |
After Width: | Height: | Size: 684 KiB |
After Width: | Height: | Size: 814 KiB |
After Width: | Height: | Size: 300 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 359 KiB |
After Width: | Height: | Size: 395 KiB |
After Width: | Height: | Size: 427 KiB |
After Width: | Height: | Size: 786 KiB |
After Width: | Height: | Size: 815 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 187 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 6.2 KiB |
|
@ -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
|
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 389 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 961 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 904 KiB |
After Width: | Height: | Size: 809 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 57 KiB |