Processo de RFC
📢 Atualização: Foram criadas 16 RFCs em Draft cobrindo todos os aspectos do SDLC (Software Development Life Cycle). Todas aguardam discussão e aprovação nas reuniões quinzenais. Ver todas as RFCs →
Quando criar uma RFC
Uma RFC (Request for Comments) deve ser criada para:
- ✅ Mudanças arquiteturais significativas
- ✅ Adoção de novos serviços ou tecnologias
- ✅ Mudanças em processos do time
- ✅ Decisões que impactam múltiplos componentes ou times
- ✅ Padrões de código ou convenções importantes
- ✅ Mudanças em infraestrutura (novos serviços AWS, etc.)
- ✅ Alterações no modelo de dados / schema do banco
Não precisa de RFC:
- ❌ Bug fixes simples
- ❌ Refatorações locais que não afetam API
- ❌ Melhorias de performance pontuais
- ❌ Atualizações de dependências
Fluxo Completo de RFC
1. Criar RFC (Status: Draft)
# Copiar template
cp docs/rfc/template.md docs/rfc/decisions/XXX-titulo-da-proposta.md
# Editar e preencher
# - Contexto e problema
# - Proposta de solução
# - Alternativas consideradas
# - Análise de impacto
Dicas ao escrever:
- Seja claro e objetivo
- Explique o porquê, não apenas o como
- Documente todas as alternativas consideradas
- Seja honesto sobre trade-offs e riscos
- Use diagramas quando ajudar a explicar
2. Abrir Pull Request
git checkout -b rfc/XXX-titulo
git add docs/rfc/decisions/XXX-titulo-da-proposta.md
git commit -m "RFC-XXX: [Título da Proposta]"
git push origin rfc/XXX-titulo
No Pull Request:
- Adicionar label
rfc - Mencionar em qual reunião será apresentada
- Marcar revisores relevantes
- Adicionar link para a RFC na descrição
3. Status: Em Revisão
Antes da reunião:
- Time pode revisar o conteudo e anotar as dúvidas para que no momento da reunião sejam sanadas.
Objetivo: Chegar na reunião com a RFC já revisada e comentários principais já endereçados.
4. Reunião RFC (Quinzenal)
Calendário
- 🗓️ Reuniões toda 1ª e 3ª sexta-feira do mês
- ⏰ Horário: [Definir horário fixo, ex: 14h-16h]
- 📍 Local: Online
- ⏱️ Tempo por RFC: 20-30 minutos
Agenda da Reunião
1. Apresentação (10 min)
O autor apresenta:
- Contexto e problema a resolver
- Solução proposta
- Alternativas consideradas e por que foram descartadas
- Trade-offs da decisão
- Plano de implementação
2. Discussão Aberta (15 min)
Time participa:
- Perguntas e esclarecimentos
- Feedback técnico
- Preocupações e riscos não considerados
- Sugestões de melhorias
- Compartilhamento de experiências relevantes
3. Decisão (5 min)
Time decide:
- ✅ Aprovar: RFC está pronta para implementação
- ❌ Rejeitar: Decisão não será seguida (com justificativa)
- 🔄 Solicitar revisão: Precisa de ajustes antes de aprovar (volta para próxima reunião)
5. Pós-Reunião
Se Aprovada (✅)
- Atualizar RFC:
- Status → "Aprovada"
- Preencher seção "Decisão da Reunião"
-
Adicionar feedback e ações próximos passos
-
Merge do PR
-
Criar issues/tasks para implementação
- Referenciar a RFC nas issues
- Atribuir responsáveis
-
Definir prazos
-
Comunicar decisão ao time
- Enviar email se necessário
- Atualizar documentação relacionada
Se Rejeitada (❌)
- Atualizar RFC:
- Status → "Rejeitada"
- Documentar justificativa da rejeição
-
Explicar aprendizados
-
Fechar PR (sem merge)
-
Documentar aprendizados:
- O que não funcionaria?
- Que alternativas foram preferidas?
- Em que contexto esta decisão poderia ser revisitada?
Se Precisa Revisão (🔄)
-
Atualizar RFC com feedback recebido
-
Iterar na proposta:
- Endereçar preocupações levantadas
- Adicionar informações faltantes
-
Revisar alternativas
-
Agendar para próxima reunião
- Avisar no PR que foi atualizado
- Marcar para a próxima reunião quinzenal
6. Implementação (Para RFCs Aprovadas)
- Seguir plano de implementação da RFC
- Atualizar RFC se houver desvios significativos
- Referenciar RFC nos PRs de implementação (
Implements RFC-XXX) - Manter time informado sobre progresso
7. Revisão Pós-Implementação
Após 1-3 meses da implementação:
- Avaliar se funcionou conforme esperado
- Atualizar métricas de sucesso da RFC
- Coletar feedback do time
- Se não funcionou: marcar como "Deprecada" e criar nova RFC propondo alternativa
Níveis de RFC
Alto Impacto
Características:
- Mudanças arquiteturais
- Novas tecnologias/serviços
- Impacto em múltiplos times
- Alto custo de reversão
Requisitos:
- Apresentação completa: 30 minutos
- Aprovação de todo o time necessária
- Revisão detalhada antes da reunião
- Documentação extensiva de alternativas
Padrão
Características:
- Padrões de código
- Processos do time
- Ferramentas e bibliotecas
- Impacto localizado
Requisitos:
- Apresentação resumida: 20 minutos
- Aprovação de 2+ pessoas
- Revisão padrão
Informativa
Características:
- Documentação de decisões já tomadas
- Comunicação de mudanças emergenciais
- Compartilhamento de aprendizados
Requisitos:
- Apresentação: 10 minutos
- Não requer aprovação formal
- Para conhecimento do time
Preparação para Reunião RFC
Checklist para Autores (antes da reunião)
- RFC preenchida completamente
- Todas as seções do template respondidas
- Alternativas documentadas com prós/contras
- Análise de impacto realizada
- Diagramas criados se necessário
- Slides/material de apoio preparado (opcional)
- Todos os comentários do PR respondidos
- Link da RFC compartilhado
Checklist para Revisores (antes da reunião)
- RFC lida completamente
- Entendimento do problema claro
- Alternativas analisadas
- Comentários/perguntas adicionados no PR
- Riscos e preocupações identificados
- Feedback construtivo preparado
- Experiências relevantes para compartilhar
Ferramentas e Templates
Template de Agenda de Reunião
# Reunião RFC - [Data]
## RFCs para Discussão
### RFC-001: [Título]
- **Autor**: [Nome]
- **Nível**: Major
- **Tempo**: 30 min
- **Link PR**: [Link]
- **Status**: Em Revisão
### RFC-002: [Título]
- **Autor**: [Nome]
- **Nível**: Minor
- **Tempo**: 20 min
- **Link PR**: [Link]
- **Status**: Em Revisão
## Participantes
- [Nome 1] - [Papel]
- [Nome 2] - [Papel]
- [Nome 3] - [Papel]
## Notas da Reunião
[Preencher durante a reunião]
### RFC-001: [Título]
**Discussão:**
-
**Decisão:**
-
**Ações:**
- [ ]
### RFC-002: [Título]
**Discussão:**
-
**Decisão:**
-
**Ações:**
- [ ]
Mensagem para Avisar
🔔 **Reunião RFC - [Data] às [Horário]**
RFCs para discussão:
📋 **RFC-XXX: [Título]** - @autor (30 min - Major)
Link: https://github.com/.../pull/XXX
Contexto: [Breve descrição de 1 linha]
📋 **RFC-YYY: [Título]** - @autor (20 min - Minor)
Link: https://github.com/.../pull/YYY
Contexto: [Breve descrição de 1 linha]
📍 Local: [Link da reunião]
📎 Agenda completa: [Link]
Por favor, revisem as RFCs antes da reunião! 🙏
Dúvidas? Comentem nos PRs ou no thread.
Casos Especiais
RFC Urgente
Quando usar:
- Decisões críticas que não podem esperar a reunião quinzenal
- Incidentes que requerem mudança arquitetural
- Oportunidades com prazo apertado
Processo:
- Marcar RFC como "Urgente" no PR
- Agendar reunião extraordinária
- Notificar time com 24h de antecedência (mínimo)
- Explicar por que é urgente
- Seguir processo normal acelerado
RFC Simples (Fast Track)
Quando usar:
- Decisões pequenas mas que precisam de registro
- Mudanças com baixo risco e impacto limitado
- Consenso já existe informalmente
Processo:
- Criar RFC normalmente
- Marcar como "Fast Track" no PR
- Pode ser aprovada via comentários no PR sem reunião
- Requer aprovação de 3+ pessoas
- Aguardar 48h para objeções
- Se ninguém objetar, pode fazer merge
RFC Experimental
Quando usar:
- Testes de novas tecnologias
- Proof of Concepts
- Experimentos de curta duração
Processo:
- Marcar RFC como "Experimental"
- Definir critérios de sucesso claros
- Estabelecer prazo para avaliação (ex: 1 mês)
- Documentar aprendizados
- Criar RFC definitiva baseada nos resultados
Melhores Práticas
Para Autores
✅ Faça:
- Seja transparente sobre trade-offs
- Peça feedback cedo (antes da reunião)
- Use linguagem clara e objetiva
- Forneça contexto suficiente
- Considere múltiplas alternativas
- Documente riscos honestamente
❌ Evite:
- Ocultar problemas conhecidos
- Apresentar apenas uma opção
- Ser vago sobre impactos
- Ignorar feedback recebido
- Pressionar por aprovação rápida
- Ficar na defensiva
Para Revisores
✅ Faça:
- Leia a RFC completamente antes da reunião
- Faça perguntas construtivas
- Compartilhe experiências relevantes
- Sugira melhorias específicas
- Considere diferentes perspectivas
❌ Evite:
- Criticar sem sugerir alternativas
- Rejeitar sem justificativa
- Fazer perguntas que já estão respondidas na RFC
- Desviar do tópico principal
- Debates prolongados sobre detalhes de implementação
Para o Time
- Participe ativamente das discussões
- Respeite o tempo alocado
- Mantenha foco no problema e solução
- Construa em cima das ideias dos outros
- Documente decisões claramente
- Revise RFCs antigas periodicamente
FAQ
P: E se ninguém revisar minha RFC?
R: Mencione pessoas específicas no PR e peça revisão direta. Se necessário, leve o assunto para o daily/stand-up.
P: Posso mudar uma RFC depois de aprovada?
R: Sim, mas mudanças significativas requerem uma nova RFC ou amendment (emenda). Mudanças pequenas podem ser feitas via PR normal.
P: E se eu discordar da decisão?
R: Documente sua discordância no PR. Se é um ponto crítico, peça para revisitar na próxima reunião com mais dados.
P: Quanto detalhe é necessário?
R: O suficiente para que alguém novo no projeto entenda o problema e a solução. Varia com a complexidade da decisão.
P: Posso implementar antes da aprovação?
R: Você pode fazer POC/experimentos, mas não faça merge em dev ou main antes da aprovação formal.
Recursos Adicionais
- Template de RFC
- Todas as RFCs
- RFC-001: Processo de RFC com Reuniões Quinzenais
- RFC-002: Git Flow Simplificado com Rebase Obrigatório
RFCs por Categoria
Processo e Workflow (2 RFCs): RFC-001, RFC-002
Fundamentos de Qualidade (4 RFCs): RFC-003, RFC-004, RFC-005, RFC-006
Operações e Deployment (2 RFCs): RFC-007, RFC-008
Segurança e Gestão de Incidentes (3 RFCs): RFC-009, RFC-010, RFC-011
Arquitetura e API (4 RFCs): RFC-012, RFC-013, RFC-014, RFC-015
Performance (1 RFC): RFC-016