Este guia te ajudará a contribuir com o projeto `FAD`, que consiste na tradução e formalização em Lean dos algoritmos apresentados no livro Algorithm Design with Haskell.
Antes de começar a codificar, crie uma Issue descrevendo sua proposta:
- Tipos de contribuição:
- Implementação de estrutura de dados ou algoritmo
- Prova de propriedades
- Correção de bugs (uso de `sorry`, falhas etc.)
- Refatorações ou melhorias
- Como criar:
- Vá em Issues no GitHub
- Clique em New Issue
- Dê um título claro e descritivo
- No corpo, detalhe:
- Qual seção/capítulo do livro será abordada
- O que será implementado, formalizado ou corrigido
- No caso de bug, como reproduzir
Espere pelo feedback antes de iniciar o desenvolvimento.
No terminal:
git clone https://github.com/emap-taa-20251/fad.git
cd fadVocê não precisa clonar o repositório mais de uma vez para cada contribuição, depois de clonado você poderá repetir os passos abaixo para cada contribuição.
Atualize sua cópia da branch principal e crie uma nova branch para sua contribuição:
git checkout main
git pull origin main
git checkout -b issue-XX # substitua XX pelo número da sua issueAdicione arquivos modificados e faça commits com mensagens claras:
git add path/to/seu_arquivo.lean
git commit -m "issue-XX: descrição clara da alteração"Dica: Commits pequenos são mais fáceis de revisar.
git push origin issue-XXNo GitHub:
- Clique em Compare & pull request ou crie um novo PR manualmente
- Configure:
- Base:
main - Compare:
issue-XX
- Base:
- No corpo do PR:
- Descreva as alterações
- Use
Closes #XXpara referenciar a issue - Explique detalhes relevantes
- Seu PR será revisado com comentários e sugestões.
- Faça novos commits e
git pushna mesma branch para atualizá-lo. - Após aprovação, ele será mesclado à
main.
- Comece sempre por uma Issue
- Use títulos e descrições claras
- Mantenha os commits pequenos e temáticos
- Mantenha sua branch atualizada com a
main:
git checkout main
git pull origin main
git checkout NOME_DA_BRANCH
git merge main # recupera para a branch atual atualizações da mainUse mensagens de commit claras, concisas e no imperativo. Siga a convenção abaixo:
<tipo>(escopo opcional): descrição breve no imperativo Corpo opcional explicando o que e por quê da mudança. Rodapé opcional: referências a issues, breaking changes etc.
feat(lista): adiciona implementação de listas encadeadas Implementação baseada na seção 2.3 do livro. Inclui função de inserção ordenada. Closes #42
feat- nova funcionalidade
fix- correção de bug
docs- alterações na documentação
style- mudanças de formatação (semântica inalterada)
refactor- refatorações sem mudar o comportamento
test- testes adicionados ou modificados
chore- tarefas administrativas (CI, configs)
- Use o imperativo: “adiciona suporte”, e não “adicionando”
- Mantenha a primeira linha com até 50 caracteres
- Separe o corpo com uma linha em branco
- Foque no porquê, além do o quê
Caso tenha dúvidas, procure o monitor ou professor. Boa contribuição!