Blame 30-anos-gnu.tex

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