Diretrizes de Tratamento de Relatórios de Problemas

Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.

trademarks

FreeBSD is a registered trademark of the FreeBSD Foundation.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.

Resumo

Essas diretrizes descrevem práticas recomendadas de tratamento para Relatórios de Problemas (PRs) do FreeBSD. Embora desenvolvidas para a equipe de manutenção do Banco de Dados de PRs do FreeBSD (freebsd-bugbusters@FreeBSD.org), essas diretrizes devem ser seguidas por qualquer pessoa que trabalhe com PRs do FreeBSD.


1. Introdução

O Bugzilla é um sistema de gerenciamento de problemas usado pelo Projeto FreeBSD. Como o rastreamento preciso de defeitos de software pendentes é importante para a qualidade do FreeBSD, o uso correto do software é essencial para o progresso contínuo do Projeto.

O acesso ao Bugzilla está disponível para toda a comunidade FreeBSD. Para manter a consistência no banco de dados e fornecer uma experiência de usuário consistente, foram estabelecidas diretrizes que abrangem aspectos comuns de gerenciamento de bugs, como apresentação de acompanhamentos, tratamento de solicitações de encerramento, entre outros.

2. Ciclo de vida do Relatório de Problemas

  • O autor do relatório envia um relatório de bug no site. O bug está no estado Precisa ser Triado (Needs Triage).

  • Jane Random BugBuster confirma que o relatório de bug possui informações suficientes para ser reproduzido. Caso contrário, ela vai e volta com o autor do relatório para obter as informações necessárias. Neste ponto, o bug é definido como estado Aberto (Open).

  • Joe Random Committer se interessa pelo PR e o atribui a si mesmo, ou Jane Random BugBuster decide que Joe é o mais adequado para lidar com ele e o atribui a ele. O bug deve ser definido para o estado Em Discussão (In Discussion).

  • Joe tem uma breve troca com o autor do relatório (certificando-se de que tudo é registrado no histórico de auditoria) e determina a causa do problema.

  • Joe trabalha a noite toda e desenvolve um patch que ele acha que corrige o problema e o envia em um acompanhamento, pedindo ao autor do relatório que o teste. Em seguida, ele define o estado do PR como Patch Pronto (Patch Ready).

  • Algumas iterações depois, tanto Joe quanto o autor do relatório estão satisfeitos com o patch e Joe o faz commit no -CURRENT (ou diretamente no -STABLE se o problema não existir no -CURRENT), certificando-se de fazer referência ao Relatório de Problemas em seu log de commit (e de creditar o autores se eles enviaram todo ou parte do patch) e, se apropriado, iniciar uma contagem regressiva de MFC. O bug é definido como estado Precisa de MFC (Needs MFC).

  • Se o patch não precisar de MFCing, Joe então encerra o PR como Problema Resolvido (Issue Resolved).

Muitos PRs são enviados com muito pouca informação sobre o problema e alguns são muito complexos para resolver ou apenas arranham a superfície de um problema maior; nesses casos, é muito importante obter todas as informações necessárias para resolver o problema. Se o problema não puder ser resolvido ou ocorrer novamente, é necessário reabrir o PR.

3. Estado do Relatório de Problemas

É importante atualizar o estado de um PR quando certas ações são tomadas. O estado deve refletir com precisão o estado atual do trabalho no PR.

Exemplo 1. Um pequeno exemplo de quando mudar o estado do PR

Quando um PR foi trabalhado e o(s) desenvolvedor(es) responsáveis se sentem confortáveis com a correção, eles enviarão um acompanhamento para o PR e alterarão seu estado para "feedback". Neste ponto, o originador deve avaliar a correção em seu contexto e responder indicando se o defeito foi realmente corrigido.

Um Relatório de Problema pode estar em um dos seguintes estados:

open (aberto)

Estado inicial; o problema foi relatado, mas ainda não foi avaliado.

analyzed (analisado)

O problema foi avaliado, mas ainda não foi corrigido.

feedback (retroalimentação)

Trabalhos adicionais requerem informações adicionais do originador ou da comunidade; possivelmente informações sobre a solução proposta.

patched (corrigido)

