Initial commit.

This commit is contained in:
Sergio Durigan Junior 2019-05-08 23:03:27 -04:00
commit e23bf69795
6 changed files with 326 additions and 0 deletions

17
Makefile Normal file
View file

@ -0,0 +1,17 @@
PDF = free-sw-rh-interns.pdf
SUBDIRS = graphs
SHELL := /bin/bash -O extglob
all: $(SUBDIRS) $(PDF)
.PHONY : all clean $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ all
%.pdf: %.tex
pdflatex $<
clean:
$(RM) *.{aux,log,nav,out,pdf,snm,toc}

276
free-sw-rh-interns.tex Normal file
View file

@ -0,0 +1,276 @@
\documentclass{beamer}
\usepackage{ae,aecompl}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{url}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % for right arrow
\title{Free Software, upstream and downstream}
\author{Sergio Durigan Junior \\ \url{sergiodj@redhat.com}}
\date{\today}
\begin{document}
\begin{frame}
\titlepage
\begin{center}
\tiny{Get the source-code at:\\
\url{https://git.sergiodj.net/talks/free-sw-rh-interns.git/}}
\end{center}
\end{frame}
\section{License}
\begin{frame}{License}
\begin{itemize}
\item{License: \textbf{Creative Commons Attribution 4.0
International License (CC-BY-4.0)}}
\item{\url{https://creativecommons.org/licenses/by/4.0/}}
\end{itemize}
\end{frame}
\section{Agenda}
\begin{frame}{Agenda}
\begin{itemize}
\item{What is Free Software?}
\item{GNU and Linux}
\item{Upstream}
\item{Downstream}
\end{itemize}
\end{frame}
\section{What's Free Software?}
\begin{frame}{What's Free Software?}
\centering
Has anybody said \textbf{four freedoms}?
\newline
\pause
\begin{itemize}
\item{The freedom to run the program as you wish, for any
purpose (freedom \texttt{\#0}).}
\pause
\item{The freedom to study how the program works, and change it so
it does your computing as you wish (freedom \texttt{\#1}). Access
to the source code is a precondition for this.}
\pause
\item{The freedom to redistribute copies so you can help others
(freedom \texttt{\#2}).}
\pause
\item{The freedom to distribute copies of your modified versions
to others (freedom \texttt{\#3}). By doing this you can give the
whole community a chance to benefit from your changes. Access to
the source code is a precondition for this.}
\end{itemize}
\end{frame}
\begin{frame}{What's Free Software?$^2$}
\textbf{Free Software} means software that respects users' freedom
and community. The users have the \textbf{freedom to run, copy,
distribute, study, change and improve} the software.
\newline
\newline
When a program fails to give any of these freedoms to the user, we
say it is \textbf{non-free}.
\end{frame}
\section{The G from GNU}
\begin{frame}{The \texttt{G} from \texttt{GNU}}
\begin{itemize}
\item{Created by \textbf{Richard M. Stallman} on 27 September
1983.}
\item{Aims at creating a fully Free operating system.}
\item{Part of what we call the \textbf{GNU/Linux} operating
system (but most people prefer to call it just \textbf{Linux}).}
\pause
\item{\texttt{glibc, gcc, gdb, binutils (ld, gas...), bash,
coreutils (ls, cd, pwd, cat, sort, dd, df...), findutils,
diffutils, clisp, libreboot, patch, tar, gzip, inetutils (ftp,
telnet, rsh, tftp...), linux-libre, grep, sed, gettext,
MediaGoblin, GNU Social, GNU R, GLPK, GnuPG, GNOME*, GIMP,
grub, readline, Replicant, octave, screen, time, texinfo,
sysutils (chgroup, chpasswd, passwd, nologin...), emacs}, and
\textbf{many} more.}
\end{itemize}
\end{frame}
\begin{frame}{The \texttt{G} from \texttt{GNU}$^2$}
\centering
But of course, we are not in a contest. I choose to call the system
\textbf{GNU/Linux} not only because I think it is the right thing to
do, but mainly to \textbf{raise awareness}.
\end{frame}
\section{Linux(x|s)}
\begin{frame}{Linu(x|s)}
\begin{itemize}
\item{Created in 1991 by \textbf{Linus Torvalds}.}
\item{Has evolved to become perhaps the most successful example of
Free and Open Source software collaboration.}
\item{Unfortunately, is not entirely Free Software (binary blobs
are/were shipped with the kernel; reason for the
\textbf{Linux-libre} fork by the \texttt{GNU} project).}
\item{Personal opinion: main community tends to be toxic,
reflecting the behaviour of Linus himself.}
\end{itemize}
\end{frame}
\section{All that goes upstream...}
\begin{frame}{All that goes upstream...}
\centering
\textbf{Upstream} is the name we give to the actual Free Software
projects that develop the programs. For example, Linux,
LibreOffice, GIMP, GDB, GTK.
\newline
\begin{itemize}
\item{We also call them \textbf{upstream communities}.}
\pause
\item{In general, upstream projects have:}
\begin{itemize}
\item{\textbf{Mailing list}: Where users can post questions,
and developers can discuss technical matters.}
\item{\textbf{Bug tracking system}: \textbf{Bugzilla} is the
most common, but there are others.}
\item{\textbf{Source-code repository}: \textbf{git} is the
most used nowadays.}
\item{\textbf{IRC channel}: Where we communicate (mostly) in
real time (some teams are migrating to \textbf{Mattermost}
or \textbf{Slack} (non-free, argh)).}
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{All that goes upstream...$^2$}
\begin{itemize}
\item{Upstream projects have a \textbf{release schedule}.}
\pause
\item{As Red Hat employees, we are members of these communities.}
\pause
\item{The \textbf{same rules} apply to us.}
\pause
\item{Red Hat sponsors ($\neq$ owns) some upstream communities.}
\end{itemize}
\end{frame}
\begin{frame}{All that goes upstream...$^3$}
\centering
\includegraphics[width=0.5\textwidth]{graphs/upstream.png}
\end{frame}
\begin{frame}{All that goes upstream...$^4$}
\centering
The so-called \textbf{forges} are very popular nowadays.
\textbf{GitHub} and \textbf{GitLab} are widely used; they provide an
integrated bug tracking system, but don't provide a mailing list
equivalent.
\newline
\newline
\textbf{Pagure} deserves a special mention, as it is Fedora's
official forge.
\newline
\end{frame}
\begin{frame}{All that goes upstream...$^5$}
\centering
\includegraphics[width=0.5\textwidth]{graphs/pull-request.png}
\end{frame}
\section{... Must come downstream}
\begin{frame}{... Must come downstream}
\centering
\textbf{Downstream} is the name we give to the projects that
\emph{package} the upstream projects. For example, Fedora, RHEL,
Debian, Ubuntu. We also call them \textbf{distributions} (or
\textbf{distros}).
\begin{itemize}
\item{At Red Hat, we are interested in \textbf{Fedora} and
\textbf{RHEL} (\textbf{R}ed \textbf{H}at \textbf{E}nterprise
\textbf{L}inux).}
\pause
\item{A Fedora \textbf{package} is called a \textbf{RPM}
(\textbf{R}ed Hat \textbf{P}ackage \textbf{M}anager).}
\pause
\item{A RPM is generated from a \textbf{SRPM} (\textbf{S}ource
RPM).}
\pause
\item{A SRPM is composed by a (usually) \textbf{stable} upstream
release, \textbf{local patches} specific for the distro and a
\textbf{spec file} with instructions for build/test the
project.}
\end{itemize}
\end{frame}
\begin{frame}{... Must come downstream$^2$}
\centering
\includegraphics[width=0.3\textwidth]{graphs/package.png}
\end{frame}
\begin{frame}{... Must come downstream$^3$}
\begin{itemize}
\item{The upstream project \textbf{must} be Free Software.}
\pause
\item{Fedora also has its own release schedule (6 months).}
\pause
\item{RHEL is created from stable Fedora packages.}
\pause
\item{In a way, you can say that Fedora is RHEL's upstream.}
\pause
\item{RHEL is our \emph{bread and butter}. Bugs against it take
the highest priority.}
\end{itemize}
\end{frame}
\section{Tips and Tricks}
\begin{frame}{Tips and Tricks}
\begin{itemize}
\item{E-mail:}
\pause
\begin{itemize}
\item{Do not top-post.}
\item{No HTML! \texttt{text/plain}}
\item{Be polite.}
\item{Be precise; good subject line.}
\item{Reply-All instead of reply to list/author.}
\end{itemize}
\pause
\item{IRC:}
\pause
\begin{itemize}
\item{Use pastebin.}
\item{Sometimes it is async.}
\end{itemize}
\pause
\item{Patches:}
\pause
\begin{itemize}
\item{Split into logical parts.}
\item{Do not change formatting.}
\item{Learn how the community prefers to receive them (mailing
list, bugzilla, pull-request).}
\item{Criticism about your patch $\neq$ criticism about you (or
your family!).}
\end{itemize}
\end{itemize}
\end{frame}
\section{Questions?}
\begin{frame}{Questions?}
\begin{center}
Questions?
\end{center}
\begin{center}
\url{sergiodj@redhat.com}
\end{center}
\begin{center}
\texttt{sergiodj} on IRC
\end{center}
\end{frame}
\end{document}

11
graphs/Makefile Normal file
View file

@ -0,0 +1,11 @@
.PHONY : all clean
PNG_FILES = $(patsubst %.dot,%.png,$(wildcard *.dot))
all: $(PNG_FILES)
%.png: %.dot
dot -Tpng $< -o $@
clean:
rm -f *.png

6
graphs/package.dot Normal file
View file

@ -0,0 +1,6 @@
digraph package {
graph [ dpi = 300 ];
"Upstream Project" -> SRPM [label="Spec file\n Local patches"];
SRPM -> RPM [label=" Build and Test"];
RPM -> Binaries [label=" Install"];
}

8
graphs/pull-request.dot Normal file
View file

@ -0,0 +1,8 @@
digraph pr {
graph [ dpi = 300 ];
"Patch (git branch)" -> "Open pull-request" [label=" Via web, usually"];
"Open pull-request" -> "Review";
"Review" -> "Patch (git branch)" [label=" Adjustments needed?"];
"Review" -> "Incorporate into main repository" [label=" Accepted?"];
"Incorporate into main repository" -> "Ship to users" [label=" When release is stable"];
}

8
graphs/upstream.dot Normal file
View file

@ -0,0 +1,8 @@
digraph upstream {
graph [ dpi = 300 ];
"Patch" -> "Send to Project" [label=" Mailing List\n Bug Tracker\n Pull Request"];
"Send to Project" -> "Patch is reviewed";
"Patch is reviewed" -> "Patch" [label=" Adjustments needed?"];
"Patch is reviewed" -> "Push to official repository" [label=" Accepted?"];
"Push to official repository" -> "Ship to users" [label=" When release is stable"];
}