diff --git a/best-practices/slides/build.sh b/best-practices/slides/build.sh new file mode 100644 index 0000000..5102f2b --- /dev/null +++ b/best-practices/slides/build.sh @@ -0,0 +1,3 @@ +export TEXINPUTS=::`pwd`/theme/ +xelatex slides.tex +xelatex slides.tex diff --git a/best-practices/slides/images/boite.png b/best-practices/slides/images/boite.png new file mode 100644 index 0000000..b1752b9 Binary files /dev/null and b/best-practices/slides/images/boite.png differ diff --git a/best-practices/slides/images/git-log.jpg b/best-practices/slides/images/git-log.jpg new file mode 100644 index 0000000..37a6d0a Binary files /dev/null and b/best-practices/slides/images/git-log.jpg differ diff --git a/best-practices/slides/images/git-master.jpg b/best-practices/slides/images/git-master.jpg new file mode 100644 index 0000000..c2bd442 Binary files /dev/null and b/best-practices/slides/images/git-master.jpg differ diff --git a/best-practices/slides/images/miso.png b/best-practices/slides/images/miso.png new file mode 100644 index 0000000..0750f4f Binary files /dev/null and b/best-practices/slides/images/miso.png differ diff --git a/best-practices/slides/images/project.png b/best-practices/slides/images/project.png new file mode 100644 index 0000000..635274b Binary files /dev/null and b/best-practices/slides/images/project.png differ diff --git a/best-practices/slides/images/pts-ikea2.png b/best-practices/slides/images/pts-ikea2.png new file mode 100644 index 0000000..fb7d2ed Binary files /dev/null and b/best-practices/slides/images/pts-ikea2.png differ diff --git a/best-practices/slides/images/pts-patron-1.png b/best-practices/slides/images/pts-patron-1.png new file mode 100644 index 0000000..f840f0e Binary files /dev/null and b/best-practices/slides/images/pts-patron-1.png differ diff --git a/best-practices/slides/images/soutif.png b/best-practices/slides/images/soutif.png new file mode 100644 index 0000000..a344ebb Binary files /dev/null and b/best-practices/slides/images/soutif.png differ diff --git a/best-practices/slides/slides.pdf b/best-practices/slides/slides.pdf new file mode 100644 index 0000000..2753c39 Binary files /dev/null and b/best-practices/slides/slides.pdf differ diff --git a/best-practices/slides/slides.tex b/best-practices/slides/slides.tex new file mode 100644 index 0000000..f04b82b --- /dev/null +++ b/best-practices/slides/slides.tex @@ -0,0 +1,190 @@ +%!TEX program = xelatex +\documentclass{beamer} + +\usepackage{blindtext} +\usepackage{multicol} + +\usetheme{Execushares} + +\title{How FOSS can help human to keep their sanity during a pandemic crisis?} +\subtitle{{\it Building better open source projects}} +\author{Pauline Bourmeau (@Ko97551819) - Alexandre Dulaunoy (@adulau)} +\date{June 29, 2020} + +\setcounter{showSlideNumbers}{1} + +\begin{document} + \setcounter{showProgressBar}{0} + \setcounter{showSlideNumbers}{0} + + \frame{\titlepage} + +\begin{frame}[fragile] + \frametitle{Background} + {\center \it \Large During the lockdown, should we work on an obscure open source natural language processing project\\ or {\bf just do cloth face mask}?\\} + \begin{flushright} + Another video chat. + \end{flushright} + \end{frame} + +\begin{frame}[fragile] + \frametitle{Meaning of Life} + \begin{itemize} + \item {\bf Doing} something which is an imminent and vital need: {\bf face masks\footnote{\url{https://mianmo-project.github.io/}}} + \begin{itemize} + \item It works + \item and many open source rules and practices apply + \item What did we learn? and help your next open source security project + \end{itemize} + \end{itemize} + \includegraphics[scale=0.08]{./images/project.png} + \end{frame} + +\begin{frame}[fragile] + \frametitle{Resonate and be human} + + \begin{multicols}{2} + \null \vfill +\includegraphics[scale=0.2]{./images/pts-patron-1.png} + \vfill \null +\columnbreak + \null \vfill + \begin{itemize} + \item {\it Users are wonderful things to have, and not just because they demonstrate that you're serving a need, that you've done something right.}\footnote{The Cathedral and the Bazaar, Eric Steven Raymond} + \item In other words, face masks without users are useless + \item {\bf Be your first users}, this will already saves life + \end{itemize} + \vfill \null +\end{multicols} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Try and don't be afraid} + + \begin{multicols}{2} +\null \vfill +\includegraphics[scale=0.05]{./images/git-log.jpg} + \vfill \null + \columnbreak + \null \vfill + \begin{itemize} + \item Learn from scratch + \item Keep a trace and {\bf publish your failures} + \item Why git was under-used during the design of cloth face mask? + \item Keeping track of all face mask design videos is a f*cking challenge\footnote{{\tiny but we enjoyed seeing the different cultures through the lens of face mask design}} + \item Pick a video and try \footnote{{\tiny bound to YouTube recommendation algorithms}} + \item Filling the gap of written documentation + \end{itemize} + \vfill \null +\end{multicols} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Tooling} + \begin{multicols}{2} +\null \vfill +\includegraphics[scale=0.16]{./images/pts-ikea2.png} + \vfill \null + \columnbreak + \null \vfill + \begin{itemize} + \item {\it \tiny Ivan Illich defined convivial tools as those most accessible by each person, the least controlled by others, and without restricting equal use by others.}\footnote{Ivan Illich’s book "Tools for Conviviality," published in 1973.} + \item While designing and building face-masks, people took back the control of the tools by becoming producers + \item They use the {\bf most easy and accessible tools} (not always open source) to provide guidelines + \end{itemize} + \vfill \null +\end{multicols} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Less "Intellectual Property Rights"} + \begin{itemize} + \item The fluidity of creative exchanges was helped by fewer legal constraints + \item Social pressure can help in such period + \item Many projects during the lock-down relied on {\bf existing open source, free software and content licensing schemes} + \item A lot of cloth face mask designers didn't know they were doing open source + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + \frametitle{Reinforcing Social Relationships} + \begin{multicols}{2} + \null \vfill + \includegraphics[scale=0.08]{./images/soutif.png} + \includegraphics[scale=0.08]{./images/miso.png} + \vfill \null + \columnbreak + \null \vfill + \begin{itemize} + \item {\bf Fun is key} to keep sanity in an open source community + \item With covid-19, all open source contributors discovered the social reality of existing remote contributors + \item Relying on the existing experience of managing open source community\footnote{Social Architecture - Building On-line Communities by Pieter Hintjens} + \end{itemize} + \vfill \null + \end{multicols} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Fun is really important} + \includegraphics[scale=0.2]{./images/boite.png} +\end{frame} + +\begin{frame} + \frametitle{How to cultivate your FOSS project?} + \begin{itemize} + \item Fun is important but the gift aspect is a strong community cement + \item Sharing common tools and objectives to create values + \item Create knowledge via open source projects as a medium + \item {\bf Reciprocity to support self-management of open source communities} + \item Diverse contributors and contribution ensure project stability + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Thank You} + \begin{itemize} + \item {\bf Markdown} format and all the open source rendering implementations + \item {\bf Inkscape} (to make cool logos for open source project) + \item {\bf git} (even if the handling of binary files is still hard) + \item {\bf BBB BigBlueButton} and {\bf Jitsi} (diversity is good when one fails) + \item {\bf Python} (for extracting large table of filtering tests only available in crappy PDF generated from an unpublished XLS file) + \item {\bf SciHub} (thanks Alexandra) as it was the only way to download the academic papers about the filtering of textile fabrics + \item {\bf All the people who did face masks} and didn't know they were part of the open source and maker community + \end{itemize} +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Where We Succeeded} + \begin{itemize} + \item The {\bf open source and maker communities resonated} during the crisis with a lot of initiatives + \item The past 20+ years of open source licensing did help a lot (less friction in exchange) + \item Git repositories supported the coordination effort on contributions and content publishing + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Where We Failed} + \begin{itemize} + \item Some open source tools are still {\bf too complex} to use compared of the sharing of a YouTube video + \item We are still bad at indexing, evaluating, coordinating and archiving projects (how many face mask designs on GitHub?) + \item Release early, release often. We failed there as early was a matter of days and not weeks + \item {\bf Opportunity for new open source projects} such as markdown notes taking and video screenshot at the same time + \end{itemize} +\end{frame} + +\appendix + \backupbegin + \begin{frame} + \frametitle{Bibliography} + \begin{enumerate} + \item Ivan Illich, Tools for Conviviality, 1973. {\tiny \url{https://co-munity.net/system/files/ILLICH\%201973\_tools\_for\_convivality\_1.pdf}} + \item Eric Steven Raymond, The Cathedral and the Bazaar, 1997. {\tiny \url{http://www.catb.org/~esr/writings/cathedral-bazaar/}} + \item Pekka Himanen, The Hacker Ethic, 2001. + \item Pieter Hintjens, Social Architecture - Building On-line Communities, 2016. {\tiny \url{http://www.foo.be/docs-free/social-architecture/book.pdf}} + \end{enumerate} + \end{frame} + \backupend + +\end{document} diff --git a/best-practices/slides/theme/beamerthemeExecushares.sty b/best-practices/slides/theme/beamerthemeExecushares.sty new file mode 100644 index 0000000..099e8d6 --- /dev/null +++ b/best-practices/slides/theme/beamerthemeExecushares.sty @@ -0,0 +1,216 @@ +% the various libraries we will be using +\usepackage{tikz} +\usetikzlibrary{calc} +\usepackage[none]{hyphenat} +\usepackage{fontspec} +\defaultfontfeatures{Ligatures=TeX} + +\newif\ifbeamer@pixelitem +\beamer@pixelitemtrue +\DeclareOptionBeamer{nopixelitem}{\beamer@pixelitemfalse} +\ProcessOptionsBeamer + +% define colours +% taken from pickton on Adobe Kuler: +% https://kuler.adobe.com/Some-Kind-Of-Execushares-color-theme-3837185/ +%\definecolor{ExecusharesRed}{RGB}{230,37,52} +\definecolor{ExecusharesBlack}{RGB}{43,40,40} +\definecolor{ExecusharesRed}{RGB}{43,40,40} % Red is the new blue +\definecolor{ExecusharesBlue}{RGB}{22,190,207} % Red is the new blue +\definecolor{ExecusharesWhite}{RGB}{255,255,243} +\definecolor{ExecusharesGrey}{RGB}{107,110,108} + +% use Adobe's Source Pro fonts: +% Source Serif Pro: https://github.com/adobe-fonts/source-serif-pro +% Source Sans Pro: https://github.com/adobe-fonts/source-sans-pro +% Source Code Pro: https://github.com/adobe-fonts/source-code-pro +\setmainfont{Source Serif Pro} +\setsansfont{Source Sans Pro} +\setmonofont{Source Code Pro} + +% To use with pdflatex, +% comment the fontspec package at the top +%\usepackage{sourceserifpro} +%\usepackage{sourcesanspro} +%\usepackage{sourcecodepro} + +% set colours +\setbeamercolor{itemize item}{fg=ExecusharesBlue} +\setbeamercolor{enumerate item}{fg=ExecusharesBlue} +\setbeamercolor{alerted text}{fg=ExecusharesBlue} +\setbeamercolor{section in toc}{fg=ExecusharesBlack} + +% set fonts +\setbeamerfont{itemize/enumerate body}{size=\large} +\setbeamerfont{itemize/enumerate subbody}{size=\normalsize} +\setbeamerfont{itemize/enumerate subsubbody}{size=\small} + +\ifbeamer@pixelitem +% make the itemize bullets pixelated > +\setbeamertemplate{itemize item}{ + \tikz{ + \draw[fill=ExecusharesBlue,draw=none] (0, 0) rectangle(0.1, 0.1); + \draw[fill=ExecusharesBlue,draw=none] (0.1, 0.1) rectangle(0.2, 0.2); + \draw[fill=ExecusharesBlue,draw=none] (0, 0.2) rectangle(0.1, 0.3); + } +} +% make the subitems also pixelated >, but a little smaller and red +\setbeamertemplate{itemize subitem}{ + \tikz{ + \draw[fill=ExecusharesRed,draw=none] (0, 0) rectangle(0.075, 0.075); + \draw[fill=ExecusharesRed,draw=none] (0.075, 0.075) rectangle(0.15, 0.15); + \draw[fill=ExecusharesRed,draw=none] (0, 0.15) rectangle(0.075, 0.225); + } +} +\fi + +% disable navigation +\setbeamertemplate{navigation symbols}{} + +% custom draw the title page above +\setbeamertemplate{title page}{} + +% again, manually draw the frame title above +\setbeamertemplate{frametitle}{} + +% disable "Figure:" in the captions +\setbeamertemplate{caption}{\tiny\insertcaption} +\setbeamertemplate{caption label separator}{} + +% since I don't know a better way to do this, these are all switches +% doing `\setcounter{showProgressBar}{0}` will turn the progress bar off (I turn it off for Appendix slides) +% etc +\newcounter{showProgressBar} +\setcounter{showProgressBar}{1} +\newcounter{showSlideNumbers} +\setcounter{showSlideNumbers}{1} +\newcounter{showSlideTotal} +\setcounter{showSlideTotal}{1} + +% Set beginning of backup slides +% This lets you having the slides counter ending with the "thank you" slide and avoiding the annoying question "why is the thank you at slide 38/41?" +\newcommand{\backupbegin}{ + \newcounter{finalframe} + \setcounter{finalframe}{\value{framenumber}} +} +\newcommand{\backupend}{ + \setcounter{framenumber}{\value{finalframe}} +} + +% use \makeatletter for our progress bar definitions +% progress bar idea from http://tex.stackexchange.com/a/59749/44221 +% slightly adapted for visual purposes here +\makeatletter +\newcount\progressbar@tmpcounta% auxiliary counter +\newcount\progressbar@tmpcountb% auxiliary counter +\newdimen\progressbar@pbwidth %progressbar width +\newdimen\progressbar@tmpdim % auxiliary dimension + +\newdimen\slidewidth % auxiliary dimension +\newdimen\slideheight % auxiliary dimension + +% make the progress bar go across the screen +%\progressbar@pbwidth=12.8cm +\progressbar@pbwidth=\the\paperwidth +\slidewidth=\the\paperwidth +\slideheight=\the\paperheight + +% use tikz to draw everything +% it may not be the best, but it's easy to work with +% and looks good +% TODO: base title slide and contents slide on something other than slide numbers :/ +\setbeamertemplate{background}{ + % deal with progress bar stuff + % (calculate where it should go) + \progressbar@tmpcounta=\insertframenumber + \progressbar@tmpcountb=\inserttotalframenumber + \progressbar@tmpdim=\progressbar@pbwidth + \divide\progressbar@tmpdim by 100 + \multiply\progressbar@tmpdim by \progressbar@tmpcounta + \divide\progressbar@tmpdim by \progressbar@tmpcountb + \multiply\progressbar@tmpdim by 100 + + \begin{tikzpicture} + % set up the entire slide as the canvas + \useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight); + + % the background + \fill[color=ExecusharesWhite] (0,0) rectangle(\the\paperwidth,\the\paperheight); + + % separate the drawing based on if we're the first (title) slide or not + \ifnum\thepage=1\relax + % the title page + % draw the fills + \fill[color=ExecusharesRed] (0, 4cm) rectangle(\slidewidth,\slideheight); + + % draw the actual text + \node[anchor=south,text width=\slidewidth-1cm,inner xsep=0.5cm] at (0.5\slidewidth,4cm) {\color{ExecusharesWhite}\Huge\textbf{\inserttitle}}; + \node[anchor=north east,text width=\slidewidth-1cm,align=right] at (\slidewidth-0.4cm,4cm) {\color{ExecusharesBlack}\tiny\insertsubtitle}; + \node[above] at(0.5\slidewidth,2.3cm) {\color{ExecusharesBlack}\tiny by}; + \node at (0.5\slidewidth,2cm) {\color{ExecusharesBlack}\normalsize\insertauthor}; + + % add the date in the corner + \node[anchor=south east] at(\slidewidth,0cm) {\color{ExecusharesGrey}\tiny\insertdate}; + \else + % NOT the title page + % title bar + \fill[color=ExecusharesRed] (0, \slideheight-1cm) rectangle(\slidewidth,\slideheight); + + % swap the comment on these to add section titles to slide titles + %\node[anchor=north,text width=11.8cm,inner xsep=0.5cm,inner ysep=0.25cm] at (6.4cm,9.6cm) {\color{ExecusharesWhite}\Large\textbf{\insertsectionhead: \insertframetitle}}; + \node[anchor=north,text width=\slidewidth-1cm,inner xsep=0.5cm,inner ysep=0.25cm] at (0.5\slidewidth,\slideheight) {\color{ExecusharesWhite}\huge\textbf{\insertframetitle}}; + + % if we're showing a progress bar, show it + % (I disable the progress bar and slide numbers for the "Appendix" slides) + \ifnum \value{showProgressBar}>0\relax% + % the the progress bar icon in the middle of the screen + \draw[fill=ExecusharesGrey,draw=none] (0cm,0cm) rectangle(\slidewidth,0.25cm); + \draw[fill=ExecusharesRed,draw=none] (0cm,0cm) rectangle(\progressbar@tmpdim,0.25cm); + + % bottom information + \node[anchor=south west] at(0cm,0.25cm) {\color{ExecusharesGrey}\tiny\vphantom{lp}\insertsection}; + % if slide numbers are active + \ifnum \value{showSlideNumbers}>0\relax% + % if slide totals are active + \ifnum \value{showSlideTotal}>0\relax% + % draw both slide number and slide total + \node[anchor=south east] at(\slidewidth,0.25cm) {\color{ExecusharesGrey}\tiny\insertframenumber/\inserttotalframenumber}; + \else + % slide totals aren't active, don't draw them + \node[anchor=south east] at(\slidewidth,0.25cm) {\color{ExecusharesGrey}\tiny\insertframenumber}; + \fi + \fi + % don't show the progress bar? + \else + % section title in the bottom left + \node[anchor=south west] at(0cm,0cm) {\color{ExecusharesGrey}\tiny\vphantom{lp}\insertsection}; + % if we're showing slide numbers + \ifnum \value{showSlideNumbers}>0\relax% + % if slide totals are active + \ifnum \value{showSlideTotal}>0\relax% + % draw both slide number and slide total + \node[anchor=south east] at(\slidewidth,0cm) {\color{ExecusharesGrey}\tiny\insertframenumber/\inserttotalframenumber}; + \else + % slide totals aren't active, don't draw them + \node[anchor=south east] at(\slidewidth,0cm) {\color{ExecusharesGrey}\tiny\insertframenumber}; + \fi + \fi + \fi + \fi + \end{tikzpicture} +} +\makeatother + +% add section titles +\AtBeginSection{\frame{\sectionpage}} +\setbeamertemplate{section page} +{ + \begin{tikzpicture} + % set up the entire slide as the canvas + \useasboundingbox (0,0) rectangle(\slidewidth,\slideheight); + %\fill[color=ExecusharesWhite] (0,0) rectangle(\the\paperwidth,\the\paperheight); + \fill[color=ExecusharesWhite] (-1cm, 2cm) rectangle (\slidewidth, \slideheight+0.1cm); + \fill[color=ExecusharesRed] (-1cm, 0.5\slideheight-1cm) rectangle(\slidewidth, 0.5\slideheight+1cm); + \node[text width=\the\paperwidth-1cm,align=center] at (0.4\slidewidth, 0.5\slideheight) {\color{ExecusharesWhite}\Huge\textbf{\insertsection}}; + \end{tikzpicture} +}