---
title: Guía para el manejo de informes de problemas
authors:
  - author: Dag-Erling Smørgrav
  - author: Hiten Pandya
releaseinfo: "$FreeBSD$" 
trademarks: ["freebsd", "general"]
---

= Guía para el manejo de informes de problemas
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:lang: es
:toc-title: Tabla de contenidos
:part-signifier: Parte
:chapter-signifier: Capítulo
:appendix-caption: Apéndice
:table-caption: Tabla
:figure-caption: Figura
:example-caption: Ejemplo

include::shared/es/urls.adoc[]

[.abstract-title]
Resumen

Esta guía describe las prácticas recomendadas para manejar los informes de problemas (PRs) de FreeBSD. Aunque se desarrolló para el FreeBSD PR database maintenance team mailto:freebsd-bugbusters@FreeBSD.org[freebsd-bugbusters@FreeBSD.org], cualquiera que trabaje con PRs de FreeBSD debe seguir estas pautas.

'''

toc::[]

[[intro]]
== Introducción

Bugzilla es un sistema de gestión de errores que utiliza el proyecto FreeBSD. El seguimiento preciso de los defectos de software pendientes es importante para la calidad de FreeBSD. Del mismo modo, el uso correcto del software es esencial para el progreso del proyecto.

El acceso a Bugzilla está abierto a toda la comunidad de FreeBSD. Se han establecido ciertas pautas para cubrir aspectos comunes de la gestión de errores como la presentación del seguimiento, la gestión de solicitudes de cierre, etc con el fin de mantener la coherencia dentro de la base de datos y proporcionar una experiencia de usuario consistente.

[[pr-lifecycle]]
== Ciclo de vida de un informe de problemas

* El usuario envía un informe de error al sitio web. El error está en el estado `Needs Triage`.
* Jane Random BugBuster confirma que el error reportado contiene la suficiente información para ser reproducido. Si no, se interactuará repetidamente con el usuario hasta obtener la información necesaria. En este punto el error se establece en el estado `Open`.
* Joe Random Committer se interesa por el PR y se lo asigna a si mismo, o Jane Random BugBuster decide que Joe es la persona más adecuada para resolver el problema y le asigna el error. El error se debe poner en el estado `In Discussion`.
* Joe tiene una breve conversación con el usuario que ha enviado el informe del problema (asegurándose de que todo queda registrado) y determina la causa.
* Joe está toda la noche trabajando y elabora un parche que cree que soluciona el problema y lo envía en un follow-up, pidiéndole al usuario que lo ha reportado que lo pruebe. A continuación fija el estado del PR en `Patch Ready`.
* Un par de interaciones más tarde tanto Joe como el usuario que lo ha creado están satisfechos con el parche y Joe realiza el commit a `-CURRENT` (o directamente a `-STABLE` si el problema no existe en `-CURRENT`), asegurándose de hacer referencia al informe de problemas en su log del commit (y dando el crédito al usuario si envió todo o parte del parche) y, si corresponde, iniciará una cuenta atrás de MFC. El error se fija en el estado `Needs MFC`.
* Si el parche no necesita pasar por un MFC Joe cierra el PR con el estado `Issue Resolved`.

[NOTE]
====
Muchos PRs se envían con muy poca información sobre el problema y algunos son muy complejos de resolver, o simplemente arañan la superficie de un problema mayor; en estos casos es muy importante conseguir toda la información necesaria para resolver el problema. Si el problema no se puede resolver o si el problema se repite, es necesario volver a abrir el PR.
====

[[pr-states]]
== Estados de los informes de problemas

Es importante actualizar el estado de un PR cuando se llevan a cabo ciertas acciones.

.Un ejemplo simple de cuándo cambiar el estado de un PR.
[example]
====

Cuando un PR se haya gestionado y el/los desarrollador/es estén satisfechos con la solución se envia un follow-up al PR y su estado cambiará a "feedback". En este punto el usuario que lo ha creado debe evaluar la solución en su contexto y responder indicando si el defecto ha sido solucionado.
====

Un informe de problemas puede estar en uno de los siguientes estados:

[.glosslist]
open::
Estado inicial: el problema ha sido reportado y necesita ser revisado.

analyzed::
El problema consta como revisado y se está buscando una solución.

feedback::
Hay que realizar trabajos adicionales que requieren más información del usuario o de la comunidad; es posible que haga falta también más información sobre la solución propuesta.

patched::
Se ha realizado un commit con el parche, pero aún hay algo pendiente (MFC o tal vez confirmación del usuario que lo creó).

suspended::
No se está trabajando en el problema debido a la falta de información o recursos. Este es un candidato excelente para alguien que esté buscando un proyecto. Si el problema no se puede resolver se cerrará en lugar de suspenderse. El proyecto de documentación utiliza suspended para los elementos de la wish-list que implican una cantidad significativa de trabajo para el cual nadie dispone de tiempo.

closed::
Un informe de problemas se cierra cuando se han integrado, documentado y probado los cambios o cuando se abandona la solución del problema.

[NOTE]
====
El estado "patched" está directamente relacionado con el feedback, por lo que puede ir directamente al estado "closed" si el usuario que lo creó no puede probar el parche y funciona en sus propias pruebas.
====

[[pr-types]]
== Tipos de informes de problemas

Al tratar con informes de problemas, ya sea como desarrollador que tiene acceso directo a la base de datos de informes de problemas o como colaborador que navega por la base de datos y envía follow-ups con parches, comentarios, sugerencias o solicitudes de cambio, va a encontrarse usted con distintos tipos de PRs.

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

Las siguientes secciones describen para qué se usa cada tipo de PRs, cuándo un PR pertenece a uno de estos tipos y qué tratamiento recibe cada tipo.

[[pr-unassigned]]
== PRs sin asignar

Cuando los PRs llegan se asignan en primer lugar a un responsable genérico (placeholder). Estos siempre tienen el prefijo `freebsd-`. El valor exacto para este patrón depende de la categoría. En la mayoría de los casos corresponde a una lista de correo específica de FreeBSD. Esta es una lista actualizada con los más comunes en primer lugar: 
[[default-assignees-common]]
.Asignaciones predeterminadas -- más comunes
[cols="1,1,1", options="header"]
|===
| Tipo
| Categorías
| Asignación predeterminada

|sistema base
|bin, conf, gnu, kern, misc
|freebsd-bugs

|arquitectura específica
|alpha, amd64, arm, i386, ia64, powerpc, sparc64
|freebsd-_arch_

|colección de ports
|ports
|freebsd-ports-bugs

|documentación enviada junto con el sistema
|docs
|freebsd-doc

|páginas web de FreeBSD (sin incluir docs)
|sitio web
|freebsd-www
|===

[[default-assignees-other]]
.Asignaciones predeterminadas -- otros
[cols="1,1,1", options="header"]
|===
| Tipo
| Categorías
| Asignación predeterminada

|labores de promoción
|promoción
|freebsd-advocacy

|problemas con la Java Virtual Machine(TM)
|java
|freebsd-java

|cumplimiento de estándares
|estándares
|freebsd-standards

|bibliotecas de threading
|threads
|freebsd-threads

|subsistema man:usb[4]
|usb
|freebsd-usb
|===

Es bastante habitual que el usuario responsable del PR lo asigne a la categoría incorrecta. Si usted corrige la categoría recuerde por favor que hay que corregir también la asignación. Nuestros usuarios parecen tener dificultades en particular con el hecho de que aunque su problema ocurra en un sistema i386 podría afectar a todas las plataformas de FreeBSD y por lo tanto ser más adecuado para `kern`. Lo contrario también sucede, por supuesto.

Cualquiera puede reasignar estos PR de sus responsables genéricos a otra persona en grupo. Hay varios tipos de responsables: listas de correo especializadas, alias de correo (utilizados para asuntos muy específicos) de interés limitado) e individuos.

Para los responsables que son listas de correo utilice la designación larga al realizar la asignación: por ejemplo, `freebsd-foo` en lugar de `foo`. Así evitará los correos electrónicos duplicados enviados a las listas de distribución.

[NOTE]
====
Como la lista de personas que se han ofrecido voluntarias para ser los responsables predeterminados para ciertos tipos de PRs cambia con bastante frecuencia es mucho más adecuado recurrir a la https://wiki.freebsd.org/AssigningPRs[wiki de FreeBSD].
====

A continuación hay un listado con ejemplos de dichas entidades. Es probable que el listado no sea exhaustivo.
[[common-assignees-base]]
.Responsables comunes -- sistema base
[cols="1,1,1,1", options="header"]
|===
| Tipo
| Categoría sugerida
| Responsable sugerido
| Tipo de responsable

|problema específico de la arquitectura ARM(R).
|arm
|freebsd-arm
|lista de correo

|problema específico de la arquitectura MIPS(R)
|kern
|freebsd-mips
|lista de correo

|problema específico de la arquitectura PowerPC(R)
|kern
|freebsd-ppc
|lista de correo

|problema con la interfaz avanzada de configuración y energía (man:acpi[4])
|kern
|freebsd-acpi
|lista de correo

|problema con los controladores del modo de transferencia asíncrono (ATM)
|kern
|freebsd-atm
|lista de correo

|problemas con sistemas FreeBSD embebidos o de small-footprint (por ejemplo, NanoBSD/PicoBSD/FreeBSD-arm)
|kern
|freebsd-embedded
|lista de correo

|problema con los controladores de FireWire(R)
|kern
|freebsd-firewire
|lista de correo

|problema con el código fuente del sistema de archivos
|kern
|freebsd-fs
|lista de correo

|problema con el subsistema man:geom[4]
|kern
|freebsd-geom
|lista de correo

|problema con el subsistema man:ipfw[4]
|kern
|freebsd-ipfw
|lista de correo

|problema con los controladores de la red digital de servicios integrados (ISDN)
|kern
|freebsd-isdn
|lista de correo

|subsistema man:jail[8]
|kern
|freebsd-jail
|lista de correo

|problema con la emulación Linux(R) o SVR4
|kern
|freebsd-emulation
|lista de correo

|problema con el stack de red
|kern
|freebsd-net
|lista de correo

|problema con el subsistema man:pf[4]
|kern
|freebsd-pf
|lista de correo

|problema con el subsistema man:scsi[4]
|kern
|freebsd-scsi
|lista de correo

|problema con el subsistema man:sound[4]
|kern
|freebsd-multimedia
|lista de correo

|problema con el subsistema y controladores wireless man:wlan[4]
|kern
|freebsd-wireless
|lista de correo

|problema con man:sysinstall[8] o man:bsdinstall[8]
|bin
|freebsd-sysinstall
|lista de correo

|problema con los scripts de inicio del sistema (man:rc[8])
|kern
|freebsd-rc
|lista de correo

|problema con la funcionalidad VIMAGE o VNET y el código relacionado
|kern
|freebsd-virtualization
|lista de correo

|problema con la emulación de Xen
|kern
|freebsd-xen
|lista de correo
|===

[[common-assignees-ports]]
.Responsables comunes -- coleción de ports
[cols="1,1,1,1", options="header"]
|===
| Tipo
| Categoría sugerida
| Responsable sugerido
| Tipo de responsable

|problema con el framework de ports (¡__no__ con un port en concreto!)
|ports
|portmgr
|alias

|port mantenido por apache@FreeBSD.org
|ports
|apache
|lista de correo

|port mantenido por autotools@FreeBSD.org
|ports
|autotools
|alias

|port mantenido por doceng@FreeBSD.org
|ports
|doceng
|alias

|port mantenido por eclipse@FreeBSD.org
|ports
|freebsd-eclipse
|lista de correo

|port mantenido por gecko@FreeBSD.org
|ports
|gecko
|lista de correo

|port mantenido por gnome@FreeBSD.org
|ports
|gnome
|lista de correo

|port mantenido por hamradio@FreeBSD.org
|ports
|hamradio
|alias

|port mantenido por haskell@FreeBSD.org
|ports
|haskell
|alias

|port mantenido por java@FreeBSD.org
|ports
|freebsd-java
|lista de correo

|port mantenido por kde@FreeBSD.org
|ports
|kde
|lista de correo

|port mantenido por mono@FreeBSD.org
|ports
|mono
|lista de correo

|port mantenido por office@FreeBSD.org
|ports
|freebsd-office
|lista de correo

|port mantenido por perl@FreeBSD.org
|ports
|perl
|lista de correo

|port mantenido por python@FreeBSD.org
|ports
|freebsd-python
|lista de correo

|port mantenido por ruby@FreeBSD.org
|ports
|freebsd-ruby
|lista de correo

|port mantenido por secteam@FreeBSD.org
|ports
|secteam
|alias

|port mantenido por vbox@FreeBSD.org
|ports
|vbox
|alias

|port mantenido por x11@FreeBSD.org
|ports
|freebsd-x11
|lista de correo
|===

Los PRs relacionados con los ports que tienen un maintainer que es a la vez un committer de ports pueden ser reasignados por cualquiera, pero es importante recordar que no todos los committers de FreeBSD tienen un commit bit de ports, por lo que no puede guiarse únicamente por la dirección de correo electrónico.

En el caso de otros PRs por favor no los reasigne a otros individuos (que no sean usted) a menos que esté seguro de que el responsable realmente quiere estar al tanto del PR. Esto ayudará a evitar situaciones en las que nadie se dedica a solucionar un problema en particular porque todo el mundo implicado asume que el responsable ya está en ello.

[[common-assignees-other]]
.Responsables comunes -- otros
[cols="1,1,1,1", options="header"]
|===
| Tipo
| Categoría sugerida
| Responsable sugerido
| Tipo de responsable

|problema con la base de datos de PR
|bin
|bugmeister
|alias

|problema con el https://bugs.freebsd.org/submit/[formulario web] de Bugzilla.
|doc
|bugmeister
|alias
|===

[[pr-assigned]]
== PRs asignados

Si un PR tiene el campo `responsible` establecido con el nombre de usuario de un desarrollador de FreeBSD significa que el PR se ha entregado a esa persona en particular para que desarrolle sobre él trabajo adicional.

Los PRs asignados no deben ser modificados por nadie más que el responsable o el bugmeister. Si tiene algún comentario que hacer al respecto envíe un follow-up. Si por algún motivo cree que el PR debe cambiar de estado o reasignarse envíe un mensaje al responsable. Si el responsable no responde en dos semanas anule la asignación del PR y haga lo que estime conveniente.

[[pr-dups]]
== PRs duplicados

Si encuentra más de un PR que describe el mismo problema elija el que contiene la mayor cantidad de información útil y cierre los demás indicando claramente el número de PR sustituidos. Si varios PRs contienen información útil que no está repetida envíe toda la información restante en un follow-up, incluidas las referencias a los demás. Cierre después los otros PRs una vez hayan sido completamente reemplazados.

[[pr-stale]]
== PRs obsoletos

Un PR se considera obsoleto si no ha sido modificado en más de seis meses. Siga el siguiente procedimiento para gestionar PRs obsoletos:

* Si el PR contiene suficientes detalles intente reproducir el problema en `-CURRENT` y en `-STABLE`. Si logra reproducir el problema envíe un follow-up detallando sus hallazgos e intente encontrar a alguien a quien asignárselo. Establezca el estado en "analyzed" si ese es el caso.
* Si el PR describe un problema que sabe que es el resultado de un error de uso (configuración incorrecta o de otro tipo) envíe un follow-up que explique qué hizo mal el usuario. Más tarde cierre el PR con el motivo "User error" o "Configuration error".
* Si el PR describe un error que sabe que ha sido corregido tanto en `-CURRENT` como en `-STABLE` ciérrelo con un mensaje que indique cuándo se solucionó en cada rama.
* Si el PR trata de un error que sabe que ha sido corregido en `-CURRENT` pero no en `-STABLE` intente averiguar cuándo espera la persona que lo corrigió ejecutar el MFC, o intente encontrar a alguien más (quizás usted mismo) que pueda hacerlo. Establezca el estado en "patched" y asígnelo a quien quiera que se haya encargado de hacer el MFC.
* En cualquier otro caso solicite al usuario que confirme si el problema persiste en las versiones más recientes. Si el usuario no responde en un mes cierre el PR con la anotación "Feedback timeout".

[[pr-misfiled-notpr]]
== PRs sin errores

Los desarrolladores que encuentren PRs que han aparecido ya en http://lists.FreeBSD.org/mailman/listinfo/freebsd-bugs[freebsd-bugs] o alguna otra lista deberían cerrar el PR informando al usuario en un comentario por qué el problema reportado no es realmente un PR y dónde debe publicarse el mensaje.

Las direcciones de correo electrónico que utiliza Bugzilla para recibir los PR se publican en la documentación de FreeBSD y se anuncian y publican en el sitio web. Esto significa que los spammers ya las tienen.

Cuando cierre uno de estos PRs, haga lo siguiente:

* Establezca el componente en `junk` (en `Supporting Services`).
* Establezca como responsable a `nobody@FreeBSD.org`.
* Establezca el estado en `Issue Resolved`.

Establecer la categoría en `junk` indica que no hay contenido útil dentro del PR y ayuda a reducir el desorden en las categorías principales.

[[references]]
== Lecturas adicionales

Esta es una lista de recursos relevantes para la correcta escritura y procesamiento de informes de problemas. De ninguna manera debe considerarse completa.

* link:{problem-reports}[Cómo escribir informes de problemas para FreeBSD] -- directrices para los usuarios que envían un PR.
