Guía para el manejo de informes de problemas

Dag-Erling Smørgrav

Hiten Pandya

Aviso Legal

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.

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 freebsd-bugbusters@FreeBSD.org, cualquiera que trabaje con PRs de FreeBSD debe seguir estas pautas.


1. 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.

2. 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.

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.

3. Estados de los informes de problemas

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

Ejemplo 1. Un ejemplo simple de cuándo cambiar el estado de un PR.

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:

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.

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.

4. 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.

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.

5. 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:

Tabla 1. Asignaciones predeterminadas — más comunes
TipoCategoríasAsignació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

Tabla 2. Asignaciones predeterminadas — otros
TipoCategoríasAsignación predeterminada

labores de promoción

promoción

freebsd-advocacy

problemas con la Java Virtual Machine™

java

freebsd-java

cumplimiento de estándares

estándares

freebsd-standards

bibliotecas de threading

threads

freebsd-threads

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

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 wiki de FreeBSD.

A continuación hay un listado con ejemplos de dichas entidades. Es probable que el listado no sea exhaustivo.

Tabla 3. Responsables comunes — sistema base
TipoCategoría sugeridaResponsable sugeridoTipo de responsable

problema específico de la arquitectura ARM®.

arm

freebsd-arm

lista de correo

problema específico de la arquitectura MIPS®

kern

freebsd-mips

lista de correo

problema específico de la arquitectura PowerPC®

kern

freebsd-ppc

lista de correo

problema con la interfaz avanzada de configuración y energía (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®

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 geom(4)

kern

freebsd-geom

lista de correo

problema con el subsistema 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 jail(8)

kern

freebsd-jail

lista de correo

problema con la emulación Linux® o SVR4

kern

freebsd-emulation

lista de correo

problema con el stack de red

kern

freebsd-net

lista de correo

problema con el subsistema pf(4)

kern

freebsd-pf

lista de correo

problema con el subsistema scsi(4)

kern

freebsd-scsi

lista de correo

problema con el subsistema sound(4)

kern

freebsd-multimedia

lista de correo

problema con el subsistema y controladores wireless wlan(4)

kern

freebsd-wireless

lista de correo

problema con sysinstall(8) o bsdinstall(8)

bin

freebsd-sysinstall

lista de correo

problema con los scripts de inicio del sistema (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

Tabla 4. Responsables comunes — coleción de ports
TipoCategoría sugeridaResponsable sugeridoTipo 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.

Tabla 5. Responsables comunes — otros
TipoCategoría sugeridaResponsable sugeridoTipo de responsable

problema con la base de datos de PR

bin

bugmeister

alias

problema con el formulario web de Bugzilla.

doc

bugmeister

alias

6. 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.

7. 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.

8. 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".

9. PRs sin errores

Los desarrolladores que encuentren PRs que han aparecido ya en 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.

10. 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.