Initial commit.
This commit is contained in:
commit
e23bf69795
6 changed files with 326 additions and 0 deletions
17
Makefile
Normal file
17
Makefile
Normal 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
276
free-sw-rh-interns.tex
Normal 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
11
graphs/Makefile
Normal 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
6
graphs/package.dot
Normal 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
8
graphs/pull-request.dot
Normal 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
8
graphs/upstream.dot
Normal 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"];
|
||||
}
|
Loading…
Reference in a new issue