Diretrizes de Relatório de Problemas
Relatórios de bugs e requisições de recursos efetivos são cruciais para o desenvolvimento de XOOPS. Este guia ajuda você a criar problemas de alta qualidade.
Antes de Relatar
Seção intitulada “Antes de Relatar”Verificar Problemas Existentes
Seção intitulada “Verificar Problemas Existentes”Sempre procure primeiro:
- Vá para GitHub Issues
- Procure por palavras-chave relacionadas ao seu problema
- Verifique problemas fechados - podem já estar resolvidos
- Procure por pull requests - podem estar em andamento
Use filtros de pesquisa:
is:issue is:open label:bug- Bugs abertosis:issue is:open label:feature- Requisições de recursos abertosis:issue sort:updated- Problemas atualizados recentemente
É Realmente um Problema?
Seção intitulada “É Realmente um Problema?”Considere primeiro:
- Problema de configuração? - Verifique a documentação
- Pergunta de uso? - Pergunte nos fóruns ou comunidade Discord
- Problema de segurança? - Consulte a seção #problemas-de-segurança abaixo
- Específico de módulo? - Relate ao mantenedor do módulo
- Específico de tema? - Relate ao autor do tema
Tipos de Problemas
Seção intitulada “Tipos de Problemas”Relatório de Bug
Seção intitulada “Relatório de Bug”Um bug é um comportamento inesperado ou defeito.
Exemplos:
- Login não funcionando
- Erros de banco de dados
- Falta de validação de formulário
- Vulnerabilidade de segurança
Requisição de Recurso
Seção intitulada “Requisição de Recurso”Uma requisição de recurso é uma sugestão para nova funcionalidade.
Exemplos:
- Adicionar suporte a novo recurso
- Melhorar funcionalidade existente
- Adicionar documentação faltante
- Melhorias de performance
Aprimoramento
Seção intitulada “Aprimoramento”Um aprimoramento melhora a funcionalidade existente.
Exemplos:
- Mensagens de erro melhores
- Performance melhorada
- Design de API melhor
- Melhor experiência do usuário
Documentação
Seção intitulada “Documentação”Problemas de documentação incluem documentação faltante ou incorreta.
Exemplos:
- Documentação de API incompleta
- Guias desatualizados
- Exemplos de código faltando
- Erros de digitação na documentação
Relatando um Bug
Seção intitulada “Relatando um Bug”Modelo de Relatório de Bug
Seção intitulada “Modelo de Relatório de Bug”## DescriçãoBreve e clara descrição do bug.
## Passos para Reproduzir1. Passo um2. Passo dois3. Passo três
## Comportamento EsperadoO que deveria acontecer.
## Comportamento RealO que realmente acontece.
## Ambiente- Versão XOOPS: X.Y.Z- Versão PHP: 8.2/8.3/8.4- Banco de Dados: MySQL/MariaDB versão- Sistema Operacional: Windows/macOS/Linux- Navegador: Chrome/Firefox/Safari
## Capturas de TelaSe aplicável, adicione capturas de tela mostrando o problema.
## Contexto AdicionalQualquer outra informação relevante.
## Possível CorreçãoSe você tiver sugestões para corrigir o problema (opcional).Exemplo de Bom Relatório de Bug
Seção intitulada “Exemplo de Bom Relatório de Bug”## DescriçãoA página de login mostra página em branco quando a conexão com o banco de dados falha.
## Passos para Reproduzir1. Pare o serviço MySQL2. Navegue até a página de login3. Observe o comportamento
## Comportamento EsperadoMostrar uma mensagem de erro amigável explicando o problema de conexão com o banco de dados.
## Comportamento RealA página está completamente em branco - sem mensagem de erro, sem interface visível.
## Ambiente- Versão XOOPS: 2.7.0- Versão PHP: 8.0.28- Banco de Dados: MySQL 5.7- Sistema Operacional: Ubuntu 20.04- Navegador: Chrome 120
## Contexto AdicionalIsso provavelmente afeta outras páginas também. O erro deveria ser exibido aos admins ou registrado apropriadamente.
## Possível CorreçãoVerifique a conexão com o banco de dados em header.php antes de renderizar o template.Exemplo de Relatório de Bug Ruim
Seção intitulada “Exemplo de Relatório de Bug Ruim”## DescriçãoLogin não funciona
## Passos para ReproduzirNão funciona
## Comportamento EsperadoDeveria funcionar
## Comportamento RealNão funciona
## AmbienteVersão mais recenteRelatando uma Requisição de Recurso
Seção intitulada “Relatando uma Requisição de Recurso”Modelo de Requisição de Recurso
Seção intitulada “Modelo de Requisição de Recurso”## DescriçãoDescrição clara e concisa do recurso.
## Declaração do ProblemaPor que este recurso é necessário? Que problema ele resolve?
## Solução PropostaDescreva sua implementação ideal ou UX.
## Alternativas ConsideradasExistem outras maneiras de alcançar este objetivo?
## Contexto AdicionalQualquer mock-up, exemplo ou referência.
## Impacto EsperadoComo isso beneficiaria os usuários? Seria quebra de compatibilidade?Exemplo de Boa Requisição de Recurso
Seção intitulada “Exemplo de Boa Requisição de Recurso”## DescriçãoAdicionar autenticação de dois fatores (2FA) para contas de usuário.
## Declaração do ProblemaCom crescentes violações de segurança, muitas plataformas CMS agora oferecem 2FA. Usuários XOOPS querem segurança de conta mais forte além de senhas.
## Solução PropostaImplementar 2FA baseado em TOTP (compatível com Google Authenticator, Authy, etc.).- Usuários podem ativar 2FA em seu perfil- Exibir código QR para configuração- Gerar códigos de backup para recuperação- Exigir código 2FA no login
## Alternativas Consideradas- 2FA baseado em SMS (requer integração de operadora, menos seguro)- Chaves de hardware (muito complexo para usuários médios)
## Contexto AdicionalSimilar às implementações do GitHub, GitLab e WordPress.Referência: [Padrão TOTP RFC 6238](https://tools.ietf.org/html/rfc6238)
## Impacto EsperadoAumenta segurança da conta. Poderia ser opcional inicialmente, obrigatório em versões futuras.Problemas de Segurança
Seção intitulada “Problemas de Segurança”NÃO Relatar Publicamente
Seção intitulada “NÃO Relatar Publicamente”Nunca crie um problema público para vulnerabilidades de segurança.
Relatar Privadamente
Seção intitulada “Relatar Privadamente”- Email para o time de segurança: security@xoops.org
- Inclua:
- Descrição da vulnerabilidade
- Passos para reproduzir
- Impacto potencial
- Suas informações de contato
Divulgação Responsável
Seção intitulada “Divulgação Responsável”- Reconheceremos o recebimento dentro de 48 horas
- Forneceremos atualizações a cada 7 dias
- Trabalharemos em um cronograma de correção
- Você pode solicitar crédito pela descoberta
- Coordenar o tempo de divulgação pública
Exemplo de Problema de Segurança
Seção intitulada “Exemplo de Problema de Segurança”Assunto: [SECURITY] Vulnerabilidade XSS no Formulário de Comentário
Descrição:O formulário de comentário do módulo Publisher não escapa adequadamente a entrada do usuário,permitindo ataques XSS armazenados.
Passos para Reproduzir:1. Criar um comentário com: <img src=x onerror="alert('xss')">2. Enviar o formulário3. O JavaScript é executado ao visualizar o comentário
Impacto:Atacantes podem roubar tokens de sessão do usuário, realizar ações como usuários,ou desfigurar o website.
Ambiente:- XOOPS 2.7.0- Módulo Publisher 1.xMelhores Práticas para Título de Problema
Seção intitulada “Melhores Práticas para Título de Problema”Bons Títulos
Seção intitulada “Bons Títulos”✅ Página de login mostra erro em branco quando a conexão com banco de dados falha✅ Adicionar suporte de autenticação de dois fatores✅ Validação de formulário não prevenindo injeção SQL em campo de nome✅ Melhorar performance da consulta de lista de usuários✅ Atualizar documentação de instalação para PHP 8.2Títulos Ruins
Seção intitulada “Títulos Ruins”❌ Bug no sistema❌ Me ajude!!❌ Não funciona❌ Pergunta sobre XOOPS❌ ErroDiretrizes de Título
Seção intitulada “Diretrizes de Título”- Seja específico - Mencione o que e onde
- Seja conciso - Menos de 75 caracteres
- Use tempo presente - “mostra página em branco” não “mostrou página”
- Inclua contexto - “no painel admin”, “durante instalação”
- Evite palavras genéricas - Não “corrigir”, “ajudar”, “problema”
Melhores Práticas para Descrição de Problema
Seção intitulada “Melhores Práticas para Descrição de Problema”Incluir Informações Essenciais
Seção intitulada “Incluir Informações Essenciais”- O que - Descrição clara do problema
- Onde - Qual página, módulo ou recurso
- Quando - Passos para reproduzir
- Ambiente - Versão, SO, navegador, PHP
- Por que - Por que isso é importante
Use Formatação de Código
Seção intitulada “Use Formatação de Código”Mensagem de erro: `Erro: Não foi possível encontrar o usuário`
Trecho de código:```php$user = $this->getUser($id);if (!$user) { echo "Erro: Não foi possível encontrar o usuário";}### Inclua Capturas de Tela
Para problemas de UI, inclua:- Captura de tela do problema- Captura de tela do comportamento esperado- Anotar o que está errado (setas, círculos)
### Use Rótulos
Adicione rótulos para categorizar:- `bug` - Relatório de bug- `enhancement` - Requisição de aprimoramento- `documentation` - Problema de documentação- `help wanted` - Procurando ajuda- `good first issue` - Bom para novos contribuidores
---
## Depois de Relatar
### Seja Responsivo
- Verifique perguntas nos comentários do problema- Forneça informações adicionais se solicitado- Teste correções sugeridas- Verifique se o bug ainda existe com novas versões
### Siga Etiqueta
- Seja respeitoso e profissional- Assuma boas intenções- Não exija correções - desenvolvedores são voluntários- Ofereça ajudar se possível- Agradeça aos contribuidores por seu trabalho
### Mantenha Problema Focado
- Fique no assunto- Não discuta problemas não relacionados- Link para problemas relacionados em vez disso- Não use problemas para votação de recursos
---
## O Que Acontece aos Problemas
### Processo de Triagem
1. **Novo problema criado** - GitHub notifica mantenedores2. **Revisão inicial** - Verificado por clareza e duplicatas3. **Atribuição de rótulo** - Categorizado e priorizado4. **Atribuição** - Atribuído a alguém se apropriado5. **Discussão** - Informações adicionais coletadas se necessário
### Níveis de Prioridade
- **Crítico** - Perda de dados, segurança, quebra completa- **Alto** - Recurso principal quebrado, afeta muitos usuários- **Médio** - Parte de recurso quebrada, workaround disponível- **Baixo** - Problema menor, cosmético ou caso de uso de nicho
### Resultados de Resolução
- **Corrigido** - Problema resolvido em um PR- **Não será corrigido** - Rejeitado por razões técnicas ou estratégicas- **Duplicado** - Mesmo que outro problema- **Inválido** - Não é realmente um problema- **Precisa mais informações** - Aguardando detalhes adicionais
---
## Exemplos de Problema
### Exemplo: Bom Relatório de Bug
```markdown## DescriçãoUsuários admin não conseguem deletar itens ao usar MySQL com modo strict ativado.
## Passos para Reproduzir1. Ativar `sql_mode='STRICT_TRANS_TABLES'` em MySQL2. Navegar para painel admin do Publisher3. Clicar no botão delete em qualquer artigo4. Erro é mostrado
## Comportamento EsperadoArtigo deveria ser deletado ou mostrar erro significativo.
## Comportamento RealErro: "SQL Error - Unknown column 'deleted_at' in ON clause"
## Ambiente- Versão XOOPS: 2.7.0- Versão PHP: 8.2.0- Banco de Dados: MySQL 8.0.32 com STRICT_TRANS_TABLES- Sistema Operacional: Ubuntu 22.04- Navegador: Firefox 120
## Capturas de Tela[Captura de tela da mensagem de erro]
## Contexto AdicionalIsso acontece apenas com modo SQL strict. Funciona bem com configurações padrão.A consulta está em class/PublisherItem.php:248
## Possível CorreçãoUse aspas simples ao redor de 'deleted_at' ou use backticks para todos os nomes de coluna.Exemplo: Boa Requisição de Recurso
Seção intitulada “Exemplo: Boa Requisição de Recurso”## DescriçãoAdicionar endpoints de API REST para acesso somente leitura a conteúdo público.
## Declaração do ProblemaDesenvolvedores querem construir apps mobile e serviços externos usando dados XOOPS.Atualmente limitado a API SOAP que é desatualizada e pobremente documentada.
## Solução PropostaImplementar API RESTful com:- Endpoints para artigos, usuários, comentários (somente leitura)- Autenticação baseada em token- Códigos de status HTTP padrão e erros- Documentação OpenAPI/Swagger- Suporte a paginação
## Alternativas Consideradas- API SOAP melhorada (legado, não em conformidade com padrões)- GraphQL (mais complexo, talvez futuro)
## Contexto AdicionalConsulte refatoração de API do módulo Publisher para padrões similares.Estaria alinhado com práticas modernas de desenvolvimento web.
## Impacto EsperadoHabilitar ecossistema de ferramentas de terceiros e apps mobile.Melhoraria adoção de XOOPS e ecossistema.Documentação Relacionada
Seção intitulada “Documentação Relacionada”- Código de Conduta
- Fluxo de Contribuição
- Diretrizes de Pull Request
- Visão Geral de Contribuição
#xoops #issues #bug-reporting #feature-requests #github