---
authors:
  - 
    author: 'Dag-Erling Smørgrav'
  - 
    author: 'Hiten Pandya'
description: 'Essas diretrizes descrevem as práticas recomendadas de tratamento para Relatórios de Problemas (PRs) do FreeBSD.'
tags: ["PR", "guideline", "bugs", "maintenance", "BugZilla", "FreeBSD"]
title: 'Diretrizes de Tratamento de Relatórios de Problemas'
trademarks: ["freebsd", "general"]
---

= Diretrizes de Tratamento de Relatórios de Problemas
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/pr-guidelines/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
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 (mailto:freebsd-bugbusters@FreeBSD.org[freebsd-bugbusters@FreeBSD.org]), essas diretrizes devem ser seguidas por qualquer pessoa que trabalhe com PRs do FreeBSD.

'''

toc::[]

[[intro]]
== 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.

[[pr-lifecycle]]
== 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).

[NOTE]
====
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.
====

[[pr-states]]
== 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.

.Um pequeno exemplo de quando mudar o estado do PR
[example]
====
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.

[NOTE]
====
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.
====

[[pr-types]]
== 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.

* <<pr-unassigned>>
* <<pr-assigned>>
* <<pr-dups>>
* <<pr-stale>>
* <<pr-misfiled-notpr>>

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.

[[pr-unassigned]]
== 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:

[[default-assignees-common]]
.Atribuidores Padrões - os mais comuns
[cols="1,1,1", options="header"]
|===
| Tipo
| Categorias
| Responsá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
|===

[[default-assignees-other]]
.Atribuidores Padrão - outros
[cols="1,1,1", options="header"]
|===
| Tipo
| Categorias
| Responsável padrão (Default Assignee)

|esforços de advocacia
|advocacy
|freebsd-advocacy

|problema com a Java Virtual Machine(TM)
|java
|freebsd-java

|conformidade com padrões
|standards
|freebsd-standards

|bibliotecas de threading
|threads
|freebsd-threads

|subsistema man: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.

[NOTE]
====
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 https://wiki.freebsd.org/AssigningPRs[a wiki do FreeBSD].
====

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

[[common-assignees-base]]
.Atribuidores Comuns - Sistema Base
[cols="1,1,1,1", options="header"]
|===
| Tipo
| Categoria Sugerida
| Atribuidor sugerido
| Tipo de Atribuidor

|problema específico para a arquitetura ARM(R)
|arm
|freebsd-arm
|lista de discussão

|problema específico para a arquitetura MIPS(R)
|kern
|freebsd-mips
|lista de discussão

|problema específico para a arquitetura PowerPC(R)
|kern
|freebsd-ppc
|lista de discussão

|problema com o Gerenciamento Avançado de Energia e Configuração (man: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(R)
|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 man:geom[4]
|kern
|freebsd-geom
|lista de discussão

|problema com o subsistema man: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 man:jail[8]
|kern
|freebsd-jail
|lista de discussão

|problema com emulação do Linux(R) 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 man:pf[4]
|kern
|freebsd-pf
|lista de discussão

|problema com o subsistema man:scsi[4]
|kern
|freebsd-scsi
|lista de discussão

|problema com o subsistema man:sound[4]
|kern
|freebsd-multimedia
|lista de discussão

|problema com o subsistema man:wlan[4] e drivers wireless
|kern
|freebsd-wireless
|lista de discussão

|problema com o man:sysinstall[8] ou o man:bsdinstall[8]
|bin
|freebsd-sysinstall
|lista de discussão

|problema com os scripts de inicialização do sistema (man: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
|===

[[common-assignees-ports]]
.Atribuidores Comuns - Coleção de Ports
[cols="1,1,1,1", options="header"]
|===
| Tipo
| Categoria Sugerida
| Atribuidor sugerido
| Tipo 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.

[[common-assignees-other]]
.Atribuidores Comuns - Outros
[cols="1,1,1,1", options="header"]
|===
| Tipo
| Categoria Sugerida
| Atribuidor sugerido
| Tipo de Atribuidor

|problema com o banco de dados de PRs
|bin
|bugmeister
|alias

|problema com o https://bugs.freebsd.org/submit/[formulario web] do Bugzilla.
|doc
|bugmeister
|alias
|===

[[pr-assigned]]
== 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.

[[pr-dups]]
== 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).

[[pr-stale]]
== 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".

[[pr-misfiled-notpr]]
== PRs não relacionados a bugs

Desenvolvedores que encontram PRs que parecem ter sido postados em {freebsd-bugs} 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.

[[references]]
== 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.

* extref:{problem-reports}[Como Escrever Relatórios de Problemas do FreeBSD] - diretrizes para os autores de PRs.