Foi realizado o commit de um patch, mas algo (MFC, ou talvez confirmação do originador) ainda está pendente.

suspended (suspenso)

O problema não está sendo trabalhado, devido à falta de informações ou recursos. Este é um candidato ideal para alguém que procura um projeto para assumir. Se o problema não puder ser resolvido de forma alguma, ele será fechado, em vez de suspenso. O projeto de documentação usa "suspenso" para itens de lista de desejos que exigem uma quantidade significativa de trabalho para o qual ninguém tem tempo no momento.

closed (fechado)

Um relatório de problemas é fechado quando as alterações referentes a ele tiverem sido integradas, documentadas e testadas ou, quando a correção do problema tiver sido abandonada.

O estado "corrigido" (patched) está diretamente relacionado ao estado "retroalimentação" (feedback), então você pode ir diretamente para o estado "fechado" (closed) se o originador não puder testar o patch e ele funcionar em seus próprios testes.

4. Tipos de Relatórios de Problema

Ao lidar com relatórios de problemas, seja como um desenvolvedor que tem acesso direto ao banco de dados de relatórios de problemas ou como um colaborador que navega no banco de dados e envia feedbacks com patches, comentários, sugestões ou solicitações de mudança, você se deparará com vários tipos diferentes de PRs.

As seções a seguir descrevem para que cada tipo diferente de PRs é usado, quando um PR pertence a um desses tipos e qual tratamento cada tipo diferente recebe.

5. PRs Não Atribuídos

Quando os Relatórios de Problemas chegam, eles são inicialmente atribuídos a um responsável genérico (placeholder). Esses responsáveis sempre começam com freebsd-. O valor exato desse responsável padrão depende da categoria do PR; na maioria dos casos, corresponde a uma lista de discussão específica do FreeBSD. Aqui está a lista atual, com os mais comuns listados primeiro:

Tabela 1. Atribuidores Padrões - os mais comuns
TipoCategoriasResponsável padrão (Default Assignee)

Sistema base (Base System)

bin, conf, gnu, kern, misc

freebsd-bugs

architecture-specific

alpha, amd64, arm, i386, ia64, powerpc, sparc64

freebsd-arch

coleção de ports

ports

freebsd-ports-bugs

Documentação incluída no sistema

docs

freebsd-doc

páginas web do FreeBSD (excluindo a documentação)

Website

freebsd-www

Tabela 2. Atribuidores Padrão - outros
TipoCategoriasResponsável padrão (Default Assignee)

esforços de advocacia

advocacy

freebsd-advocacy

problema com a Java Virtual Machine™

java

freebsd-java

conformidade com padrões

standards

freebsd-standards

bibliotecas de threading

threads

freebsd-threads

subsistema usb(4)

usb

freebsd-usb

Não se surpreenda ao descobrir que o autor do PR atribuiu-o à categoria errada. Se você corrigir a categoria, não se esqueça de corrigir também a atribuição. (Em particular, nossos autores têm dificuldade em entender que só porque seu problema se manifestou em um sistema i386, ele pode ser genérico para todo o FreeBSD e, portanto, ser mais apropriado para kern. O inverso também é verdadeiro, é claro.)

Alguns PRs podem ser reatribuídos para longe desses atribuidores genéricos por qualquer pessoa. Existem vários tipos de atribuidores: listas de discussão especializadas; aliases de e-mail (usados para determinados itens de interesse limitado); e indivíduos.

Para atribuidores que são listas de discussão, por favor, use a forma longa ao fazer a atribuição (por exemplo, freebsd-foo em vez de foo); isso evitará o envio de e-mails duplicados para a lista de discussão.

Uma vez que a lista de pessoas que se ofereceram para ser o atribuidor padrão para determinados tipos de PRs muda com tanta frequência, é muito mais apropriado consultar a wiki do FreeBSD.

Aqui está uma lista de exemplo dessas entidades; ela provavelmente não está completa.

Tabela 3. Atribuidores Comuns - Sistema Base
TipoCategoria SugeridaAtribuidor sugeridoTipo de Atribuidor

problema específico para a arquitetura ARM®

arm

freebsd-arm

lista de discussão

