30-anos-gnu/30-anos-gnu.tex

438 lines
14 KiB
TeX

\documentclass{beamer}
\usepackage{ae,aecompl}
\usepackage[brazil]{babel}
\usepackage[T1]{fontenc}
\usepackage{url}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % for right arrow
\usetheme{Darmstadt}
\title{30 anos depois, e o que é esse tal GNU?}
\author{Sergio Durigan Junior \\ \url{sergiodj@sergiodj.net}}
\date{\today}
\newcommand{\gnu}{\texttt{GNU}}
\begin{document}
\begin{frame}
\titlepage
\begin{center}
\includegraphics[width=0.3\textwidth]{img/lp-br-sp-logo.png}
\end{center}
\end{frame}
\section{Licença}
\begin{frame}
\frametitle{Licença desta Apresentação}
\begin{itemize}
\item{Licença: \textbf{Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)}}
\item{\url{http://creativecommons.org/licenses/by-sa/3.0/}}
\end{itemize}
\end{frame}
\section{Tópicos}
\begin{frame}
\frametitle{Tópicos}
\begin{itemize}
% Explicar o que é SL
\item{Introdução, ou ``O que é Software Livre?''}
% História breve do UNIX, linguagem C
\item{Multics, UNIX, e a revolução do S.O.}
% Carta do Bill Gates aos hobbyistas
\item{De Bill Gates, para os hobbyistas, em 1976}
% Explicar como começou o projeto GNU. Filosofia
% UNIX, liberdade, sistema operacional completo, etc.
\item{O \texttt{G} do \gnu{}}
\item{O que é um S.O.?}
\item{O Kernel: várias dores, uma adoção}
\item{GLIBC: Início do território GNU}
\item{GCC: Compilando o mundo}
\item{GDB: O melhor amigo do desenvolvedor}
\item{Bash: O entendedor dos comandos}
\item{E não acabou! Tem GNU/mais!}
\item{O GNU/futuro...}
\item{... e os GNU/problemas}
\item{Conclusão}
\item{Agradecimentos}
\end{itemize}
\end{frame}
\section{Introdução, ou O que é Software Livre?}
\begin{frame}
\frametitle{Introdução, ou ``O que é Software Livre?''}
\centering
\textbf{Software Livre} é qualquer software que garanta ao usuário
a liberdade de usá-lo, distribuí-lo e modificá-lo, de forma a atender
todas as suas necessidades.
\end{frame}
\begin{frame}{Introdução, ou ``O que é Software Livre?''$^2$}
\centering
A definição formal de \textbf{Software Livre} foi proposta por Richard
M. Stallman e baseia-se em \textbf{4 liberdades}, consideradas
fundamentais (\textit{GNU Manifesto}):
\newline
\begin{itemize}
\item{\textbf{Liberdade 0}: A liberdade de executar o programa
para qualquer propósito.}
\item{\textbf{Liberdade 1}: A liberdade de estudar como o
programa funciona e alterá-lo para fazê-lo funcionar
como desejar.}
\item{\textbf{Liberdade 2}: A liberdade de redistribuir cópias
do programa.}
\item{\textbf{Liberdade 3}: A liberdade de melhorar o programa
e redistribuir a melhoria para toda a comunidade.}
\end{itemize}
\end{frame}
\begin{frame}{Introdução, ou ``O que é Software Livre?''$^3$}
\begin{itemize}
\item{\textbf{Não confunda Software Livre com Open Source}!!}
\pause
\item{\textbf{Software Livre} é um movimento técnico, social,
filosófico e político. Incentiva uma cultura de
\textbf{respeito} à liberdade de todos, e não aceita
imposições e restrições ditadas por empresas,
entidades ou pessoas com objetivos excusos.
\textbf{Sua liberdade não lhe dá permissão para tirar a
liberdade do outro}.}
\pause
\item{\textbf{Open Source} é uma metodologia de
desenvolvimento de software. Incentiva a
\textit{abertura do código-fonte} de programas,
mas não toma partido em questões cruciais como
privacidade, neutralidade na rede, ou abusos
contra a liberdade de usuários de software cometidos
por empresas em nome de uma suposta ``conveniência''.}
\end{itemize}
\end{frame}
\section{Multics, UNIX, e a revolução do S.O.}
\begin{frame}{Multics, UNIX, e a revolução do S.O.}
\begin{itemize}
\item{Ken Thompson, Dennis Ritchie, em 1969.}
\item{K.I.S.S.}
\item{Software gratuito, acadêmico, código-fonte
disponível nos primórdios.}
\item{\textit{To C, or not to C?}}
\end{itemize}
\end{frame}
\section{De Bill Gates, para os hobbyistas, em 1976}
\begin{frame}{De Bill Gates, para os hobbyistas, em 1976}
\begin{center}
\includegraphics[width=0.55\textwidth]{img/Bill_Gates_Letter_to_Hobbyists.pdf}
\end{center}
\end{frame}
\section{O G do GNU}
\begin{frame}{O \texttt{G} do \gnu{}}
\begin{itemize}
\item{Projeto criado por Richard M. Stallman em 27 de
Setembro de 1983.}
\item{Objetivo: um Sistema Operacional completamente
livre.}
\item{Ainda estamos na luta :-).}
\item{Compõe a maior parte do S.O. \textbf{GNU/Linux}.}
\end{itemize}
\end{frame}
\section{O que é um S.O.?}
\begin{frame}{O que é um S.O.?}
\begin{itemize}
\item{Pense num Lego :-)}
\item{\textbf{Kernel}: Comunica-se com os
periféricos/\textit{hardwares}, provendo
acesso a recursos a partir do \textit{espaço
de usuário}.}
\item{\textbf{Biblioteca C}: Abstrai o acesso ao
\textbf{kernel}, oferecendo funções mais
complexas para lidar com problemas.}
\item{\textbf{Toolchain}: Conjunto formado por um
\textbf{compilador}, \textbf{linker/loader},
\textbf{montador}, \textbf{depurador}, e, por vezes,
algumas outras ferramentas.}
\item{\textbf{Interpretador de comandos}: É o programa
que realiza a interface entre o usuário e o S.O.}
\end{itemize}
\begin{center}
Em cima do S.O., temos os aplicativos que utilizamos para
nossas tarefas, como um navegador, editor de textos,
processador de textos, jogos, etc.
\end{center}
\end{frame}
\section{O Kernel: várias dores, uma adoção}
\begin{frame}{O Kernel: várias dores, uma adoção}
\includegraphics[width=0.2\textwidth]{img/hurd_sm_mf.jpg}
\begin{itemize}
\item{\textbf{GNU Hurd}: 1990, microkernel, poucos
desenvolvedores, um tanto desacreditado.}
\item{Sistema \textit{bootável}, suporta apenas
\texttt{i386}.}
\item{Desenvolvimento ainda ativo, apesar de lento.}
\end{itemize}
\end{frame}
\begin{frame}{O Kernel: várias dores, uma adoção$^2$}
\includegraphics[width=0.1\textwidth]{img/Tux.jpg}
\begin{itemize}
\item{\textbf{Linux}: 1991, kernel monolítico,
pragmatismo e uma pitada de desrespeito.}
\item{\emph{Sadly, a kernel by itself gets you
nowhere. To get a working system you need a shell,
compilers, a library etc. These are separate parts
and may be under a stricter (or even looser)
copyright. Most of the tools used with linux are
GNU software and are under the GNU copyleft.}}
\item{Situação atual: \textit{blobs} binários,
desenvolvimento acelerado, \textit{open
source}, péssimo exemplo de liberdade.}
\item{\textbf{Linux-libre!!!!}}
\end{itemize}
\end{frame}
\section{GLIBC: Início do território GNU}
\begin{frame}{GLIBC: Início do território GNU}
\begin{itemize}
\item{Roland McGrath, final da década de 1980,
\texttt{GNU LGPL}.}
\item{Ulrich Drepper mandava desde 2001. Vários
\textit{forks}, xingamentos, também com uma pitada
de desrespeito.}
\item{Em março de 2012, o processo de desenvolvimento
foi todo reformulado. Comunidade em primeiro
lugar.}
\item{Portabilidade extrema.}
\end{itemize}
\end{frame}
\section{GCC: Compilando o mundo}
\begin{frame}{GCC: Compilando o mundo}
\includegraphics[width=0.2\textwidth]{img/gccegg-65.png}
\begin{itemize}
\item{\textbf{G}NU \textbf{C}ompiler
\textbf{C}ollection.}
\item{Andrew S. Tanenbaum, Amsterdam Compiler Kit,
não-livre. Richard Stallman, 1986-7.}
\item{\textbf{EGCS} fork, várias otimizações, até que
FSF decide usá-lo como o ``próximo'' GCC.}
\item{Front-ends, plugins (em Python!), melhorias em
informação de depuração (com otimização -- Alexandre
Oliva), código legado, competição com LLVM...}
\end{itemize}
\end{frame}
\section{GDB: O melhor amigo do desenvolvedor}
\begin{frame}{GDB: O melhor amigo do desenvolvedor}
\includegraphics[width=0.3\textwidth]{img/archer.jpg}
\begin{itemize}
\item{Richard Stallman, em 1986. ``Pra começar a
escrever o sistema, preciso de um depurador e de um
editor de texto.''}
\item{\textit{Steering Committee}, mantenedores,
comunidade pequena, código legado...}
\item{Suporte a várias linguagens além de C/C++.
Pouca competição com LLDB. Extensões em Python.
Grandes refatorações de código!}
\end{itemize}
\end{frame}
\section{Bash: O entendedor dos comandos}
\begin{frame}{Bash: O entendedor dos comandos}
\includegraphics[width=0.3\textwidth]{img/bash-org.jpg}
\begin{itemize}
\item{Brian Fox, em 1988. Brian foi contratado pela
FSF para o trabalho, tamanha a importância de um
shell livre!}
\item{Grande maioria dos usuários de linha de comando
utilizam o Bash.}
\item{Scriptagem no seu mais alto nível. Muitas vezes
seu programa GUI está usando Bash por baixo :-).}
\end{itemize}
\end{frame}
\section{E não acabou! Tem GNU/mais!}
\begin{frame}{E não acabou! Tem GNU/mais!}
\begin{itemize}
\item{Montador (\textit{assembler}), \textit{linker},
\textit{loader}... Tudo isso é GNU.}
\pause
\item{Quer ambiente gráfico? Tem o \textbf{GNOME}.}
\pause
\item{Quer editor de texto? Tem o \textbf{GNU
Emacs}.}
\pause
\item{Quer editor de imagem? Tem o \textbf{GIMP}.}
\pause
\item{Biblioteca de interação com o usuário pra linha
de comando? Sem problema! Tem a
\textbf{GNU readline}.}
\pause
\item{Alternativa pro Android? \textbf{GNU
Replicant}.}
\pause
\item{Alternativa pro Flash? \textbf{Gnash}.}
\pause
\item{Quer se libertar do Matlab? \textbf{GNU
Octave}.}
\pause
\item{Sua BIOS não é livre, sabia??? Mas o
\textbf{GNU coreboot} é!}
\end{itemize}
\end{frame}
\begin{frame}{E não acabou! Tem GNU/mais!$^2$}
\begin{itemize}
\item{Curte Lisp? Common Lisp? \textbf{GNU clisp}!}
\pause
\item{Curte linha de comando? Já usou \texttt{ls},
\texttt{cd}, \texttt{cat}, \texttt{sort},
\texttt{dd}, \texttt{df}... ? Todos parte do
\textbf{GNU coreutils}!}
\pause
\item{Dual boot? \textbf{GNU GRUB}.}
\pause
\item{É desenvolvedor? Aplica \textit{patches}?
\textbf{GNU patch}.}
\pause
\item{Vai descompactar um arquivo? \textbf{GNU tar}.}
\pause
\item{Procurar uma palavra em algum texto?
\textbf{GNU grep}.}
\pause
\item{... ou talvez \textbf{GNU sed}.}
\pause
\item{Seu programa está traduzido? Provavelmente
culpa do \textbf{GNU gettext}.}
\end{itemize}
\end{frame}
\begin{frame}{E não acabou! Tem GNU/mais!$^3$}
\begin{itemize}
\item{Alternativa pro YouTube? \textbf{GNU
Mediagoblin}.}
\pause
\item{E pro Twitter? \textbf{GNU Social}.}
\pause
\item{Computação estatística? \textbf{GNU R}.}
\pause
\item{Programação Linear? \textbf{GNU GLPK}.}
\pause
\item{Criptografia? \textbf{GnuPG}.}
\item{...}
\end{itemize}
\end{frame}
\section{O GNU/futuro...}
\begin{frame}{O GNU/futuro}
\begin{itemize}
\item{Opinião pessoal :-).}
\item{Foco em celulares e dispositivos móveis.
\textbf{GNU Replicant}. \textbf{F-Droid} e
alternativas. Quem sabe um GNU para o celular?
:-)}
\item{Mais foco em ``sociais'': \textbf{GNU Social}.
Federação, descentralização. \textbf{Gnunet}.}
\end{itemize}
\end{frame}
\section{... e os GNU/problemas}
\begin{frame}{... e os GNU/problemas}
\begin{itemize}
\item{Stallman insiste em ser o ``Chief GNUisance''
(título apropriado). Decisões arbitrárias e
polêmicas. Alguns projetos conseguiram se
desvencilhar disso.}
\begin{itemize}
\item{Desistência de alguns desenvolvedores
importantes.}
\end{itemize}
\item{Pouco reconhecimento por parte da comunidade
\textrightarrow{} pouco conhecimento a respeito da
liberdade.}
\item{O projeto GNU e a FSF fecham os olhos pra
questões importantíssimas, como hardware livre e, em
certo grau, questões de privacidade e neutralidade
de rede.}
\item{Excesso de ``orgulho'' por seus próprios
softwares (até que ponto é um problema?).}
\end{itemize}
\end{frame}
\section{Conclusão}
\begin{frame}{Conclusão}
\begin{itemize}
\item{Você usa \textbf{GNU/Linux}. Ou deveria usar :-).}
\item{O projeto GNU é muito maior do que a maioria das
pessoas pensa.}
\item{Existem problemas no projeto, mas também existem
soluções, e a GNU/esperança ainda vive.}
\item{A liberdade é algo pelo qual vale a pena lutar
:-). (desculpem a pieguice!)}
\end{itemize}
\end{frame}
\section{Agradecimentos}
\begin{frame}{Agradecimentos}
\begin{itemize}
\item{Ao pessoal da \textbf{SECCOMP}, especialmente ao
Marcel!}
\item{Ao pessoal do \textbf{LibrePlanet São Paulo},
por manter vivo um ideal.}
\item{A vocês, pela audiência e paciência.}
\item{E ao \textbf{projeto GNU}, pelos 30 anos de luta!}
\end{itemize}
\end{frame}
\begin{frame}{Dúvidas?}
\begin{center}\textbf{Dúvidas?}\end{center}
\end{frame}
\begin{frame}{Momento denúncia}
\begin{center}\alert{\textbf{A FSF USA TWITTER!}}\end{center}
\end{frame}
\end{document}