\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}