Guía para el manejo de informes de problemas

Dag-Erling Smørgrav

Hiten Pandya

Revision: aeb0de7ee1

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.

Last modified on 2019-11-16 11:55:41 +0000 by Sergio Carlavilla Delgado.
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 , cualquiera que trabaje con PRs de FreeBSD debe seguir estas pautas.

[ Split HTML / Single HTML ]

Tabla de contenidos
1. Introducción
2. Ciclo de vida de un informe de problemas
3. Estados de los informes de problemas
4. Tipos de informes de problemas
5. Lecturas adicionales

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.

Nota:

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.

Nota:

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.

4.1. 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 basebin, conf, gnu, kern, miscfreebsd-bugs
arquitectura específicaalpha, amd64, arm, i386, ia64, powerpc, sparc64freebsd-arch
colección de portsportsfreebsd-ports-bugs
documentación enviada junto con el sistemadocsfreebsd-doc
páginas web de FreeBSD (sin incluir docs)sitio webfreebsd-www

Tabla 2. Asignaciones predeterminadas — otros
TipoCategoríasAsignación predeterminada
labores de promociónpromociónfreebsd-advocacy
problemas con la Java Virtual Machinejavafreebsd-java
cumplimiento de estándaresestándaresfreebsd-standards
bibliotecas de threadingthreadsfreebsd-threads
subsistema usb(4)usbfreebsd-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.

Nota:

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®.armfreebsd-armlista de correo
problema específico de la arquitectura MIPS®kernfreebsd-mipslista de correo
problema específico de la arquitectura PowerPC®kernfreebsd-ppclista de correo
problema con la interfaz avanzada de configuración y energía (acpi(4))kernfreebsd-acpilista de correo
problema con los controladores del modo de transferencia asíncrono (ATM)kernfreebsd-atmlista de correo
problemas con sistemas FreeBSD embebidos o de small-footprint (por ejemplo, NanoBSD/PicoBSD/FreeBSD-arm)kernfreebsd-embeddedlista de correo
problema con los controladores de FireWire®kernfreebsd-firewirelista de correo
problema con el código fuente del sistema de archivoskernfreebsd-fslista de correo
problema con el subsistema geom(4)kernfreebsd-geomlista de correo
problema con el subsistema ipfw(4)kernfreebsd-ipfwlista de correo
problema con los controladores de la red digital de servicios integrados (ISDN)kernfreebsd-isdnlista de correo
subsistema jail(8)kernfreebsd-jaillista de correo
problema con la emulación Linux® o SVR4kernfreebsd-emulationlista de correo
problema con el stack de redkernfreebsd-netlista de correo
problema con el subsistema pf(4)kernfreebsd-pflista de correo
problema con el subsistema scsi(4) kernfreebsd-scsilista de correo
problema con el subsistema sound(4)kernfreebsd-multimedialista de correo
problema con el subsistema y controladores wireless wlan(4)kernfreebsd-wirelesslista de correo
problema con sysinstall(8) o bsdinstall(8)binfreebsd-sysinstalllista de correo
problema con los scripts de inicio del sistema (rc(8))kernfreebsd-rclista de correo
problema con la funcionalidad VIMAGE o VNET y el código relacionadokernfreebsd-virtualizationlista de correo
problema con la emulación de Xenkernfreebsd-xenlista 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!)portsportmgralias
port mantenido por apache@FreeBSD.orgportsapachelista de correo
port mantenido por autotools@FreeBSD.orgportsautotoolsalias
port mantenido por doceng@FreeBSD.orgportsdocengalias
port mantenido por eclipse@FreeBSD.orgportsfreebsd-eclipselista de correo
port mantenido por gecko@FreeBSD.orgportsgeckolista de correo
port mantenido por gnome@FreeBSD.orgportsgnomelista de correo
port mantenido por hamradio@FreeBSD.orgportshamradioalias
port mantenido por haskell@FreeBSD.orgportshaskellalias
port mantenido por java@FreeBSD.orgportsfreebsd-javalista de correo
port mantenido por kde@FreeBSD.orgportskdelista de correo
port mantenido por mono@FreeBSD.orgportsmonolista de correo
port mantenido por office@FreeBSD.orgportsfreebsd-officelista de correo
port mantenido por perl@FreeBSD.orgportsperllista de correo
port mantenido por python@FreeBSD.orgportsfreebsd-pythonlista de correo
port mantenido por ruby@FreeBSD.orgportsfreebsd-rubylista de correo
port mantenido por secteam@FreeBSD.orgportssecteamalias
port mantenido por vbox@FreeBSD.orgportsvboxalias
port mantenido por x11@FreeBSD.orgportsfreebsd-x11lista 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 PRbinbugmeisteralias
problema con el formulario web de Bugzilla.docbugmeisteralias

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

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

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

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

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