283 lines
8.8 KiB
TeX
283 lines
8.8 KiB
TeX
\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{enumerate}
|
|
\setcounter{enumi}{-1}
|
|
\item{The freedom to run the program as you wish, for any
|
|
purpose.}
|
|
\pause
|
|
\item{The freedom to study how the program works, and change it so
|
|
it does your computing as you wish. Access to the source code is
|
|
a precondition for this.}
|
|
\pause
|
|
\item{The freedom to redistribute copies so you can help others.}
|
|
\pause
|
|
\item{The freedom to distribute copies of your modified versions
|
|
to others. 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{enumerate}
|
|
\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}
|
|
|
|
\begin{frame}{What's Free Software?$^3$}
|
|
The \textbf{copyleft} concept was the smartest hack that Stallman
|
|
has created. It exploits how the copyright works, and turns it back
|
|
against itself.
|
|
\newline
|
|
\newline
|
|
The \textbf{GNU General Public License}, or \textbf{GPL}, is the
|
|
tool with which we guarantee that the software freedom will
|
|
be respected by everyone.
|
|
\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$}
|
|
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...}
|
|
\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$}
|
|
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}
|
|
\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}
|