problema específico para a arquitetura MIPS®

kern

freebsd-mips

lista de discussão

problema específico para a arquitetura PowerPC®

kern

freebsd-ppc

lista de discussão

problema com o Gerenciamento Avançado de Energia e Configuração (acpi(4))

kern

freebsd-acpi

lista de discussão

problema com os drivers de Modo de Transferência Assíncrona (ATM)

kern

freebsd-atm

lista de discussão

problema com sistemas FreeBSD incorporados ou small-footprint (por exemplo, NanoBSD/PicoBSD/FreeBSD-arm)

kern

freebsd-embedded

lista de discussão

problema com os drivers FireWire®

kern

freebsd-firewire

lista de discussão

problema com o código do sistema de arquivos

kern

freebsd-fs

lista de discussão

problema com o subsistema geom(4)

kern

freebsd-geom

lista de discussão

problema com o subsistema ipfw(4)

kern

freebsd-ipfw

lista de discussão

problema com drivers de Rede Digital de Serviços Integrados (ISDN)

kern

freebsd-isdn

lista de discussão

problema com o subsistema jail(8)

kern

freebsd-jail

lista de discussão

problema com emulação do Linux® ou do SVR4

kern

freebsd-emulation

lista de discussão

problema com a pilha de rede

kern

freebsd-net

lista de discussão

problema com o subsistema pf(4)

kern

freebsd-pf

lista de discussão

problema com o subsistema scsi(4)

kern

freebsd-scsi

lista de discussão

problema com o subsistema sound(4)

kern

freebsd-multimedia

lista de discussão

problema com o subsistema wlan(4) e drivers wireless

kern

freebsd-wireless

lista de discussão

problema com o sysinstall(8) ou o bsdinstall(8)

bin

freebsd-sysinstall

lista de discussão

problema com os scripts de inicialização do sistema (rc(8))

kern

freebsd-rc

lista de discussão

problema com a funcionalidade VIMAGE ou VNET e código relacionado

kern

freebsd-virtualization

lista de discussão

problema com a emulação do Xen

kern

freebsd-xen

lista de discussão

Tabela 4. Atribuidores Comuns - Coleção de Ports
TipoCategoria SugeridaAtribuidor sugeridoTipo de Atribuidor

problema com o framework de ports (não com um port individual!)

ports

portmgr

alias

port mantido por apache@FreeBSD.org

ports

apache

lista de discussão

port mantido por autotools@FreeBSD.org

ports

autotools

alias

port mantido por doceng@FreeBSD.org

ports

doceng

alias

port mantido por eclipse@FreeBSD.org

ports

freebsd-eclipse

lista de discussão

port mantido por gecko@FreeBSD.org

ports

gecko

lista de discussão

port mantido por gnome@FreeBSD.org

ports

gnome

lista de discussão

port mantido por hamradio@FreeBSD.org

ports

hamradio

alias

port mantido por haskell@FreeBSD.org

ports

haskell

alias

port mantido por java@FreeBSD.org

ports

freebsd-java

lista de discussão

port mantido por kde@FreeBSD.org

ports

kde

lista de discussão

port mantido por mono@FreeBSD.org

ports

mono

lista de discussão

port mantido por office@FreeBSD.org

ports

freebsd-office

lista de discussão

por mantido por perl@FreeBSD.org

ports

perl

lista de discussão

port mantido por python@FreeBSD.org

ports

freebsd-python

lista de discussão

port mantido por ruby@FreeBSD.org

ports

freebsd-ruby

lista de discussão

port mantido por secteam@FreeBSD.org

ports

secteam

alias

port mantido por vbox@FreeBSD.org

ports

vbox

alias

por mantido por x11@FreeBSD.org

ports

freebsd-x11

lista de discussão

Os relatórios de problemas dos ports que têm um mantenedor que é um colaborador do ports podem ser reatribuídos por qualquer pessoa (mas observe que nem todo committer do FreeBSD é necessariamente um committer do ports, então você não pode simplesmente ir apenas pelo endereço de e-mail.)

