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