Software Livre e Open Source: Guia Essencial
Classificado em Computação
Escrito em em português com um tamanho de 6,26 KB
Software Livre
As 4 Liberdades Essenciais
- A liberdade de executar o programa para qualquer finalidade.
- A liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades.
- A liberdade de redistribuir cópias para que você possa ajudar o seu próximo.
- A liberdade de distribuir cópias de suas versões modificadas a outros, dando à comunidade a chance de se beneficiar de suas mudanças.
Observação: O acesso ao código-fonte é uma pré-condição para as liberdades 2 e 4.
Definições e Conceitos
- Legalmente: É um software distribuído sob uma licença que respeita as quatro liberdades essenciais.
- Padrão de Projeto: Projetos de software não são livres por padrão.
- Copyright: Utiliza as regras de copyright para garantir as liberdades, em vez de restringi-las. Um programa ser livre não implica que suas cópias derivadas também o sejam.
- Copyleft: Uma cláusula que exige que trabalhos derivados sejam distribuídos com a mesma licença original ou uma equivalente.
- Copyleft Fraco: Não exige que todos os trabalhos derivados usem a mesma licença, especialmente aqueles que usam o trabalho original sem modificá-lo (ex: LGPL, Mozilla Public License).
Open Source
Foco e Metodologia
- O foco do Open Source não é ideológico, mas sim em vantagens práticas para atrair grandes corporações.
- É uma metodologia de desenvolvimento para produzir software de alta qualidade, com compartilhamento de custos, em uma economia de dádiva (a abertura do código-fonte é uma pré-condição).
Práticas de Desenvolvimento
- Desenvolvimento distribuído.
- Depuração em massa (mass debugging).
- Software disponibilizado cedo e com frequência.
- Meritocracia.
- Ausência de hierarquia rígida ou coerção.
Critérios da Licença
- Redistribuição livre.
- Código-fonte incluído ou acessível.
- Trabalhos derivados são permitidos.
- Integridade do código-fonte do autor, com restrições controladas a modificações (via patches).
- Sem discriminação contra pessoas ou grupos.
- Sem discriminação contra áreas de atuação ou empreendimentos.
- A licença não pode ser específica de um produto ou distribuição e não deve restringir outros programas.
Diferenças e Semelhanças com Software Livre
- Para o Software Livre, a democracia é um direito moral.
- Para o Open Source, a democracia é o sistema mais eficiente conhecido.
- Na prática, os métodos de desenvolvimento são indistinguíveis.
- Todo programa de Software Livre é Open Source, mas o contrário não é verdadeiro (exemplo: projetos da NASA).
História e Figuras Importantes
- Richard Stallman: Fundador da Free Software Foundation (FSF).
- Eric Raymond e Bruce Perens: Co-fundadores da Open Source Initiative.
- Ken Thompson e Dennis Ritchie: Criadores do Unix.
- Guido van Rossum: Criador do Python.
- Linus B. Torvalds: Criador do kernel Linux.
"Dados olhos suficientes, todos os erros são triviais."
- Linus B. Torvalds
Práticas e Tabus da Comunidade
- A comunicação é de muitos para muitos.
- É fundamental ouvir o feedback dos usuários.
- O usuário não precisa ser desenvolvedor, mas deve pensar como um.
- Quem você é não importa, mas sim o que (e como) você faz pelo projeto. Quem contribui mais e melhor torna-se um committer.
- A reputação é fundamental.
- Um fork é um projeto de FLOSS iniciado como uma cópia exata de outro, que evolui separadamente e com um novo nome.
- Toda licença FLOSS permite a criação de forks, mas eles devem ser evitados, pois:
- Dividem a base de usuários.
- Dividem a base de desenvolvedores.
- Podem prejudicar a reputação (dos desenvolvedores e do projeto).
Ferramentas e Checklist para Projetos
Áreas Essenciais
- Comunicação
- Gestão do Conhecimento
- Programação, Testes e Depuração
- Controle sobre os artefatos produzidos
Checklist para Iniciar um Projeto
- Escolha um nome.
- Defina objetivos de longo prazo.
- Deixe claro que o projeto é livre.
- Liste os requisitos e funcionalidades.
- Disponibilize o programa para download em formato de código-fonte.
- Configure um sistema de controle de versão e um rastreador de bugs.
- Crie canais de comunicação (lista de e-mails, canal de IRC, etc.).
- Escolha a licença.
- Anuncie o projeto!
Exemplos de Projetos e Contribuições
Battle for Wesnoth
- Tipo de Contribuição: Tradução de 835 strings e correção de 113 (duas campanhas completas: The Sceptre of Fire e Son of The Black-Eye).
- Equipe: André Pimentel (afarp), Diogo Medeiros (dtmm), Romero Gonçalves (rtg).
- Observações: Tradução submetida em 17/04 e aceita em 22/04. Já disponível na última versão.
SharpDevelop
- Tipo de Contribuição: Submissão de sugestão de correção para 3 bugs, detalhamento de 1, indicação da causa de 1, reporte de 2 novos bugs e um workaround como solução temporária para outro.
- Detalhes das Contribuições:
- Proposta de solução para um bug na leitura de um arquivo .edmx.
- Análise do bug do gradiente.
- Análise do bug do projeto de inicialização (startup project - NullReferenceException).
- Análise do bug ao renomear itens com nomes longos (a tela pisca).
- Equipe: André Pimentel (afarp), Romero Gonçalves (rtg).
- Observações: Aguardando resposta sobre a aceitação das soluções.