Contribuindo para o FreeBSD

scovl

Vitor Lobo

Posted on November 25, 2024

Contribuindo para o FreeBSD

Table of Contents

  1. Preparação Inicial
    1. Compreender o FreeBSD
    2. Entenda a Comunidade
    3. Configuração do Ambiente de Desenvolvimento
  2. Contribuindo pela Primeira Vez
    1. Documentação
      1. Revisão de Documentação
      2. Tradução
    2. Identifique Pequenos Problemas
      1. Busque PRs Simples
      2. Sugira Melhorias
    3. Trabalhe em Ports
      1. Atualize um Port
      2. Adote um Port Não Mantido
  3. Desenvolvimento e Contribuições Mais Complexas
    1. Trabalhe com o Código-Fonte
      1. Corrija Warnings e Melhore o Código
      2. Resolva Problemas Reportados
    2. Adicione Funcionalidades
      1. Melhorias no Sistema
      2. Integração com Padrões
  4. Engajamento e Colaboração
    1. Participe das Discussões
    2. Colabore em Projetos em Equipe
    3. Torne-se um Mantenedor Ativo
  5. Recursos de Suporte
  6. Extra

Este artigo dá uma abordagem detalhada para ajudar novos colaboradores a se envolverem com o #FreeBSD, mesmo que não tenham experiência prévia com Sistema Operacionais ou contribuições open-source. Ele cobre desde tarefas simples até contribuições mais avançadas, explorando diferentes áreas de contribuição no projeto FreeBSD.

Contribuir para o FreeBSD é uma excelente oportunidade para quem deseja mergulhar no mundo do desenvolvimento de sistemas operacionais e adquirir experiência prática com programação de baixo nível em C. O FreeBSD não é apenas um Sistema Operacional robusto e amplamente utilizado em ambientes de servidor, mas também está presente em diversos dispositivos e plataformas.

Por exemplo, ele serve como a base do Sistema Operacional usado nos consoles PlayStation 4 e PlayStation 5, além de estar presente em soluções de rede, firewalls, sistemas de armazenamento e até mesmo como uma plataforma de ensino para universidades ao redor do mundo. Ao trabalhar no FreeBSD, você:

  • Ganha experiência prática em áreas como gerenciamento de memória, sistemas de arquivos, redes e drivers de hardware.
  • Aprende conceitos de sistemas operacionais que são diretamente aplicáveis a outras áreas da tecnologia, incluindo sistemas embarcados e desenvolvimento de kernels.
  • Tem a oportunidade de colaborar com uma comunidade global de desenvolvedores, melhorando não apenas seu código, mas também suas habilidades de trabalho em equipe e comunicação técnica.

Para quem busca amadurecer suas habilidades em programação de baixo nível com C e deseja contribuir para um projeto que impacta tecnologias do dia a dia, o FreeBSD é uma escolha excepcional.

Preparação Inicial

Antes de contribuir, é essencial que você se familiarize com a estrutura, ferramentas e cultura do FreeBSD.

Compreender o FreeBSD

  • Leia a introdução e capítulos iniciais do FreeBSD Handbook para entender:
    • A arquitetura geral do sistema operacional.
    • Como instalar e configurar o FreeBSD.
    • Estruturas como kernel, userland e ports.
  • Experimente o FreeBSD:
    • Instale-o em uma máquina virtual usando ferramentas como VirtualBox ou QEMU.
    • Configure uma partição de teste em hardware físico se possível.

Entenda a Comunidade

  • Leia sobre a organização do FreeBSD no artigo Contributing to FreeBSD.
  • Participe das listas de e-mail relevantes:
    • freebsd-questions: para dúvidas gerais.
    • freebsd-hackers: para discussões técnicas.
    • freebsd-doc: para contribuições de documentação.
    • Você pode encontrar todas as listas de e-mail em FreeBSD Mailing Lists.
  • Junte-se ao IRC no canal #freebsd na rede Libera.Chat ou ao #bsdports para questões relacionadas a ports.

Configuração do Ambiente de Desenvolvimento

  • Instale ferramentas essenciais no FreeBSD ou em outro sistema Unix-like:
    • git: para acessar o repositório do FreeBSD.
    • vim ou emacs: editores para trabalhar no código.
    • clang ou gcc: compiladores para construir o sistema.
    • poudriere: para testar ports.
    • portlint: para verificar a conformidade de ports.
  • Clonar o repositório oficial:
  git clone https://git.FreeBSD.org/src.git
  cd src
Enter fullscreen mode Exit fullscreen mode

Contribuindo pela Primeira Vez

Esta etapa ajuda a realizar pequenas contribuições para que você ganhe confiança e se familiarize com o processo.

Comece com Documentação

Contribuir para a documentação é uma das maneiras mais fáceis de começar. Não é necessário conhecimento de programação.

  1. Revisão de Documentação

    • Leia o FAQ do FreeBSD e identifique:
      • Informações desatualizadas.
      • Explicações ambíguas ou erros de formatação.
    • Envie fixes em formato de texto ou AsciiDoc para a equipe de documentação.
  2. Tradução

    • Verifique o Translation FAQ para aprender como contribuir.
    • Escolha um documento curto, como as instruções de instalação, e traduza para seu idioma.
    • Use ferramentas como git para submeter suas mudanças para revisão.