Para outros PRs, por favor, não reatribua-os para indivíduos (além de si mesmo) a menos que você esteja certo de que o assignee realmente queira acompanhar o PR. Isso ajudará a evitar situações nas quais em que ninguém olha para corrigir um problema específico porque todo mundo assume que o assignee já está trabalhando no mesmo.

Tabela 5. Atribuidores Comuns - Outros
TipoCategoria SugeridaAtribuidor sugeridoTipo de Atribuidor

problema com o banco de dados de PRs

bin

bugmeister

alias

problema com o formulario web do Bugzilla.

doc

bugmeister

alias

6. PRs Atribuídos

Se um PR tem o campo responsável configurado com o nome de usuário de um desenvolvedor do FreeBSD, isso significa que o PR foi entregue para aquela pessoa específica para trabalhos posteriores.

Os PRs atribuídos não devem ser alterados por ninguém além do assignee ou do bugmeister. Se você tiver comentários, envie um acompanhamento. Se, por algum motivo, você achar que o PR deve mudar de estado ou ser reatribuído, envie uma mensagem para o assignee. Se o assignee não responder dentro de duas semanas, desfaça a atribuição do PR e faça o que desejar.

7. PRs Duplicados

Se você encontrar mais de um PR que descreva o mesmo problema, escolha aquele que contém a maior quantidade de informações úteis e feche os outros, declarando claramente o número do PR substituto. Se vários PRs contêm informações úteis que não se sobrepõem, envie todas as informações ausentes em um acompanhamento para um PR, incluindo referências aos outros; em seguida, feche os outros PRs (que agora foram completamente substituídos).

8. PRs Obsoletos

Um PR é considerado obsoleto se não foi modificado há mais de seis meses. Aplique o seguinte procedimento para lidar com PRs obsoletos:

  • Se o PR contém detalhes suficientes, tente reproduzir o problema em -CURRENT e -STABLE. Se você conseguir reproduzir o problema, envie um acompanhamento detalhando suas descobertas e tente encontrar alguém para atribuí-lo. Defina o estado como "analisado" se for apropriado.

  • Se o PR descreve um problema que você sabe que é o resultado de um erro de uso (configuração incorreta ou de outra forma), envie um acompanhamento explicando o que o originador fez de errado e, em seguida, feche o PR com a razão "Erro do usuário" ou "Erro de configuração".

  • Se o PR descreve um erro que você sabe que foi corrigido tanto em -CURRENT quanto em -STABLE, feche-o com uma mensagem indicando quando foi corrigido em cada branch.

  • Se o PR descreve um erro que você sabe que foi corrigido em -CURRENT, mas não em -STABLE, tente descobrir quando a pessoa que corrigiu planeja fazer o MFC (merge from current) para o -STABLE, ou tente encontrar outra pessoa (talvez você mesmo?) para fazer isso. Defina o estado como "corrigido" e atribua-o à pessoa que fará o MFC.

  • Em outros casos, peça ao originador para confirmar se o problema ainda existe em versões mais recentes. Se o originador não responder dentro de um mês, feche o PR com a anotação "Tempo limite de feedback".

9. PRs não relacionados a bugs

Desenvolvedores que encontram PRs que parecem ter sido postados em lista de discussão para reportar erros no FreeBSD ou em outra lista devem fechar o PR, informando ao remetente em um comentário por que isso não é realmente um PR e onde a mensagem deve ser postada.

Os endereços de e-mail que o Bugzilla utiliza para receber PRs foram publicados como parte da documentação do FreeBSD, foram anunciados e listados no site. Isso significa que spammers os encontraram.

Sempre que você fechar um desses PRs, por favor, faça o seguinte:

  • Defina o componente como junk (em Supporting Services).

  • Defina o responsável como nobody@FreeBSD.org.

  • Defina o estado como Problema Resolvido (ou "Issue Resolved" em inglês).

Definir a categoria como junk torna óbvio que não há conteúdo útil dentro do PR e ajuda a reduzir a desordem nas categorias principais.

10. Leitura Adicional

Esta é uma lista de recursos relevantes para a escrita adequada e o processamento dos relatórios de problemas. De forma alguma é uma lista completa.


Última alteração em: 24 de abril de 2023 por Edson Brandi