mes/doc/talks/fosdem20/img.org

2.6 KiB
Raw Blame History

GNU Mes \smaller[2]{ Scheme-only bootstrap}

#+DATE:2020-02-02

#+LATEX_HEADER:∈stitute{FOSDEM'20} #+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}}

Ken Thompson UNIX, UTF-8, Golang Reflections on trusting trust 1984 turing award acceptance speach

because toolchains are built by previous versions of themselves you can poison an entire line of them just by poisoning one generation and it would propagate down to future generations even if the source code was clean

so, what can we do about a toolchain that consists of countless trusted binaries?

reproducible + bootstrappable

=> Minimize trusted binary seeds => Maintain auditable bootstrap path

Scheme-only bootstrap: Introduction.

Scheme-only bootstrap: GNU Mes

GNU Mes

  • 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

#+LATEX:\rightskip=2cm∈cludegraphics[width=0.7\textwidth]{mes.png}

Reproducible-Builds.org

#+LATEX:{\begin{frame}[plain] #+LATEX:{\hskip-10cm\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}} #+LATEX:\end{frame}}

Reproducible-Builds.org

#+LATEX:{\begin{frame}[plain] #+LATEX:{\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}} #+LATEX:\end{frame}}

Reproducible-Builds.org

#+LATEX:{\begin{frame}[plain] #+LATEX:{\vskip-2.5cm{\hspace{-1.5cm}\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}} #+LATEX:\end{frame}}

How to Bootstrap: An Old Recipe…

#+LATEX:\rightskip=2cm∈cludegraphics[width=0.3\textwidth]{yoghurt.png}\\

Recipe for yoghurt: Add yoghurt to milk Anonymous