Identifique Pequenos Problemas

  1. Busque PRs Simples

    • Acesse a Base de Dados de PRs.
    • Use filtros para encontrar problemas de baixa complexidade. Por exemplo:
      • Categoria: docs (documentação) ou ports.
      • Severidade: trivial ou minor.
    • Exemplos:
      • Erros de ortografia ou gramática em mensagens de erro.
      • Atualizações em páginas de manual.
  2. Sugira Melhorias

    • Participe das discussões no Bugzilla ou na lista de e-mails. Um exemplo seria:
      • Verificar se os patches enviados resolvem o problema.
      • Testar instruções ou comandos de reprodutibilidade.

Trabalhe em Ports

Os Ports são uma maneira acessível de contribuir tecnicamente ao FreeBSD.

  1. Atualize um Port

    • Encontre ports desatualizados no PortsFallout.
    • Verifique a versão mais recente do software upstream.
    • Atualize os arquivos do port:
      • Makefile: ajuste a versão.
      • distinfo: atualize os checksums.
      • Teste localmente:
       cd /usr/ports/category/portname
       make install clean
    
  • Submeta um PR com a atualização.
  1. Adote um Port Não Mantido
    • Identifique ports sem mantenedores (MAINTAINER=ports@FreeBSD.org).
    • Teste o port e envie um PR para se tornar o mantenedor.

Desenvolvimento e Contribuições Mais Complexas

Uma vez confortável com tarefas iniciais, você pode mergulhar em contribuições técnicas mais desafiadoras.

Trabalhe com o Código-Fonte

  1. Corrija Warnings e Melhore o Código

    • Compile o FreeBSD com warnings extras ativados:
     make buildworld CFLAGS="-Wall -Wextra"
    
  • Elimine warnings no código e envie patches via PR.
  1. Resolva Problemas Reportados
    • Escolha um PR relacionado ao código do kernel ou userland.
    • Reproduza o problema, identifique a causa e implemente uma correção.
    • Inclua um patch no PR com detalhes sobre como testá-lo.

Adicione Funcionalidades

  1. Melhorias no Sistema

    • Leia o FreeBSD Ideas Page.
    • Escolha um projeto de baixa complexidade, como:
      • Melhorar ferramentas do sistema.
      • Ajustar scripts de inicialização.
  2. Integração com Padrões

    • Compare o comportamento do FreeBSD com padrões como POSIX.
    • Envie PRs para corrigir inconsistências.

Engajamento e Colaboração

Contribuir para o FreeBSD vai além de escrever código. Construir uma reputação na comunidade é essencial.

Participe das Discussões

  • Compartilhe ideias e peça feedback em:
    • Listas de e-mail como freebsd-current e freebsd-stable.
    • Fóruns do FreeBSD.

Colabore em Projetos em Equipe

  • Trabalhe em conjunto com outros contribuidores em projetos do FreeBSD-CURRENT ou ports.

Torne-se um Mantenedor Ativo

  • Se você já adotou um port ou enviou patches, mantenha-se ativo:
    • Responda prontamente a bugs e relatórios de falhas.
    • Coordene mudanças com outros desenvolvedores.

Recursos de Suporte

  1. Ferramentas Essenciais

    • Use poudriere para testar ports:
     poudriere testport -j jailname -p ports-tree /usr/ports/category/portname
    
  • Valide mudanças no código com make check.
  1. Documentação Importante

  2. Comunidade

    • Junte-se ao canal #freebsd no IRC para dúvidas rápidas.
    • Participe de eventos da comunidade, como o FreeBSD DevSummit.

Extra

Embora o FreeBSD tenha um mirror oficial no GitHub (https://github.com/freebsd), ele não é o repositório principal do projeto. O FreeBSD utiliza o Bugzilla como a principal ferramenta para gerenciar problemas, patches e melhorias. Para colaborar de forma eficaz, você deve se familiarizar com o Bugzilla do FreeBSD. O Bugzilla está disponível em: https://bugs.freebsd.org/bugzilla/.

Utilize os filtros para encontrar problemas ou tarefas que se alinhem ao seu nível de habilidade:

  • Categoria: Escolha entre ports, docs, kern (kernel), entre outras.
  • Severidade: Selecione trivial ou minor para tarefas mais simples.
  • Status: Filtre por New ou Open para encontrar problemas não resolvidos.

Leia os detalhes de um problema para entender o contexto e as possíveis soluções propostas. Se você deseja contribuir com um patch ou comentário, registre-se no Bugzilla para acompanhar a discussão e adicionar suas sugestões.

Submeta Patches Diretamente no Bugzilla

  • Crie um patch usando o comando diff -u e envie-o como anexo na entrada relevante do Bugzilla.
  • Certifique-se de seguir as diretrizes de formatação e incluir um título descritivo, como [PATCH] Corrige erro em foo.c.

Este roadmap detalhado é uma jornada progressiva, começando com tarefas simples e escalando para contribuições técnicas avançadas. Siga as etapas no seu próprio ritmo, lembre-se de documentar suas experiências e, acima de tudo, aproveite o aprendizado e as conexões com a comunidade FreeBSD!

💖 💪 🙅 🚩
scovl
Vitor Lobo

Posted on November 25, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Contribuindo para o FreeBSD
freebsd Contribuindo para o FreeBSD

November 25, 2024

FreeBSD for Devs #03
freebsd FreeBSD for Devs #03

April 20, 2024

FreeBSD for Devs #02
freebsd FreeBSD for Devs #02

April 19, 2024