presentations

Presentations
Log | Files | Refs

commit 733fe63bd09a3190284fbbe52e2c79d3d2393aa7
parent 478bad83380d967f4ae9f64f308f779153e6f084
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Sat, 17 Feb 2024 18:36:57 +0100

Initial draft NGI webinar

Diffstat:
A2024-gns-ngi-webinar/.gitignore | 8++++++++
A2024-gns-ngi-webinar/beamercolorthememetropolis-highcontrast.sty | 39+++++++++++++++++++++++++++++++++++++++
A2024-gns-ngi-webinar/beamercolorthememetropolis.sty | 138+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2024-gns-ngi-webinar/beamerfontthememetropolis.sty | 325+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2024-gns-ngi-webinar/beamerinnerthememetropolis.sty | 293+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2024-gns-ngi-webinar/beamerouterthememetropolis.sty | 137+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2024-gns-ngi-webinar/beamerthememetropolis.sty | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2024-gns-ngi-webinar/figures/GNS-BlockCreation.drawio | 2++
A2024-gns-ngi-webinar/figures/GNS-BlockValidation.drawio | 2++
A2024-gns-ngi-webinar/figures/gns-logo.png | 0
A2024-gns-ngi-webinar/figures/gnunet.png | 0
A2024-gns-ngi-webinar/gns.tex | 318+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12 files changed, 1369 insertions(+), 0 deletions(-)

diff --git a/2024-gns-ngi-webinar/.gitignore b/2024-gns-ngi-webinar/.gitignore @@ -0,0 +1,8 @@ +gns.aux +gns.log +gns.nav +gns.out +gns.pdf +gns.snm +gns.toc +gns.vrb diff --git a/2024-gns-ngi-webinar/beamercolorthememetropolis-highcontrast.sty b/2024-gns-ngi-webinar/beamercolorthememetropolis-highcontrast.sty @@ -0,0 +1,39 @@ +%% +%% This is file `beamercolorthememetropolis-highcontrast.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamercolorthememetropolis-highcontrast.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamercolorthememetropolis-highcontrast}[2017/01/23 Metropolis color theme] +\usecolortheme{metropolis} + +\definecolor{mAlert}{HTML}{AD003D} +\definecolor{mExample}{HTML}{005580} + +\setbeamercolor{normal text}{% + fg=black, + bg=white +} +\setbeamercolor{alerted text}{% + fg=mAlert, +} +\setbeamercolor{example text}{% + fg=mExample, +} +\mode<all> +\endinput +%% +%% End of file `beamercolorthememetropolis-highcontrast.sty'. diff --git a/2024-gns-ngi-webinar/beamercolorthememetropolis.sty b/2024-gns-ngi-webinar/beamercolorthememetropolis.sty @@ -0,0 +1,138 @@ +%% +%% This is file `beamercolorthememetropolis.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamercolorthememetropolis.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamercolorthememetropolis}[2017/01/23 Metropolis color theme] +\RequirePackage{pgfopts} +\pgfkeys{ + /metropolis/color/block/.cd, + .is choice, + transparent/.code=\metropolis@block@transparent, + fill/.code=\metropolis@block@fill, +} +\pgfkeys{ + /metropolis/color/background/.cd, + .is choice, + dark/.code=\metropolis@colors@dark, + light/.code=\metropolis@colors@light, +} +\newcommand{\metropolis@color@setdefaults}{ + \pgfkeys{/metropolis/color/.cd, + background=light, + block=transparent, + } +} +\definecolor{mDarkBrown}{HTML}{604c38} +\definecolor{mDarkTeal}{HTML}{23373b} +\definecolor{mLightBrown}{HTML}{EB811B} +\definecolor{mLightGreen}{HTML}{14B03D} +\newcommand{\metropolis@colors@dark}{ + \setbeamercolor{normal text}{% + fg=black!2, + bg=mDarkTeal + } + \usebeamercolor[fg]{normal text} +} +\newcommand{\metropolis@colors@light}{ + \setbeamercolor{normal text}{% + fg=mDarkTeal, + bg=black!2 + } +} +\setbeamercolor{alerted text}{% + fg=mLightBrown +} +\setbeamercolor{example text}{% + fg=mLightGreen +} +\setbeamercolor{titlelike}{use=normal text, parent=normal text} +\setbeamercolor{author}{use=normal text, parent=normal text} +\setbeamercolor{date}{use=normal text, parent=normal text} +\setbeamercolor{institute}{use=normal text, parent=normal text} +\setbeamercolor{structure}{use=normal text, fg=normal text.fg} +\setbeamercolor{palette primary}{% + use=normal text, + fg=normal text.bg, + bg=normal text.fg +} +\setbeamercolor{frametitle}{% + use=palette primary, + parent=palette primary +} +\setbeamercolor{progress bar}{% + use=alerted text, + fg=alerted text.fg, + bg=alerted text.fg!50!black!30 +} +\setbeamercolor{title separator}{ + use=progress bar, + parent=progress bar +} +\setbeamercolor{progress bar in head/foot}{% + use=progress bar, + parent=progress bar +} +\setbeamercolor{progress bar in section page}{ + use=progress bar, + parent=progress bar +} +\newcommand{\metropolis@block@transparent}{ + \setbeamercolor{block title}{% + use=normal text, + fg=normal text.fg, + bg= + } + \setbeamercolor{block body}{ + bg= + } +} +\newcommand{\metropolis@block@fill}{ + \setbeamercolor{block title}{% + use=normal text, + fg=normal text.fg, + bg=normal text.bg!80!fg + } + \setbeamercolor{block body}{ + use={block title, normal text}, + bg=block title.bg!50!normal text.bg + } +} +\setbeamercolor{block title alerted}{% + use={block title, alerted text}, + bg=block title.bg, + fg=alerted text.fg +} +\setbeamercolor{block title example}{% + use={block title, example text}, + bg=block title.bg, + fg=example text.fg +} +\setbeamercolor{block body alerted}{use=block body, parent=block body} +\setbeamercolor{block body example}{use=block body, parent=block body} +\setbeamercolor{footnote}{fg=normal text.fg!90} +\setbeamercolor{footnote mark}{fg=.} +\setbeamercolor{bibliography entry author}{fg=, bg=} +\setbeamercolor{bibliography entry title}{fg=, bg=} +\setbeamercolor{bibliography entry location}{fg=, bg=} +\setbeamercolor{bibliography entry note}{fg=, bg=} +\metropolis@color@setdefaults +\ProcessPgfPackageOptions{/metropolis/color} +\mode<all> +\endinput +%% +%% End of file `beamercolorthememetropolis.sty'. diff --git a/2024-gns-ngi-webinar/beamerfontthememetropolis.sty b/2024-gns-ngi-webinar/beamerfontthememetropolis.sty @@ -0,0 +1,325 @@ +%% +%% This is file `beamerfontthememetropolis.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerfontthememetropolis.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerfontthememetropolis}[2017/01/23 Metropolis font theme] +\RequirePackage{etoolbox} +\RequirePackage{ifxetex} +\RequirePackage{ifluatex} +\RequirePackage{pgfopts} +\ifboolexpr{bool {xetex} or bool {luatex}}{ + \@ifpackageloaded{fontspec}{ + \PassOptionsToPackage{no-math}{fontspec} + }{ + \RequirePackage[no-math]{fontspec} + } + \newcounter{fontsnotfound} + \newcommand{\checkfont}[1]{% + \suppressfontnotfounderror=1% + \font\x = "#1" at 10pt + \selectfont + \ifx\x\nullfont% + \stepcounter{fontsnotfound}% + \fi% + \suppressfontnotfounderror=0% + } + + \newcommand{\iffontsavailable}[3]{% + \setcounter{fontsnotfound}{0}% + \expandafter\forcsvlist\expandafter% + \checkfont\expandafter{#1}% + \ifnum\value{fontsnotfound}=0% + #2% + \else% + #3% + \fi% + } + \iffontsavailable{Fira Sans Light,% + Fira Sans Light Italic,% + Fira Sans,% + Fira Sans Italic}% + {% + \setsansfont[ItalicFont={Fira Sans Light Italic},% + BoldFont={Fira Sans},% + BoldItalicFont={Fira Sans Italic}]% + {Fira Sans Light}% + }{% + \iffontsavailable{Fira Sans Light OT,% + Fira Sans Light Italic OT,% + Fira Sans OT,% + Fira Sans Italic OT}% + {% + \setsansfont[ItalicFont={Fira Sans Light Italic OT},% + BoldFont={Fira Sans OT},% + BoldItalicFont={Fira Sans Italic OT}]% + {Fira Sans Light OT}% + }{% + \PackageWarning{beamerthememetropolis}{% + Could not find Fira Sans fonts% + } + } + } + \iffontsavailable{Fira Mono, Fira Mono Bold}{% + \setmonofont[BoldFont={Fira Mono Medium}]{Fira Mono}% + }{% + \iffontsavailable{Fira Mono OT, Fira Mono Bold OT}{% + \setmonofont[BoldFont={Fira Mono Medium OT}]{Fira Mono OT}% + }{% + \PackageWarning{beamerthememetropolis}{% + Could not find Fira Mono fonts% + } + } + } + \AtBeginEnvironment{tabular}{% + \addfontfeature{Numbers={Monospaced}}% + } +}{% + \PackageWarning{beamerthememetropolis}{% + You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts% + } +} +\setbeamerfont{title}{size=\Large,% + series=\bfseries} +\setbeamerfont{author}{size=\small} +\setbeamerfont{date}{size=\small} +\setbeamerfont{section title}{size=\Large,% + series=\bfseries} +\setbeamerfont{block title}{size=\normalsize,% + series=\bfseries} +\setbeamerfont{block title alerted}{size=\normalsize,% + series=\bfseries} +\setbeamerfont*{subtitle}{size=\large} +\setbeamerfont{frametitle}{size=\large,% + series=\bfseries} +\setbeamerfont{caption}{size=\small} +\setbeamerfont{caption name}{series=\bfseries} +\setbeamerfont{description item}{series=\bfseries} +\setbeamerfont{page number in head/foot}{size=\scriptsize} +\setbeamerfont{bibliography entry author}{size=\normalsize,% + series=\normalfont} +\setbeamerfont{bibliography entry title}{size=\normalsize,% + series=\bfseries} +\setbeamerfont{bibliography entry location}{size=\normalsize,% + series=\normalfont} +\setbeamerfont{bibliography entry note}{size=\small,% + series=\normalfont} +\setbeamerfont{standout}{size=\Large,% + series=\bfseries} +\pgfkeys{ + /metropolis/font/titleformat title/.cd, + .is choice, + regular/.code={% + \let\metropolis@titleformat\@empty% + \setbeamerfont{title}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@titleformat\@empty% + \setbeamerfont{title}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@titleformat\lowercase% + \setbeamerfont{title}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat title=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@titleformat\uppercase% + \setbeamerfont{title}{shape=\normalfont} + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat title=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /metropolis/font/titleformat subtitle/.cd, + .is choice, + regular/.code={% + \let\metropolis@subtitleformat\@empty% + \setbeamerfont{subtitle}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@subtitleformat\@empty% + \setbeamerfont{subtitle}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@subtitleformat\lowercase% + \setbeamerfont{subtitle}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat subtitle=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@subtitleformat\uppercase% + \setbeamerfont{subtitle}{shape=\normalfont}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat subtitle=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /metropolis/font/titleformat section/.cd, + .is choice, + regular/.code={% + \let\metropolis@sectiontitleformat\@empty% + \setbeamerfont{section title}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@sectiontitleformat\@empty% + \setbeamerfont{section title}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@sectiontitleformat\MakeLowercase% + \setbeamerfont{section title}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat section=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@sectiontitleformat\MakeUppercase% + \setbeamerfont{section title}{shape=\normalfont}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat section=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /metropolis/font/titleformat frame/.cd, + .is choice, + regular/.code={% + \let\metropolis@frametitleformat\@empty% + \setbeamerfont{frametitle}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@frametitleformat\@empty% + \setbeamerfont{frametitle}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@frametitleformat\MakeLowercase% + \setbeamerfont{frametitle}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat frame=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@frametitleformat\MakeUppercase% + \setbeamerfont{frametitle}{shape=\normalfont} + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat frame=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /metropolis/font/.cd, + titleformattitle/.code=\pgfkeysalso{titleformat title=#1}, + titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1}, + titleformatsection/.code=\pgfkeysalso{titleformat section=#1}, + titleformatframe/.code=\pgfkeysalso{titleformat frame=#1}, +} +\newcommand{\metropolis@font@setdefaults}{ + \pgfkeys{/metropolis/font/.cd, + titleformat title=regular, + titleformat subtitle=regular, + titleformat section=regular, + titleformat frame=regular, + } +} +\def\metropolis@titleformat#1{#1} +\def\metropolis@subtitleformat#1{#1} +\def\metropolis@sectiontitleformat#1{#1} +\def\metropolis@frametitleformat#1{#1} +\patchcmd{\beamer@title}% + {\def\inserttitle{#2}}% + {\def\inserttitle{\metropolis@titleformat{#2}}}% + {}% + {\PackageError{beamerfontthememetropolis}{Patching title failed}\@ehc} +\patchcmd{\beamer@subtitle}% + {\def\insertsubtitle{#2}}% + {\def\insertsubtitle{\metropolis@subtitleformat{#2}}}% + {}% + {\PackageError{beamerfontthememetropolis}{Patching subtitle failed}\@ehc} +\patchcmd{\sectionentry} + {\def\insertsectionhead{#2}} + {\def\insertsectionhead{\metropolis@sectiontitleformat{#2}}} + {} + {\PackageError{beamerfontthememetropolis}{Patching section title failed}\@ehc} +\@tempswafalse +\patchcmd{\beamer@section} + {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}} + {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% + \noexpand\metropolis@sectiontitleformat{\unexpanded{#1}}}}} + {\@tempswatrue} + {} +\patchcmd{\beamer@section} + {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} + {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{% + \metropolis@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\patchcmd{\beamer@section} + {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}} + {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% + \noexpand\metropolis@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\if@tempswa\else + \PackageError{beamerfontthememetropolis}{Patching section title failed}\@ehc +\fi +\@tempswafalse +\patchcmd{\beamer@subsection} + {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}} + {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% + \noexpand\metropolis@sectiontitleformat{\unexpanded{#1}}}}} + {\@tempswatrue} + {} +\patchcmd{\beamer@subsection} + {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} + {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{% + \metropolis@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\patchcmd{\beamer@subsection} + {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}} + {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% + \noexpand\metropolis@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\if@tempswa\else + \PackageError{beamerfontthememetropolis}{Patching section title failed}\@ehc +\fi +\patchcmd{\beamer@@frametitle} + {{% + \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space% + \usebeamertemplate*{frametitle continuation}\fi}}% + \gdef\beamer@frametitle{#2}% + \gdef\beamer@shortframetitle{#1}% + }} + {{% + \gdef\insertframetitle{{\metropolis@frametitleformat{#2}\ifnum% + \beamer@autobreakcount>0\relax{}\space% + \usebeamertemplate*{frametitle continuation}\fi}}% + \gdef\beamer@frametitle{#2}% + \gdef\beamer@shortframetitle{#1}% + }} + {} + {\PackageError{beamerfontthememetropolis}{Patching frame title failed}\@ehc} +\metropolis@font@setdefaults +\ProcessPgfPackageOptions{/metropolis/font} +\endinput +%% +%% End of file `beamerfontthememetropolis.sty'. diff --git a/2024-gns-ngi-webinar/beamerinnerthememetropolis.sty b/2024-gns-ngi-webinar/beamerinnerthememetropolis.sty @@ -0,0 +1,293 @@ +%% +%% This is file `beamerinnerthememetropolis.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerinnerthememetropolis.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerinnerthememetropolis}[2017/01/23 Metropolis inner theme] +\RequirePackage{etoolbox} +\RequirePackage{keyval} +\RequirePackage{calc} +\RequirePackage{pgfopts} +\RequirePackage{tikz} +\pgfkeys{ + /metropolis/inner/sectionpage/.cd, + .is choice, + none/.code=\metropolis@disablesectionpage, + simple/.code={\metropolis@enablesectionpage + \setbeamertemplate{section page}[simple]}, + progressbar/.code={\metropolis@enablesectionpage + \setbeamertemplate{section page}[progressbar]}, +} +\pgfkeys{ + /metropolis/inner/subsectionpage/.cd, + .is choice, + none/.code=\metropolis@disablesubsectionpage, + simple/.code={\metropolis@enablesubsectionpage + \setbeamertemplate{section page}[simple]}, + progressbar/.code={\metropolis@enablesubsectionpage + \setbeamertemplate{section page}[progressbar]}, +} +\newcommand{\metropolis@inner@setdefaults}{ + \pgfkeys{/metropolis/inner/.cd, + sectionpage=progressbar, + subsectionpage=none + } +} +\setbeamertemplate{title page}{ + \begin{minipage}[b][\paperheight]{\textwidth} + \ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title graphic}\fi + \vfill% + \ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi + \ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi + \usebeamertemplate*{title separator} + \ifx\beamer@shortauthor\@empty\else\usebeamertemplate*{author}\fi + \ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi + \ifx\insertinstitute\@empty\else\usebeamertemplate*{institute}\fi + \vfill + \vspace*{1mm} + \end{minipage} +} +\def\maketitle{% + \ifbeamer@inframe + \titlepage + \else + \frame[plain,noframenumbering]{\titlepage} + \fi +} +\def\titlepage{% + \usebeamertemplate{title page} +} +\setbeamertemplate{title graphic}{ + \vbox to 0pt { + \vspace*{2em} + \inserttitlegraphic% + }% + \nointerlineskip% +} +\setbeamertemplate{title}{ + \raggedright% + \linespread{1.0}% + \inserttitle% + \par% + \vspace*{0.5em} +} +\setbeamertemplate{subtitle}{ + \raggedright% + \insertsubtitle% + \par% + \vspace*{0.5em} +} +\newlength{\metropolis@titleseparator@linewidth} +\setlength{\metropolis@titleseparator@linewidth}{0.4pt} +\setbeamertemplate{title separator}{ + \tikzexternaldisable% + \begin{tikzpicture} + \fill[fg] (0,0) rectangle (\textwidth, \metropolis@titleseparator@linewidth); + \end{tikzpicture}% + \tikzexternalenable% + \par% +} +\setbeamertemplate{author}{ + \vspace*{2em} + \insertauthor% + \par% + \vspace*{0.25em} +} +\setbeamertemplate{date}{ + \insertdate% + \par% +} +\setbeamertemplate{institute}{ + \vspace*{3mm} + \insertinstitute% + \par% +} +\defbeamertemplate{section page}{simple}{ + \begin{center} + \usebeamercolor[fg]{section title} + \usebeamerfont{section title} + \insertsectionhead\par + \ifx\insertsubsectionhead\@empty\else + \usebeamercolor[fg]{subsection title} + \usebeamerfont{subsection title} + \insertsubsectionhead + \fi + \end{center} +} +\defbeamertemplate{section page}{progressbar}{ + \centering + \begin{minipage}{22em} + \raggedright + \usebeamercolor[fg]{section title} + \usebeamerfont{section title} + \insertsectionhead\\[-1ex] + \usebeamertemplate*{progress bar in section page} + \par + \ifx\insertsubsectionhead\@empty\else% + \usebeamercolor[fg]{subsection title}% + \usebeamerfont{subsection title}% + \insertsubsectionhead + \fi + \end{minipage} + \par + \vspace{\baselineskip} +} +\newcommand{\metropolis@disablesectionpage}{ + \AtBeginSection{ + % intentionally empty + } +} +\newcommand{\metropolis@enablesectionpage}{ + \AtBeginSection{ + \ifbeamer@inframe + \sectionpage + \else + \frame[plain,c,noframenumbering]{\sectionpage} + \fi + } +} +\setbeamertemplate{subsection page}{% + \usebeamertemplate*{section page} +} +\newcommand{\metropolis@disablesubsectionpage}{ + \AtBeginSubsection{ + % intentionally empty + } +} +\newcommand{\metropolis@enablesubsectionpage}{ + \AtBeginSubsection{ + \ifbeamer@inframe + \subsectionpage + \else + \frame[plain,c,noframenumbering]{\subsectionpage} + \fi + } +} +\newlength{\metropolis@progressonsectionpage} +\newlength{\metropolis@progressonsectionpage@linewidth} +\setlength{\metropolis@progressonsectionpage@linewidth}{0.4pt} +\setbeamertemplate{progress bar in section page}{ + \setlength{\metropolis@progressonsectionpage}{% + \textwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}% + }% + \tikzexternaldisable% + \begin{tikzpicture} + \fill[bg] (0,0) rectangle (\textwidth, \metropolis@progressonsectionpage@linewidth); + \fill[fg] (0,0) rectangle (\metropolis@progressonsectionpage, \metropolis@progressonsectionpage@linewidth); + \end{tikzpicture}% + \tikzexternalenable% +} +\def\inserttotalframenumber{100} +\newlength{\metropolis@blocksep} +\newlength{\metropolis@blockadjust} +\setlength{\metropolis@blocksep}{0.75ex} +\setlength{\metropolis@blockadjust}{0.25ex} +\providecommand{\metropolis@strut}{% + \vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()}% +} +\newcommand{\metropolis@block}[1]{ + \par\vskip\medskipamount% + \setlength{\parskip}{0pt} + \ifbeamercolorempty[bg]{block title#1}{% + \begin{beamercolorbox}[rightskip=0pt plus 4em]{block title#1}}{% + \ifbeamercolorempty[bg]{block title}{% + \begin{beamercolorbox}[rightskip=0pt plus 4em]{block title#1}% + }% + {% + \begin{beamercolorbox}[ + sep=\dimexpr\metropolis@blocksep-\metropolis@blockadjust\relax, + leftskip=\metropolis@blockadjust, + rightskip=\dimexpr\metropolis@blockadjust plus 4em\relax + ]{block title#1}% + }}% + \usebeamerfont*{block title#1}% + \metropolis@strut% + \insertblocktitle% + \metropolis@strut% + \end{beamercolorbox}% + \nointerlineskip% + \ifbeamercolorempty[bg]{block body#1}{% + \begin{beamercolorbox}[vmode]{block body#1}}{ + \ifbeamercolorempty[bg]{block body}{% + \begin{beamercolorbox}[vmode]{block body#1}% + }{% + \begin{beamercolorbox}[sep=\metropolis@blocksep, vmode]{block body#1}% + \vspace{-\metropolis@parskip} + }}% + \usebeamerfont{block body#1}% + \setlength{\parskip}{\metropolis@parskip}% +} +\setbeamertemplate{block begin}{\metropolis@block{}} +\setbeamertemplate{block alerted begin}{\metropolis@block{ alerted}} +\setbeamertemplate{block example begin}{\metropolis@block{ example}} +\setbeamertemplate{block end}{\end{beamercolorbox}\vspace*{0.2ex}} +\setbeamertemplate{block alerted end}{\end{beamercolorbox}\vspace*{0.2ex}} +\setbeamertemplate{block example end}{\end{beamercolorbox}\vspace*{0.2ex}} +\setbeamertemplate{itemize items}{\textbullet} +\setbeamertemplate{caption label separator}{: } +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{footnote}{% + \parindent 0em\noindent% + \raggedright + \usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par% +} +\newlength{\metropolis@parskip} +\setlength{\metropolis@parskip}{0.5em} +\setlength{\parskip}{\metropolis@parskip} +\linespread{1.15} +\define@key{beamerframe}{c}[true]{% centered + \beamer@frametopskip=0pt plus 1fill\relax% + \beamer@framebottomskip=0pt plus 1fill\relax% + \beamer@frametopskipautobreak=0pt plus .4\paperheight\relax% + \beamer@framebottomskipautobreak=0pt plus .6\paperheight\relax% + \def\beamer@initfirstlineunskip{}% +} +\providebool{metropolis@standout} +\define@key{beamerframe}{standout}[true]{% + \booltrue{metropolis@standout} + \begingroup + \setkeys{beamerframe}{c} + \setkeys{beamerframe}{noframenumbering} + \ifbeamercolorempty[bg]{palette primary}{ + \setbeamercolor{background canvas}{ + use=palette primary, + bg=-palette primary.fg + } + }{ + \setbeamercolor{background canvas}{ + use=palette primary, + bg=palette primary.bg + } + } + \setbeamercolor{local structure}{ + fg=palette primary.fg + } + \centering + \usebeamercolor[fg]{palette primary} + \usebeamerfont{standout} +} + \apptocmd{\beamer@reseteecodes}{% + \ifbool{metropolis@standout}{ + \endgroup + \boolfalse{metropolis@standout} + }{} + }{}{} +\metropolis@inner@setdefaults +\ProcessPgfPackageOptions{/metropolis/inner} +\endinput +%% +%% End of file `beamerinnerthememetropolis.sty'. diff --git a/2024-gns-ngi-webinar/beamerouterthememetropolis.sty b/2024-gns-ngi-webinar/beamerouterthememetropolis.sty @@ -0,0 +1,137 @@ +%% +%% This is file `beamerouterthememetropolis.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerouterthememetropolis.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerouterthememetropolis}[2017/01/23 Metropolis outer theme] +\RequirePackage{etoolbox} +\RequirePackage{calc} +\RequirePackage{pgfopts} +\pgfkeys{ + /metropolis/outer/numbering/.cd, + .is choice, + none/.code=\setbeamertemplate{frame numbering}[none], + counter/.code=\setbeamertemplate{frame numbering}[counter], + fraction/.code=\setbeamertemplate{frame numbering}[fraction], +} +\pgfkeys{ + /metropolis/outer/progressbar/.cd, + .is choice, + none/.code={% + \setbeamertemplate{headline}[plain] + \setbeamertemplate{frametitle}[plain] + \setbeamertemplate{footline}[plain] + }, + head/.code={\pgfkeys{/metropolis/outer/progressbar=none} + \addtobeamertemplate{headline}{}{% + \usebeamertemplate*{progress bar in head/foot} + } + }, + frametitle/.code={\pgfkeys{/metropolis/outer/progressbar=none} + \addtobeamertemplate{frametitle}{}{% + \usebeamertemplate*{progress bar in head/foot} + } + }, + foot/.code={\pgfkeys{/metropolis/outer/progressbar=none} + \addtobeamertemplate{footline}{}{% + \usebeamertemplate*{progress bar in head/foot}% + } + }, +} +\newcommand{\metropolis@outer@setdefaults}{ + \pgfkeys{/metropolis/outer/.cd, + numbering=counter, + progressbar=none, + } +} +\setbeamertemplate{navigation symbols}{} +\defbeamertemplate{frame footer}{none}{} +\defbeamertemplate{frame footer}{custom}[1]{ #1 } +\defbeamertemplate{frame numbering}{none}{} +\defbeamertemplate{frame numbering}{counter}{\insertframenumber} +\defbeamertemplate{frame numbering}{fraction}{ + \insertframenumber/\inserttotalframenumber +} +\defbeamertemplate{headline}{plain}{} +\defbeamertemplate{footline}{plain}{% + \begin{beamercolorbox}[wd=\textwidth, sep=3ex]{footline}% + \usebeamerfont{page number in head/foot}% + \usebeamertemplate*{frame footer} + \hfill% + \usebeamertemplate*{frame numbering} + \end{beamercolorbox}% +} +\newlength{\metropolis@frametitle@padding} +\setlength{\metropolis@frametitle@padding}{2.2ex} +\newcommand{\metropolis@frametitlestrut@start}{ + \rule{0pt}{\metropolis@frametitle@padding +% + \totalheightof{% + \ifcsdef{metropolis@frametitleformat}{\metropolis@frametitleformat X}{X}% + }% + }% +} +\newcommand{\metropolis@frametitlestrut@end}{ + \rule[-\metropolis@frametitle@padding]{0pt}{\metropolis@frametitle@padding} +} +\defbeamertemplate{frametitle}{plain}{% + \nointerlineskip% + \begin{beamercolorbox}[% + wd=\paperwidth,% + sep=0pt,% + leftskip=\metropolis@frametitle@padding,% + rightskip=\metropolis@frametitle@padding,% + ]{frametitle}% + \metropolis@frametitlestrut@start% + \insertframetitle% + \nolinebreak% + \metropolis@frametitlestrut@end% + \end{beamercolorbox}% +} +\setbeamertemplate{frametitle continuation}{% + \usebeamerfont{frametitle} + \romannumeral \insertcontinuationcount +} +\newlength{\metropolis@progressinheadfoot} +\newlength{\metropolis@progressinheadfoot@linewidth} +\setlength{\metropolis@progressinheadfoot@linewidth}{0.4pt} +\setbeamertemplate{progress bar in head/foot}{ + \nointerlineskip + \setlength{\metropolis@progressinheadfoot}{% + \paperwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}% + }% + \begin{beamercolorbox}[wd=\paperwidth]{progress bar in head/foot} + \tikzexternaldisable% + \begin{tikzpicture} + \fill[bg] (0,0) rectangle (\paperwidth, \metropolis@progressinheadfoot@linewidth); + \fill[fg] (0,0) rectangle (\metropolis@progressinheadfoot, \metropolis@progressinheadfoot@linewidth); + \end{tikzpicture}% + \tikzexternalenable% + \end{beamercolorbox} +} +\AtBeginDocument{% + \apptocmd{\appendix}{% + \pgfkeys{% + /metropolis/outer/.cd, + numbering=none, + progressbar=none} + }{}{} +} +\metropolis@outer@setdefaults +\ProcessPgfPackageOptions{/metropolis/outer} +\endinput +%% +%% End of file `beamerouterthememetropolis.sty'. diff --git a/2024-gns-ngi-webinar/beamerthememetropolis.sty b/2024-gns-ngi-webinar/beamerthememetropolis.sty @@ -0,0 +1,107 @@ +%% +%% This is file `beamerthememetropolis.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerthememetropolis.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerthememetropolis} + [2017/01/23 v1.2 Metropolis Beamer theme] +\RequirePackage{etoolbox} +\RequirePackage{pgfopts} +\pgfkeys{/metropolis/.cd, + .search also={ + /metropolis/inner, + /metropolis/outer, + /metropolis/color, + /metropolis/font, + } +} +\pgfkeys{ + /metropolis/titleformat plain/.cd, + .is choice, + regular/.code={% + \let\metropolis@plaintitleformat\@empty% + \setbeamerfont{standout}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@plaintitleformat\@empty% + \setbeamerfont{standout}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@plaintitleformat\MakeLowercase% + \setbeamerfont{standout}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat plain=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@plaintitleformat\MakeUppercase% + \setbeamerfont{standout}{shape=\normalfont}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat plain=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /metropolis/titleformat/.code=\pgfkeysalso{ + font/titleformat title=#1, + font/titleformat subtitle=#1, + font/titleformat section=#1, + font/titleformat frame=#1, + titleformat plain=#1, + } +} +\pgfkeys{/metropolis/.cd, + usetitleprogressbar/.code=\pgfkeysalso{outer/progressbar=frametitle}, + noslidenumbers/.code=\pgfkeysalso{outer/numbering=none}, + usetotalslideindicator/.code=\pgfkeysalso{outer/numbering=fraction}, + nosectionslide/.code=\pgfkeysalso{inner/sectionpage=none}, + darkcolors/.code=\pgfkeysalso{color/background=dark}, + blockbg/.code=\pgfkeysalso{color/block=fill, inner/block=fill}, +} +\newcommand{\metropolis@setdefaults}{ + \pgfkeys{/metropolis/.cd, + titleformat plain=regular, + } +} +\providecommand{\tikzexternalenable}{} +\providecommand{\tikzexternaldisable}{} +\useinnertheme{metropolis} +\useoutertheme{metropolis} +\usecolortheme{metropolis} +\usefonttheme{metropolis} +\AtEndPreamble{% + \@ifpackageloaded{pgfplots}{% + \RequirePackage{pgfplotsthemetol} + }{} +} +\newcommand{\metroset}[1]{\pgfkeys{/metropolis/.cd,#1}} +\def\metropolis@plaintitleformat#1{#1} +\newcommand{\plain}[2][]{% + \PackageWarning{beamerthememetropolis}{% + The syntax `\plain' may be deprecated in a future version of Metropolis. + Please use a frame with [standout] instead. + } + \begin{frame}[standout]{#1} + \metropolis@plaintitleformat{#2} + \end{frame} +} +\newcommand{\mreducelistspacing}{\vspace{-\topsep}} +\metropolis@setdefaults +\ProcessPgfOptions{/metropolis} +\endinput +%% +%% End of file `beamerthememetropolis.sty'. diff --git a/2024-gns-ngi-webinar/figures/GNS-BlockCreation.drawio b/2024-gns-ngi-webinar/figures/GNS-BlockCreation.drawio @@ -0,0 +1 @@ +<mxfile host="Electron" modified="2023-05-01T14:16:06.039Z" agent="5.0 (Macintosh; Intel Mac OS X 13_2_1) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="XcXYNxkugUaDmJ9r4ltp" version="14.6.13" type="device"><diagram id="duNTSAPvJWYlNGgyWCeS" name="Page-1">7Vxbc6M4Fv41fmwXIK6PHSfd2Z1kK5XMbCfzMiVAttlgywM4sfvXrwRSAEmOsYOMuybuVCc6CCHpfDqXT8IjMFlsvmdwNb/FMUpHlhFvRuByZFkW8Dzyi0q2lcR0LaOSzLIkZrJa8JD8REzIq62TGOWtigXGaZGs2sIIL5coKloymGX4tV1titP2U1dwhiTBQwRTWfojiYs5H4Zj1xeuUTKb80ebblBdWUBemw0ln8MYvzZE4GoEJhnGRfXXYjNBKZ0+PjHVfd92XGU9y4st7yvvUYaWRZcWfsTfLi9nofn9x5+3f99uZ/mzn35xq1ZeYLpmzd6jHK+zCBHpPYpwFufSk/PXZJHCJSldTPGyeGBXDFKO5kka38AtXtM+5QWMnnnpYo6z5CepD1NyySQCcjkrGAhso1Xjgd7J2sxQTurc8YGagugWbloVb2Be8N7gNIWrPAnL/tEbFzCbJcsLXBR4wSpNkzSd4BRn5eBAaMbx1Ch7l+Fn1LhiGh4I3gZddZvq9ULWBNPWC8oKtGmImGa+I7xARbYlVdhVz2AI4yvHYTB6rWFouUw2byKQ4w0y6M/e2q6xQP5gcDgAGp4Eja8j8JVIzLE1BmNbggUZaiHN2xJXOGlMMhPBNJktSTFFU3obnauErMSvTFzgFW1sBaNkObsp61zateSeTQEVYXLvNC0X2zyJY7SkWMAFLGD4BswVTpZFOUXOBfkhkzYxxs7IIR2fkLJZl8kPrZ4VE7wkY4FJqVREUPWKKLKa6jd9pfrfXWr7McEwYHeEgOVqQoAvIeD3x98rDFyT2zH5/QNnxMR+IkEvElx3YCQEEhJuHysgLGCSjtEGLlYpGuNs9okFhoUVyhIy+Sh7qLrGnqgLIoHVESL+xyES3jzdZ8F2st3c/8v+Y3o3/+/j9RcgQUSCAlrGX2mQRkpRCvM8iajPLxY8HhD9KtokxSO7Rv9+onNI1FGVLrnbLwtbXliSwTw2C427aLG+rSxtW3pBsRQfSk6dhUel6H+zv5ZPf6yQvUFP6eO//xNeofmXgLlGEt3MUPFeRUet0oYOHYUKuSxDKSySl3aHVXplT7ijYK9DDtPwvVbM4TpCKFGNlN3WjCzFlkwgtGQILVVTIbVUAu1t4MebJx5uNbHnpnxVlvkCj+Lcv9c0Aif6Bkb5aYoaYOVC2sCXvAQlNXeWtdqUVeub3Bn9fbcOU4Jny/iT2jHL+A1teR/IkKpuVDWlZbHDCJH/3wyRMbbsUtAWlpXGdEm3xEFQXbA9sZVK7lmqxk0uLE0dN7w3METpHc6TIsHUAIcsdG6uW7WRhvmqStGmyQbFDdMekRWFMm59UXb1gqrxlznBHK7ovCw2M5pjjqMkj7AZjJ/JfEqxumE4BpqqYnXDMC8vJkx/Dfm0/OiJ4UkU347hXXfsOZJZVi1pyxo7mly3dQZrI0teYPG5Kk60KpBj2oYyg72wSq2edFVwuJ/VolAFK61F0Q3sEtJLXHRFOFfqnITPMwqjOmaspXdcRNXxOk8KRONJetsrQYIQP1FI8Rj0KGajB33btmgF5TTW9BXqdnsgMpRhlhwdXC2jbLsq5NGyLrwknDMa7WPVlE90pCdeEjWSSI0hI8w4KK5/u/wmASOb40W4zjsoXMg5BIVPHfpPpXC3/MiGoPoogfDu1HZGBxB8JLBkW2ACFc9l9GALlGOQKdCPJC6lHj6WhHSd9b35haNMaobKNyzBMFgic9k13bA9AUNi3rIj2yAqhNtGNRZhdO4w396owVa1eGwqo9SZzLp+HI0sja5T56dRnVTvSaPNM0RwOwff7eCHQrpt/mJId8AASJfZ5ZZb1uAPXdtzfU/lD4FpA8d+JzDW5Q89QcO2Yt/nxP5Q5nqHtUBafeheMs/paKn8s/K1thBmOSIhd6wFsjVZIMD567cOW/otED91oCf0q5H61ALqSRznecHRt9vatTyhieHg+AEqWjnxlpz76eLbTF9FQTxsF3QMJRfNHCrlqD65t5NwbyGM/BioQgwL2LYT60ytXSHq9ORQQh/NpnaecjbDIEmmf/f5oh40LSr2ncM8u0gyQe3w5zpD47zAGZyhv8IUhwrrr0u3gZBR2EY33dq6NGtJin2gMy4NvydCDegkafSkuFZHTw3Oy1XLqWBPkaMUgmrKXV37BJEjkJNXzvBqyl2nU+RGkcqSxV4QGocD83jO1gkGz1FtrZH7pz1oEhTtoKIvKkuXOfAGsAa2vMNUe8Nfksc62EaIPJar2vU7sY2QY5SP24jzI7L4oPYRWdyu7DVAHM1nYoBswb874j5xZwskHHdzzNNQWZ55ChPU7/HLHsCuhf7q6kR3YLjDMvGHxLoP2tBxHME4dsW6ZxyH9d7gqNrGPCULdpEmy7gkGT4Pn52UAJvCOIiVZ04gsk2gPlTWU54iEGCO4gWaUxNgtjIyhMU6k1NFvC4IasmU8XcbqWGMYT6nqioLexHQkQ1rAEWiuV5zMI5oM1PSUPEeQyb6i0OOlfWjcZEWc01Z47bSXGvTuOyHK2Lgbh3Ks9ATO+btPm+mKQOJIfKnSjbCjXwUHpBpgEN1LrIRvjV4puH9ekfIQMdAyjvvM2Rnz06KHfY9IMBNxxky1RGOgaKvz9diTh+DRRFypsrXYoALAnDAJuTh1lmIwbzhNyF9HUcq9e4dAaXR7Wyuz2XvyDnWOgNPtJoSPDTtHp3EPstJwYSEZckSaYsQfXm/6uA1cGxEcsxbvB3XSecXbe0dC2ovHWQPGu6Yhpjg+EeuKJGf90zQaT31dtj37E6VtvlJsx/DvQtnnRG6F5DDWnhgtgnKwDqSoPSFuNhz9dh3kYwPXOPdfpmW8e4NehwC31A/h4Oo+s21xtUxKHvv7mKjPro4XHHLq6fFIYHdMU4Q/QTybvk1zOcS4H+d3XIez3XOkkzLEayMwQK0AV/7sHTaIC1p0vH2ZNiozhSCseDYLW0/2NPQ4Mfhgz25zj9kvUtfkDP88ZhA3jR4O49tXKQ4epaXf5omqxzt15DEce1RWRSj0A/7IKwOV41jiKoBqi+oCDzOQDTVU0v714+8qfBQHT4fMRr1n6idwDTHsnJMQ7l0dH2hRNADo3ga17j/u8o6u0xX6WwHi7XFVXtsrO06e46XHU2MkGL9bb9V9fpbk8HV/wE=</diagram></mxfile> +\ No newline at end of file diff --git a/2024-gns-ngi-webinar/figures/GNS-BlockValidation.drawio b/2024-gns-ngi-webinar/figures/GNS-BlockValidation.drawio @@ -0,0 +1 @@ +<mxfile host="Electron" modified="2023-05-09T11:12:53.052Z" agent="5.0 (Macintosh; Intel Mac OS X 13_2_1) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36" etag="6uL9OV3H78YwBUdGg73_" version="14.6.13" type="device"><diagram id="duNTSAPvJWYlNGgyWCeS" name="Page-1">7Vxbd9q4Fv41eSxLvpvHAEkzbXoWEzptcl66hC2wJwYxtimQXz+SLYEtCYPBJvScOlkraFvelvb+tG8SuTH6s/XHGC6CL9hH0Y0O/PWNMbjRdc3t6uQPpWwYRQduTpnGoc9oO8IofEOMCBh1GfooKXVMMY7ScFEmeng+R15aosE4xqtytwmOym9dwCmSCCMPRjL1e+inAaPalrm78YDCacBfrdnd/M4M8t5sKkkAfbwqkIy7G6MfY5zmn2brPoqo+Lhg8ufu99wdDvsfPv0966Wv355/fP/4GQ0GLx/YcH/CaMkmcB/OfT7UGM3Tk1nrEusBisOfiE0u3XCRxQGejZdE7r1VEKZotIAevbMiCCG0IJ1FpKWRjxM8T5nGNZe2wyjq4wjHGR/Dh8ideISepDF+RYU7tuei8YTcYUNCcYrWgr52c90vKDb7jwjPUBpvyHOMi6E7OR8GW5frcFXAgMFoQVH9wGLYY7ibbnnv5E0+MJHXEL8hiV8SPJr7txTypOVFMElCr1reRELx5pm0AG+80EbH4s3BunhzsGGt/MXIl1bOMTIn6xfGU1TVT1frpiB7SyF6TotRBFOKy5IpUKiDvWGIQzLqrep10+50C5dTRsJ2NXOOCV7GHmJMimtK4GsKjCwgMMrFIjEiGoWbQrcF7ZBUjV+ArmMI2Ms57pC4FfHp4DRbBKdWD5xoHabPu56k9cKZkM+7h2jj/wLQltEQgg1HRJbeEaxdQxgWh3wRDNsShh9gErTm3WzTsV1H5d0MzTRIeJFzKNAn2dWi1+uaoCT2Lo/V3s/rOS0YlksbiPda+AYPvrk6dUFLxy58CRe2MJaGlr00YPaeVpc9TzTOgdipgRSHolYA4g6W7+OrtHfFrAYcEWtAdDLHwlbTBDei4LUHuY2BS87HRimOac6pg89oIyMtikhmiw57F5gs8nR3Eq6Rf9jdeD4au2Olu7GNruG36FY0Cwh60DSuh6JnAUrPAvZD6CzPosn57I1uRykTZVZS4DKy/1nSJJ1IyADZVSQV1MeJlMGHJFPGLelALN8667p7yJ7Sv8PlOCK2RAf/xfMtIvIxkDnlw8h7SkBhtpR8tnrkl4yon4G7D24scr9PaR3dzAhlYtapo7sCudvNb5iOyCWnO7qKucaJ5NfoUeyEHowe4RhFQ5yEaYjnZIxjnKZ4VgYw73sbhVPaJ8ULFawhu+0RBCKijV42cRTf/UT5/CmvJIALKpfZekrLUB0vTDysdTuvRJ7SSgDAAmiiWgkAaINevyLwKqwxCvjWVowulB802+448opR2WFdismbWzGqEkRpxRy3EqRlkMHlWOBzXQdoDacUXb0FikMyQ4oOTh1ykn5EnE6Rxi2nDJex5vsToIIL8VVGF7UIA9MUYaCoQrkKENitGU1Vot+O0dRcFVR6UTj3iWHQwW/b+Q620/OQNVHaztajCMMuLwbHkRdDewZRk0AkT6q6pj5+fHmKu5v+Zv30h/nXZBh8e35Q1M2ekIdjnyRJoBdh7/UKA8TilLU92j4+FrRtQ+Xaug7XWlGXO+o5uvx0+zj8I3xb48nD0PszeNis8BdVpC7LfpcGzqnR2VdmyGKDU3K7U/PIhKQxqZyhZuT7MNqlqT5rgSpt5vlVlayYaIQk9P1yRlfAlHVihZOiswO2l1Y2ONqx5c4TssdKOZe23Dw8G4fz9nbdzq5LnmcfxJzdVsU8rdUg/57+mL/8tUDmGr1Ez5/+M75DgWLj8xsJLyebuh5AydyU7U6R+7UruFJgR2vdca5O6War+607i/5SMuh1trRApSupp6qjTX6xfFiJ52vxDToo1xNtsaB0rG9whMDF0gRGDRXByYh15Yj3Oi1gqqe47wHXrHzB2WV2JYBU1baay2nf8tEOLJ96S+FXQ7jllrUvbc5coFxeF+MiApve6FGbMKsWBOUI/5K7PA1F9FVAvxL8dgW7qgiz6yC4EL4DHhy8XwAvnykYhdM5TJexHMDjZRqRwL6/PchIVerDJKDZe9Y4WCLaUxcSy0AFTIvVH7hKjI5H2UwIoxRV1EPF6OZQfbT5sLGrC47PkMNGU4ncJsoIRj9evPWWD4PRJPa1+/vet++bA4ckj88VlMzlkJQzz+ue45iXPB8+D+4lgDWVQEws+qPSuJ1dcgKRX0okVErxaCSI5zUNXbG/2FoCoZxDm0fiTjqveazUiwFQFQyvxH9c6rymIRaVWjqvyU/ZNRULKVVYLxRq7VjVqWc8/6cB3dh5zUshWBzwRRAsR1aX3YgcbWZ0CtkO5N3cizeLLBj7vQ95kX3IMfRc31CFILphmpZ6s6qhUEPYh9Qvug+pDJzlEvIAZYisG3UqubvV3H/JCnXtfQmxQm1astYvXKHuXpkPPzsordLUwaqce1U+3OhqpaDULYPHaMijmy15dPEgtsVK0k15dLWm6x3ErtyBP2u7pc3a268JZ7Feqzsn1pibB/AZJTvliRxFye4Jse0xHWxP5wi4TFbhLIIZIDMUsjsUGF4QRv4j3OAl1QkBkffKW70Ax+Eb6Q+35TiKMYZhE5R6jOiTjGeMaHg65GDTBNIXuC51fIQJryeSqDiCiyQcZ+OjD86IxMN5j0V3Waf6JyDVB2NbcMPALOFHU7jh7enHkhsWk6hT3LAaMPJXlG5Z4tDRO0bHlMBC5ppK0mTmrCh6RuLRc4Qm6d6YOyGxVjifPmZ9BuaO8sRkQEmYPDuJMrMWhL6P6OHZGKcwheMtXPfkJDxl0HbtLFtY4JjEYXMyFxhmqkYEayuUpDeyPZZBUb0CD6OCW5EjQaDbbWFAjpG/Pn/NUfBAnsfk73ccR/5vLLSNBdt+byzIcfmX5xwKMxhGHbSGs0WEOjie/kYDQ8P2BP8oH9remKohkPDw9iBI3PNBot4YrHe6qL1Y99r2pq/rbIW4N03yoI5V2F/WT4uC6RGfin1qW/z6RlsniyzQ7Nfq1VCXN8JYvTT7Gse+iLqBMqRYdawIX/cFvOLu+NsyRp0k/wbnj3GEx0e5tmZi364m5E7guMKjWb8ARZq7f0uUA2H3752Mu38B</diagram></mxfile> +\ No newline at end of file diff --git a/2024-gns-ngi-webinar/figures/gns-logo.png b/2024-gns-ngi-webinar/figures/gns-logo.png Binary files differ. diff --git a/2024-gns-ngi-webinar/figures/gnunet.png b/2024-gns-ngi-webinar/figures/gnunet.png Binary files differ. diff --git a/2024-gns-ngi-webinar/gns.tex b/2024-gns-ngi-webinar/gns.tex @@ -0,0 +1,318 @@ +\documentclass[aspectratio=169]{beamer} +\usepackage{appendixnumberbeamer} +\usepackage{mathtools} +\usetheme{metropolis} % Use metropolis theme +\definecolor{fhggreen}{RGB}{23,156,125} +\let\oldemph\textbf +\renewcommand{\textbf}[1]{{\color{mLightBrown}\oldemph{#1}}} + +\usepackage{blkarray} +\usepackage{amsmath} +\usepackage{multirow} +\title{\includegraphics[width=0.2\textwidth]{gns-logo.png}\\\small{The GNU Name System}} +\date{2023-09-27} +\author{Bernd Fix, Christian Grothoff, \textbf{Martin Schanzenbach}} +%\institute{\includegraphics[width=.25\textwidth]{aisec_logo.pdf}} + +\graphicspath{{figures/}} + +\begin{document} +\metroset{block=fill,sectionpage=progressbar,numbering=counter} +\maketitle + +\begin{frame}{Directories / DNS} + $$ + \mathrlap{\overbrace{\phantom{\text{www}}}^{\text{Label}}} + \text{www} + \mathrlap{\underbrace{{\color{fhggreen}\phantom{\text{.example.com}}}}_{\text{Namespace}}} + {\color{fhggreen}\text{.example.com}} + $$ +\end{frame} + +\begin{frame}{The .alt TLD} + Whats wrong with DNS? See RFC 8324\footnote{DNS Privacy, Authorization, Special Uses, Encoding, Characters, + Matching, and Root Structure: Time for Another Look?}: + \begin{itemize} + \item No \textbf{query privacy}. + \item A \textbf{single hierarchy with a centrally controlled root}. + \item Requires management/maintenance of \textbf{root servers}. + \item etc\ldots + \end{itemize} + DNSSEC and other ``patches'' do not or in adequately address the issues: ``[the existing solutions for DNS are] security patches rather than designed-in + security or privacy mechanisms''. +\end{frame} + +\begin{frame}{Directories / GNS} + $$ + \mathrlap{\overbrace{\phantom{\text{www}}}^{\text{Label}}} + \text{www} + \mathrlap{\underbrace{{\color{fhggreen}\phantom{\text{.myzone.gns.alt}}}}_{\text{Namespace}}} + {\color{fhggreen}\text{.myzone.gns.alt}} + $$ +\end{frame} + +\begin{frame}{DNSSEC} + Why ``.gns.alt''? + \begin{itemize} + \item RFC9476: ``The .alt Special-Use Top-Level Domain'' defines the TLD to be used for alternative (from the point of view of DNS) name systems. + \item RFC9476 does \textbf{not} define a registry for ``.alt''-subdomains. + \item We manage a ``.alt'' registry at \url{https://gana.gnunet.org}~\footnote{If you ever need a registry for your protocol feel free to approach us!} which already includes a code point for ``.gns.alt''. + \item To prevent shadowing of DNS names, it is recommended to use the ``.gns.alt'' suffix. + \item Sometimes (e.g. censorship-overrides) you may not want to do that. + \end{itemize} +\end{frame} + +\begin{frame}{The GNU Name System} + \begin{itemize} + \item Namespaces are created and uniquely identified using \textbf{public zone keys}. + \item \textbf{Records} are grouped by \textbf{label}, encrypted, signed, and published in a key-value store (usually, a DHT\footnote{\url{https://datatracker.ietf.org/doc/draft-schanzen-r5n/}}). + \item Supported zone types and crypto (for now): + \begin{itemize} + \item PKEY: ECDSA+CTR-AES-256 + \item EDKEY: EdDSA+XSalsa20-Poly1305 + \end{itemize} + \end{itemize} + \centering + \includegraphics[width=1\textwidth]{GNS-BlockCreation-0} +\end{frame} + +\begin{frame}{Zone management} + \includegraphics[height=0.9\textheight]{deleg0.pdf} +\end{frame} + + +\begin{frame}{Name resolution} + \includegraphics[height=0.9\textheight]{deleg1.pdf} +\end{frame} + + +\begin{frame}{Name resolution} + \includegraphics[height=0.9\textheight]{deleg2.pdf} +\end{frame} + + +\begin{frame}{How do we bootstrap the top-level zones?} + \includegraphics[height=0.9\textheight]{deleg3.pdf} +\end{frame} + + +\begin{frame}[fragile]{The Start Zone} + ``Hyper-hyper local root'' concept we call the \textbf{Start Zone}: + \begin{itemize} + \item Start Zone contains so-called \textbf{suffix-to-zone}-mappings. + \item Implementation ships with an \emph{initial} Start Zone configuration. + \item Start Zone is configurable \emph{locally} at \emph{each} endpoint. + \item User override/extension of mappings at top-level or subdomain-level to\ldots + \begin{itemize} + \item circumvent censorship if necessary, or + \item names in private networks. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{The Start Zone} + Example suffix-to-zone mappings: + \begin{small} + \begin{verbatim} +# Some TLDs +.com = 000G001MF6DVMZZ4Y8XRZQDXM1PB3D3VGEK29ZHXBA57EPSNW1QBPKT8J0 +.myzone.gns.alt = 000G007FKSA876G6SNDF8VA7YK1DJE96RPPBHRT2X55Q13M2T4YKNYT3DG +# Some subdomain overrides +.gnu.org = 000G001223Q8ZJZBSK6XT2DWV6PE5B1W436D2NB7ZBR9XSXT7TFJHCDB24 +.gnunet.gns.alt = 000G0047M3HN599H57MPXZK4VB59SWK4M9NRD68E1JQFY3RWAHDMKAPN30 + \end{verbatim} + \end{small} +\end{frame} + +\begin{frame}[fragile]{The GNUnet Registrar} + How do I get my zone published? + \begin{itemize} + \item Entities in Start Zones are prime candiates to offer registrar services. + \item But, \textbf{anyone} can become a registrar! + \item The GNUnet Project offers an experimental registrar service. + \end{itemize} +\end{frame} + +% \begin{frame}{Default Start Zones --- Possible Governance Models} +% \begin{itemize} +% \item Non-profit organization. +% \item Multi-stakeholder model: Board, supporting organizations, \ldots +% \item Examples for possible stakeholders: +% \begin{itemize} +% \item Software and OS Distributors +% \item Browser vendors +% \item Governments +% \end{itemize} +% \item Funding options: +% \begin{itemize} +% \item Applications for new top-level domains. +% \item Registrations of new top-level domains. +% \item \ldots +% \end{itemize} +% \end{itemize} +% \end{frame} + +\begin{frame}{Hiding information inside GNS} + \begin{itemize} + \item GNS's crypto allows you to hide resource records. + \item It requires either + \begin{itemize} + \item the use of a label with sufficient entropy (a shared secret) or + \item the use of a secret zone. + \end{itemize} + \end{itemize} + $$ + \mathrlap{\overbrace{\phantom{\text{ohcoxaiShaingahd}}}^{\text{Secret label}}} + \text{ohcoxaiehaingahd} + \mathrlap{\underbrace{{\color{fhggreen}\phantom{\text{.my.zone}}}}_{\text{Namespace}}} + {\color{fhggreen}\text{.my.zone}} + $$ +\end{frame} + + +\begin{frame}{Encrypt} + \centering + \includegraphics[width=1\textwidth]{GNS-BlockCreation-1} +\end{frame} + +\begin{frame}{Sign} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockCreation-2} +\end{frame} + +\begin{frame}{Derive} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockCreation-3} +\end{frame} + +\begin{frame}{Combine and publish} + \centering + \includegraphics[width=1\textwidth]{GNS-BlockCreation-4} +\end{frame} + +\begin{frame}{Query} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockValidation-0} +\end{frame} + +\begin{frame}{Retrieve} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockValidation-1} +\end{frame} + +\begin{frame}{Verify} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockValidation-2} +\end{frame} + +\begin{frame}{Decrypt} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockValidation-3} +\end{frame} + +\begin{frame}{Decrypt} + \centering + \includegraphics[height=0.9\textheight]{GNS-BlockValidation-4} +\end{frame} + +\begin{frame}{The RFC journey} + \begin{itemize} + \item[2012:] ``GNU Alternative Domain System'', Master's Thesis, TUM. + \item[2013:] ``The GNU Name System'', 30c3, Hamburg. + \item[2015:] ``Special Use Domain Names of P2P Systems''@DNSOP, IETF 93, Prague. + \item[2019:] ``The GNU Name System: 2019 Edition''@DINGRG, IETF 104, Prague + \item[2019:] ``The GNU Name System'', ICANN66, Montreal. + \end{itemize} + Around this time, NGI Search and discovery funding aquired to create the specification. +\end{frame} + +\begin{frame}{Paths} + Potential paths to an RFC (incomplete): + \begin{itemize} + \item IETF + \begin{itemize} + \item Organized in working groups (WGs). E.g. DNSOP. + \item Work on ``Standards''. + \item \textbf{IF} your document is adopted, control over its contents are given to the WG. + \item Publication requires \textbf{consensus}. + \end{itemize} + \item IRTF + \begin{itemize} + \item Similar to IETF WGs but focussed on research topics. E.g. CFRG. + \item Technically don't work on ``Standards'' (RFCs never have status ``Proposed Standard''). + \end{itemize} + \item ISE + \begin{itemize} + \item Process outside of the IETF. + \item You retain most of the control over the document. + \item Requires ISE to accept it for publication and that it does not conflict with work in the IETF. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}{The RFC journey} + \begin{itemize} + \item[2020/5:] First draft submission to IETF datatracker. IRTF and other research groups approached (through mailing list) asking for interest and adoption. + \item[2020/7:] ``The GNU Name System''@SECDISPATCH, IETF 108, Online. IRTF and other research groups approached (through mailing list) asking for interest and adoption. + \item[2021/5:] Asked Independent Stream Editor for adoption. + \item[2021/11:] Draft adopted by Independent Stream Editor. + \item[2023/11:] RFC 9498 published. + \end{itemize} + \textbf{Note:} Publication through the ISE is not technically related to standardization (RFC publication $\neq$ IETF standardization). But, it is a very enriching and helpful process in any case! +\end{frame} + +\begin{frame}{The Independent Stream} + There will be questions, and feedback! + \begin{itemize} + \item ``Why should this document be published as RFC (as opposed to self-published)'' + \item You need to propose (at least) two expert reviewers that can (and will!) provide extensive expert reviews to the ISE. The ISE may be able to help you with that, but take this into account \textbf{early}. + \item There is going to be a lot of ping-pong with the ISE and all kinds of reviewers of the document from withing or outside of the IETF. + \end{itemize} +\end{frame} + +\begin{frame}{The IESG review} + \begin{itemize} + \item The ``final hurdle''. + \item Includes the ``IETF conflict review''. + \item In our case, GNS potentially conflicts with other IETF work: DNS. + \item Again, extensive discussions with domain experts (DNSOP, IESG reviewer). + \item Close coordination with RFC 9476 (dot-alt) to argumentatively deconflict. + \end{itemize} +\end{frame} + +\begin{frame}{The RFC editor} + \begin{itemize} + \item Very helpful editorial review and proofreading. + \item Can be a rather long process (2023/7 --- 2023/11). Note: RFC 9498 is 74 PDF pages. + \item Usually not a lot of actual work (for you). + \end{itemize} +\end{frame} + +\begin{frame}{In retrospect} + \begin{itemize} + \item GNS was a politically loaded document with historical baggage (special-use domains etc.). + \item ISE process was very beneficial: + \begin{itemize} + \item Thinking again from an implementer's perspective (also: alternative implementations!). + \item Important details that destroy interoperability. Example: UTF-8 canoncalization for labels. + \item Design oversights. Example: Tombstone records for deleted record sets required to prevent accidental IV reuse. + \end{itemize} + \item Other specification efforts: \url{https://datatracker.ietf.org/doc/draft-schanzen-r5n/}. + \end{itemize} +\end{frame} + + +\begin{frame} + \begin{center} + Questions?\\ + \vspace{2cm} + \url{https://gnunet.org}\\ + \vspace{1em} + {\tiny + \texttt{schanzen@gnu.org}\\ + \texttt{3D11~063C~10F9~8D14~BD24~D147~0B09~98EF~86F5~9B6A}\\ + } + \end{center} +\end{frame} + +\end{document}