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

  1. A liberdade de executar o programa para qualquer finalidade.
  2. A liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades.
  3. A liberdade de redistribuir cópias para que você possa ajudar o seu próximo.
  4. 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

  1. Escolha um nome.
  2. Defina objetivos de longo prazo.
  3. Deixe claro que o projeto é livre.
  4. Liste os requisitos e funcionalidades.
  5. Disponibilize o programa para download em formato de código-fonte.
  6. Configure um sistema de controle de versão e um rastreador de bugs.
  7. Crie canais de comunicação (lista de e-mails, canal de IRC, etc.).
  8. Escolha a licença.
  9. 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.

Entradas relacionadas: