2. Padronização
• Enforce no build!
• CONTRIBUTING.md
• make fmt pra rodar local
• .editorconfig
13
Slide 14
Slide 14 text
Mas... padronizar essas coisas muda o que?
14
Slide 15
Slide 15 text
Mas... como decidir as regras de formatação?
15
Slide 16
Slide 16 text
16
Slide 17
Slide 17 text
3. Evitando problemas
evitáveis
• "esqueci do .Close()"
• "putz eu já tinha arrumado esse bug"
• "ih mano esqueci de tratar o erro que
retorna na função ali"
• "nao sei pq meu script não funciona
direito no linux"
• "ah tem que atualizar a batatalib pra
v2.5.6"
17
Slide 18
Slide 18 text
3. Evitando problemas evitáveis
• escreva testes!!!!!!!!!!
• meça a cobertura e reporte no pull request
• coveralls
• codecov
• evite mergear coisas que pioram a cobertura de testes
18
3. Evitando problemas evitáveis
Mantendo deps up to date:
• Renovate
• Dependabot
• Security Alerts
20
Slide 21
Slide 21 text
21
Slide 22
Slide 22 text
4. Lidando com breaking
changes
• "ué, ontem isso aqui funcionava
!
"
22
Slide 23
Slide 23 text
4. Lidando com breaking changes
"Rule #1 of OpenSource: No is temporary, yes is forever."
— Solomon Hykes
23
Slide 24
Slide 24 text
24
Slide 25
Slide 25 text
4. Lidando com breaking changes
Como um mantenedor, antes de mergear algo:
• Eu tenho 100% de certeza que X faz sentido?
• Eu tenho 100% de certeza que esse é o melhor jeito de fazer X?
25
Slide 26
Slide 26 text
4. Lidando com breaking changes
Como um contribuidor, querendo contribuir com algo:
• Abrir uma issue pra discutir a feature antes de implementar
• Não levar para o lado pessoal
• Se tudo der errado, mantenho meu fork
26
Slide 27
Slide 27 text
4. Lidando com breaking changes
Mas... e se acontecer?
• https://goreleaser.com/deprecations
• 6 meses de deprecated warning
•
!"
27
Slide 28
Slide 28 text
28
Slide 29
Slide 29 text
29
Slide 30
Slide 30 text
30
Slide 31
Slide 31 text
5. Mantendo a casa limpa
• "quantas dessas 425234242 issues ainda fazem sentido?"
• "bah, tem 32423 branches, tenho que fazer uma limpa nisso"
31
Slide 32
Slide 32 text
5. Mantendo a casa limpa
• Stale bot pra fechar issues/prs abandonados
• Bots pra "auto-lock" issues
• "Automatically delete head branches"
32
Slide 33
Slide 33 text
33
Slide 34
Slide 34 text
Conclusão
34
Slide 35
Slide 35 text
Conclusão
• Simplicidade nos labels
• Issue/PR templates
• Definir padrões o mais cedo possivel, documentar e enforçar no
build ou com bots
• Escrever testes e medir cobertura
• Não se sentir obrigado a dizer sim
• Não ter medo de fechar issue parada
35