Software Livre: história e conceituação Jerônimo Cordoni Pellegrini (UFABC) Curso de Extensão Desenvolvimento de Software Livre projeto Proex 10/2015 Software Livre: história e conceituação Software Livre: história e conceituação Background Background Software Livre: história e conceituação Background Sistema Operacional e Aplicativos Software Livre: história e conceituação Background Sistema Operacional e Aplicativos – EXEMPLO Software Livre: história e conceituação Background Sistema Operacional e Aplicativos – EXEMPLO Software Livre: história e conceituação Linha (resumidı́ssima) do Tempo Linha (resumidı́ssima) do Tempo Software Livre: história e conceituação Linha (resumidı́ssima) do Tempo I 50, 60: software acadêmico era compartilhado I 1953: Univac A-2 (primeiro software livre?) I 70: empresas começam a fechar fontes I 1976: carta aberta aos hobistas (Bill Gates) I 1976: Emacs I 197x: Sistemas BSD Unix I 1978: TeX (Don Knuth) I 1983: Richard Stallman inicia projeto GNU I 1987: Perl (Larry Wall), GCC (GNU) I 1991: BSDs – SO livres completos (mas em litı́gio) Software Livre: história e conceituação Linha (resumidı́ssima) do Tempo I 1991: Linux Torvalds anuncia Linux I 1995: Apache, Ruby I 1996: KDE I 1997: GNOME I 1999: OpenOffice.org I 2002: MediaWiki Software Livre: história e conceituação Projeto GNU, FSF Projeto GNU, FSF Software Livre: história e conceituação Projeto GNU, FSF Projeto GNU I 1983: mensagem de Richard Stallman na Usenet I objetivo inicial: “escrever um sistema completo compatı́vel com Unix chamado GNU” I GNU = “Gnu is Not Unix” (GNU não é Unix) Software Livre: história e conceituação Projeto GNU, FSF Projeto GNU I 1983: mensagem de Richard Stallman na Usenet I objetivo inicial: “escrever um sistema completo compatı́vel com Unix chamado GNU” I GNU = “Gnu is Not Unix” (GNU não é Unix) I 1985: Free Software Foundation Software Livre: história e conceituação Projeto GNU, FSF Software Livre Definição de Software Livre (FSF): 0) executar, com qualquer propósito 1) estudar o programa e modificá-lo para adequar às suas necessidades 2) redistribuir o programa 3) distribuir cópias de sua versão modificada Software Livre: história e conceituação Projeto GNU, FSF Software Livre Definição de Software Livre (FSF): 0) executar, com qualquer propósito 1) estudar o programa e modificá-lo para adequar às suas necessidades 2) redistribuir o programa 3) distribuir cópias de sua versão modificada Liberdades 1 e 3 requerem acesso ao código fonte! Software Livre: história e conceituação Projeto GNU, FSF GNU/Linux I I projeto GNU adotou o núcleo Linux nome correto: “GNU/Linux” I I há “GNU/Hurd”, “GNU/kFreeBSD”, por exemplo SO + infra de gerenciamento de pacotes = distribuição GNU/Linux Software Livre: história e conceituação Projeto GNU, FSF Distribuições GNU/Linux (e outras) I Trisquel, Parabola, Ututo XS, ð livres! I Debian, Mint, Ubuntu I Fedora I Arch I Gentoo I Knoppix I TAILS I OpenWRT I Yellow Dog (para Mac) I Android (não GNU) I muitas outras. . . Software Livre: história e conceituação Recombinações Recombinações Software Livre: história e conceituação Recombinações Recombinações I trechos ou programas inteiros copiados I pedaços de um projeto usados em outro Software Livre: história e conceituação Recombinações Recombinações I trechos ou programas inteiros copiados I pedaços de um projeto usados em outro I recombinação! (à la Darwin!) Software Livre: história e conceituação Recombinações Recombinações I trechos ou programas inteiros copiados I pedaços de um projeto usados em outro I recombinação! (à la Darwin!) I fork: projeto inteiro duplicado Software Livre: história e conceituação Recombinações Recombinações I trechos ou programas inteiros copiados I pedaços de um projeto usados em outro I recombinação! (à la Darwin!) I fork: projeto inteiro duplicado I tudo isso é bom! (diversidade / criatividade) Software Livre: história e conceituação Recombinações Exemplo: OpenOffice.org / libreOffice / etc I 2001: StarOffice se torna livre I passa por inúmeros forks Software Livre: história e conceituação Recombinações Exemplo: distribuições GNU/Linux I inicialmente: I I I I I Debian Red Hat SLS – Slackware outros (O) hoje: centenas Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização do Trabalho em Projetos Livres Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Linux, Perl Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Linux, Perl I Empresa Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Linux, Perl I Empresa ZFS (Sun), Asterisk (Digium), XFS (SGI), Fedora (Red Hat) Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Linux, Perl I Empresa ZFS (Sun), Asterisk (Digium), XFS (SGI), Fedora (Red Hat) I I recebem contribuições da comunidade muitas vezes, comunidade determina rumos Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Linux, Perl I Empresa ZFS (Sun), Asterisk (Digium), XFS (SGI), Fedora (Red Hat) I I I recebem contribuições da comunidade muitas vezes, comunidade determina rumos Organização democrática Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Organização de projetos I Ditador benevolente Linux, Perl I Empresa ZFS (Sun), Asterisk (Digium), XFS (SGI), Fedora (Red Hat) I I I recebem contribuições da comunidade muitas vezes, comunidade determina rumos Organização democrática Debian Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Exemplo: Linux I lı́der: Linus Torvalds I cada parte do kernel tem um encarregado (“liutenant”) I encarregados organizam contribuições, repassam ao Linus I Linus é o único a tomar as decisões finais Software Livre: história e conceituação Organização do Trabalho em Projetos Livres Exemplo: Debian I projeto complexo, com subprojetos I contrato social, constituição, vários documentos e regras I organograma grande e complexo I lı́der eleito I resoluções gerais votadas I sistema de votação: Schulze (respeita critério de Condorcet) Software Livre: história e conceituação Participando Participando Software Livre: história e conceituação Participando Maneiras de Contribuir I escrevendo código Software Livre: história e conceituação Participando Maneiras de Contribuir I escrevendo código I engenharia reversa I reportando bugs, sugerindo melhorias I gerenciando empacotamento de software I documentando I criando arte (logos, ı́cones, templates, etc) I traduzindo I administrando sistemas I grupos de usuários, install fests I esclarecendo e convencendo I escolhendo seu hardware! I doando (dinheiro, hardware)