doc/es_ES.ISO8859-1/articles/problem-reports/article.sgml
J. Vicente Carrasco 73c55f927f articles/contrib
- add entry for translators
- add trademarks

articles/dialup-firewall
- add entry for translators.ent
- add translator's info

articles/explaining-bsd
- Cosmetic changes on Makefile
- add translators.ent
- add translator's info
- a lot of cosmetic changes

articles/fbsd-from-scratch
- add entry for translators.ent
- add translators' info

articles/laptop
- add "WITH_TOC" on Makefile
- add entry for translators.ent
- add translators' entry

articles/problem-reports
- correct several typos

articles/zip-drive
- add entry for translators.ent
- add translators' info

articles/Makefile
New article added: cvs-freebsd
Submitted by: Jesus R. Camou jcamou at es.FreeBSD.org

Approved by: jesusr (mentor)
2005-01-12 20:39:27 +00:00

1028 lines
45 KiB
Text

<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous
FreeBSD Entities//EN"> %freebsd;
<!ENTITY % newsgroups PUBLIC "-//FreeBSD//ENTITIES DocBook Newsgroup Entities//ES"> %newsgroups;
<!ENTITY % authors PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN">
%authors;
<!ENTITY % mailing-lists PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//ES">
%mailing-lists;
<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//ES">
%translators;
<!ENTITY % trademarks PUBLIC "-//FreeBSD//ENTITIES DocBook Trademark Entities//EN">
%trademarks;
<!ENTITY % not.published "IGNORE">
]>
<article>
<articleinfo>
<title>C&oacute;mo enviar informes de problemas de &os;</title>
<pubdate>$FreeBSD$</pubdate>
<!--
$FreeBSDes: doc/es_ES.ISO8859-1/articles/problem-reports/article.sgml,v 1.2 2004/10/09 01:56:32 jesusr Exp $
-->
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.ibm;
&tm-attrib.intel;
&tm-attrib.sparc;
&tm-attrib.sun;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>Este art&iacute;culo describe c&oacute;mo realizar y enviar
informes de errores para el proyecto &os; de la mejor forma
posible.</para>
&trans.es.jrh;
</abstract>
<authorgroup>
<author>
<firstname>Dag-Erling</firstname>
<surname>Sm&oslash;rgrav</surname>
<contrib>Escrito por </contrib>
</author>
</authorgroup>
</articleinfo>
<indexterm><primary>problem reports</primary></indexterm>
<section id="pr-intro">
<title>Introducci&oacute;n</title>
<para>Una de las experiencias m&aacute;s fustrantes que se pueden
experimentar como usuario de software es aquella en la cual el
usuario se toma la molestia de rellenar un informe de problemas
detallado para observar tras un determinado espacio de tiempo
que dicho informe se cierra con una explicaci&oacute;n corta y abrupta
como <quote>no es un error</quote> o <quote>PR erroneo</quote>.
De forma semejante, una de las experiencias m&aacute;s fustrantes que
puede experimentar un desarrollador de aplicaciones consiste en
verse inundado por una cantidad ingente de informes de errores
que en realidad vienen a ser solicitudes de
soporte o ayuda, o que contienen poca o ninguna informaci&oacute;n
sobre c&uacute;al es el problema y como se puede reproducir.</para>
<para>Este documento intenta describir c&oacute;mo escribir informes de
problemas de calidad. Usted se preguntar&aacute; c&oacute;mo se pueden
escribir informes de problemas de calidad. Bien, para ir
directos al grano, un informe de problemas de calidad es aqu&eacute;l
que se puede analizar y tratar r&aacute;pidamente, para m&uacute;tua
satisfacci&oacute;n del usuario y del desarrollador.</para>
<para>Aunque el objetivo principal de este art&iacute;culo se centra en
los informes de problemas de &os; la mayor&iacute;a de los conceptos se
pueden aplicar bastante bien en otros proyectos de software.</para>
<para>D&eacute;se cuenta de que este art&iacute;culo se organiza de forma
tem&aacute;tica, no cronol&oacute;gicamente, de tal forma que se debe
leer el documento &iacute;ntegro antes de enviar informes
de problemas. No debe tratarse como un tutorial del estilo paso
a paso.</para> </section>
<section id="pr-when">
<title>Cu&aacute;ndo enviar informes de problemas</title>
<para>Existen varios tipos de problemas y no todos ellos se
merecen la creaci&oacute;n de un informe de problemas. Por supuesto,
nadie es perfecto, y existir&aacute;n ocasiones en las que estaremos
convencidos de haber encontrado un <quote>bug</quote> en un programa
cuando realmente hemos malinterpretado la sintaxis o el funcionamiento de
dicho programa, o simplemente hemos cometido un error
tipogr&aacute;fico en un fichero de configuraci&oacute;n (aunque en este
&uacute;ltimo caso podr&iacute;a tratarse de un indicador de
documentaci&oacute;n escasa o que la aplicaci&oacute;n peca de una
gesti&oacute;n de errores defectuosa. Incluso
teniendo estos aspectos en cuenta existen varios casos en los cuales
el env&iacute;o de un informe de problemas resulta claramente
<emphasis>no ser</emphasis> la mejor forma de proceder, ya que dicho
env&iacute;o puede servir para frustrar tanto a quien env&iacute;a el
informe como a quien desarroll&oacute; la aplicaci&oacute;n.
Por el contrario, tambi&eacute;n existen casos
en los que puede resultar apropiado enviar un informe de problemas sobre
algo m&aacute;s aparte de <quote>bugs</quote>: una mejora o una solucitud
nuevas caracter&iacute;sticas, por citar un par de ejemplos.</para>
<para>As&iacute; que &iquest;c&oacute;mo podemos determinar qu&eacute;
constituye un <quote>bug</quote> y qu&eacute; no? Como regla para
principiantes podemos decir que su problema
<emphasis>no</emphasis> es un <quote>bug</quote> si
se puede expresar como una pregunta (normalmente del estilo de
<quote>&iquest;c&oacute;mo hago X?</quote> o
<quote>&iquest;donde puedo encontrar Y?</quote>). No siempre las
cosas son blancas o negras, pero la regla de las preguntas suele
cubrir una gran mayor&iacute;a de casos. Si lo que se quiere es una
respuesta a una consulta, se pueden enviar dichas preguntas a la
&a.questions;.</para>
<para>A continuaci&oacute;n se muestran algunos casos en los que resulta
apropiado enviar un informe de problemas sobre algo que no se
considera un <quote>bug</quote>:</para>
<itemizedlist>
<listitem>
<para>Solucitudes para mejora de caracter&iacute;sticas. Normalmente
es una buena idea airear estas propuestas en las listas de
distribuci&oacute;n antes de enviar un informe de problemas.</para>
</listitem>
<listitem>
<para>Notificaci&oacute;n de actualizaciones de software que se
mantiene externamente (principalmente ports, pero tambi&eacute;n
componentes del sistema base al cargo de proyectos independientes
de &os;, como BIND o diversas utilidades GNU)</para>
</listitem>
</itemizedlist>
<para>Otro tema es que si el sistema donde se experiment&oacute; el
<quote>bug</quote> no est&aacute; medianamente actualizado se debe
considerar muy seriamente su actualizaci&oacute;n e intentar reproducir
el problema en un sistema actualizado antes de emitir el informe.
Existen pocas cosas que molesten m&aacute;s a un desarrollador que
recibir un informe de problemas sobre un problema que ya ha
resuelto.</para>
<para>Por &uacute;ltimo, un <quote>bug</quote> que no se puede
reproducir dif&iacute;cilmente puede arreglarse. Si el
<quote>bug</quote> s&oacute;lo ocurri&oacute; una vez y no somos capaces
de reproducirlo, y parece que no le ocurre a nadie m&aacute;s,
es muy probable que ni siquiera los desarrolladores puedan
reproducirlo y por lo tanto ni siquiera puedan imaginarse qu&eacute; es
lo que falla. Esto no significa que el <quote>bug</quote> no haya
ocurrido, sino que las probabilidades de que nuestro informe de errores
sirva para corregir un defecto son muy peque&ntilde;as. Para complicar
m&aacute;s las cosas, a menudo estas clases de errores se producen
debido a fallos en los discos duros o al sobrecalentamiento del
procesador: debe intentar siempre descubrir estos
fallos, siempre que sea posible, antes de enviar un PR.</para>
</section>
<section id="pr-prep">
<title>Preparativos</title>
<para>Una buena regla que se puede seguir consiste en realizar
siempre una b&uacute;squeda antes de enviar un informe
de problemas. Quiz&aacute; nuestro problema ya ha sido reportado;
quiz&aacute; se est&aacute; discutiendo en las listas de
distribuci&oacute;n o fue discutido hace poco; incluso es posible que
se haya arreglado en versiones m&aacute;s recientes del software.
Por lo tanto, se deben consultar los sitios y fuentes m&aacute;s obvias
antes de proceder con el env&iacute;o del informe de errores.
En &os; esto significa:</para>
<itemizedlist>
<listitem>
<para>Las
<ulink url="http://www.freebsd.org/doc/en/books/faq/index.html">Preguntas M&aacute;s
<!--
XXX
<ulink url="&url.books.faq;/index.html">Preguntas M&aacute;s
-->
Frecuentes</ulink> (FAQ) de &os;.
Las FAQ intentan proporcionar respuestas para un
amplio rango de dudas, tales como aquellas relacionadas
con las
<!--
<ulink url="&url.books.faq;/hardware.html">compatibilidades
hardware</ulink>, las
<ulink url="&url.books.faq;/applications.html">aplicaciones
de usuario</ulink> y la
<ulink url="&url.books.faq;/kernelconfig.html">configuraci&oacute;n
del kernel</ulink>.
-->
<ulink
url="http://www.freebsd.org/doc/en/books/faq/hardware.html">compatibilidades
hardware</ulink>, las
<ulink
url="http://www.freebsd.org/doc/en/books/faq/applications.html">aplicaciones
de usuario</ulink> y la
<ulink
url="http://www.freebsd.org/doc/en/books/faq/kernelconfig.html">configuraci&oacute;n
del kernel</ulink>.</para>
</listitem>
<listitem>
<para>Las
<!--
<ulink
url="&url.books.handbook;/eresources.html#ERESOURCES-MAIL">listas
-->
<ulink
url="http://www.freebsd.org/doc/en/books/handbook/eresources.html#ERESOURCES-MAIL">listas
de correo</ulink>. Si no est&aacute; subscrito utilice
<ulink
url="http://www.FreeBSD.org/search/search.html#mailinglists">la
b&uacute;squeda en los archivos</ulink> del sitio web de &os;. Si
el problema no se ha discutido con anterioridad en las
listas, se puede intentar enviar un mensaje y esperar unos
pocos d&iacute;as para ver si alguien puede aconsejarle
adecuadamente sobre alg&uacute;n punto que quiz&aacute; haya pasado
por alto en relaci&oacute;n con el problema.</para>
</listitem>
<listitem>
<para>Opcionalmente, la web entera&mdash;utilice su motor de
b&uacute;squeda favorito para localizar cualquier referencia a su
problema. Incluso pueden aparecer listas de correo o grupos
de noticias de los cuales ni siquiera tuviera conocimiento
de su existencia o quiz&aacute; no consider&oacute; apropiado
consultarlas al principio.</para> </listitem>
<listitem>
<para>A continuaci&oacute;n, la b&uacute;squeda a trav&eacute;s de
<ulink url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">
la base de datos &os; PR</ulink> (GNATS). A menos que
nuestro problema sea muy reciente o rebuscado, existe un
gran n&uacute;mero de posibilidades de que ya haya sido informado o
reportado.</para>
</listitem>
<listitem>
<para>Lo m&aacute;s importante, se deber&iacute;a intentar comprobar
si la documentaci&oacute;n existente en el c&oacute;digo fuente del
programa puede resolver el problema.</para>
<para>En el caso de las fuentes del sistema &os; debe estudiarse
cuidadosamente el contenido del fichero
<filename>/usr/src/UPDATING</filename> del sistema o su
&uacute;ltima versi&oacute;n, que se encuentra en <ulink
url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/UPDATING"></ulink>.
(Esta informaci&oacute;n se considera de vital importancia si se
est&aacute; actualizando de una versi&oacute;n a otra, especialmente
si la actualizaci&oacute;n se realiza de la versi&oacute;n estable a
la versi&oacute;n &os.current;).</para>
<para>No obstante, si el problema se encuentra en algo que se
instal&oacute; como parte de la collecci&oacute;n de ports de &os;,
se debe consultar el archivo
<filename>/usr/ports/UPDATING</filename> (para ports
individuales) o el archivo
<filename>/usr/ports/CHANGES</filename> (para cambios que
afectan a la colecci&oacute;n de ports completa). <ulink
url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/UPDATING"></ulink>
y <ulink
url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/CHANGES"></ulink>
tambi&eacute;n se encuentran disponibles a trav&eacute;s de CVSweb.
</para>
</listitem>
</itemizedlist>
<para>A continuaci&oacute;n debemos asegurarnos de que el informe de
errores llega a las personas adecuadas.</para>
<para>La primera consideraci&oacute;n llegados a este punto consiste en:
Si el problema resulta ser un bug en un software
de terceras partes (un port o un paquete que se ha instalado)
se debe informar sobre el bug al autor original del software, no
al proyecto &os;. Existen dos excepciones a esta regla: la
primera ocurre cuando el bug no se produce en otras plataformas,
en cuyo caso el problema puede residir en c&oacute;mo fue migrado el
software a &os;; la segunda excepci&oacute;n ocurre cuando el autor
original ya ha corregido el problema y distribuido un parche o
una nueva versi&oacute;n de su software, pero el port de &os;
todav&iacute;a no se ha actualizado.</para>
<para>La segunda consideraci&oacute;n es que el sistema de seguimiento de
bugs de &os; ordena los informes de problemas de acuerdo con la
categor&iacute;a que ha seleccionado el informador. De este modo, si se
selecciona una categor&iacute;a incorrecta cuando se env&iacute;a el
informe de problemas, existe una gran probabilidad de que nadie se de
cuenta de su existencia durante un per&iacute;odo de tiempo indefinido,
hasta que alguien se encarge de re-categorizarlo.</para>
</section>
<section id="pr-writing">
<title>Escribir el informe de problemas</title>
<para>Ahora que hemos determinado que el problema que estamos
experimentando se merece la redacci&oacute;n de un informe de problemas
y que se trata de un problema de &os;, es la hora de comenzar a
escribir dicho informe. Antes de pasar a describir los
mecanismos utilizados por el programa encargado de generar los
informes PR, vamos a describir una serie de trucos y consejos
que nos asegurar&aacute;n la mayor efectividad posible de nuestro
informe.</para>
<section>
<title>Consejos y trucos para escribir un buen informe de
problemas</title>
<itemizedlist>
<listitem>
<para><emphasis>No deje la l&iacute;nea de <quote>Synopsis</quote>
vac&iacute;a</emphasis>. Los PRs se dirigen tanto a una lista de
correo mundial (donde se utiliza el campo
<quote>Synopsis</quote> para rellenar la l&iacute;nea
<literal>Subject:</literal> del correo) como a una base
de datos (GNATS). Cualquier persona que consulte la base
de datos por el campo <literal>sinopsis</literal> y encuentre un
PR con una l&iacute;nea de <literal>Asunto</literal> vac&iacute;a
tiende simplemente a pasar por alto el informe. Recuerde que un
PR permanece en la base de datos hasta que alguien se encarga de
cerrar el informe; un informe an&oacute;nimo normalmente se
perder&aacute; para siempre entre el ruido y tardar&aacute; mucho
en cerrarse.</para>
</listitem>
<listitem>
<para><emphasis>Evite utilizar una l&iacute;nea de
<quote>Synopsis</quote> d&eacute;bil.</emphasis>. No debe
suponerse que quien lea el PR conoce el contexto adecuado en el
que su mensaje tiene sentido, as&iacute; que cuanta m&aacute;s
informaci&oacute;n se proporcione, mejor que mejor.
Por ejemplo, &iquest;qu&eacute; parte del sistema se ve afectado
por el informe?, &iquest;el problema aparece cuando se est&aacute;
instalando o cuando se est&aacute; ejecutando?. Para
ejemplificar, en lugar de <literal>Synopsis: portupgrade is
broken</literal>, se pueden ver las ventajas que
proporciona una l&iacute;nea como la siguiente:
<literal>Synopsis: port sysutils/portupgrade produce un
coredump en -current</literal>. (En el caso concreto de
los ports, resulta especialmente &uacute;til poseer tanto la
categor&iacute;a como el nombre del port en la l&iacute;nea
<quote>Synopsis</quote>.)</para>
</listitem>
<listitem>
<para><emphasis>Si se dispone de un parche, d&iacute;galo.
</emphasis> Un PR con un parche incluido tiene muchas m&aacute;s
posibilidades de ser tratado que uno que no lo tiene. Si
se include dicho parche, escriba la cadena
<literal>[patch]</literal> al comienzo de la l&iacute;nea
<quote>Synopsis</quote>. (Aunque no es obligatorio
utilizar dicha cadena, se trata de un est&aacute;ndar de facto
que se utiliza de forma mayoritaria.)</para>
</listitem>
<listitem>
<para><emphasis>Si es mantenedor del port, d&iacute;galo.</emphasis>
Si se est&aacute; manteniendo el c&oacute;digo fuente de una
aplicaci&oacute;n (por ejemplo, de un port), se puede
considerar la adici&oacute;n de la cadena
<literal>[maintainer update]</literal> al comienzo de la
l&iacute;nea de sinopsis, y adem&aacute;s se deber&iacute;a
asignar el campo <quote>Class</quote> del PR a la cadena
<literal>maintainer-update</literal>. De esta forma
cualquier committer que maneje el PR no tendr&aacute; que
realizar comprobaciones.</para> </listitem>
<listitem>
<para><emphasis>Sea concreto.</emphasis>
Cuanta m&aacute;s informaci&oacute;n se proporcione sobre el
problema que se tiene, m&aacute;s posiblidades de obtener una
respuesta.</para>
<itemizedlist>
<listitem>
<para>Incluya la versi&oacute;n del &os; que se est&aacute;
ejecutando (existe un lugar donde escribir esta
esta informaci&oacute;n, vea m&aacute;s abajo) y en
qu&eacute; arquitectura. Se debe incluir si
se est&aacute; ejecutando desde una release (e.g. desde un
CDROM o descarga), o si es desde un sistema mantenido
mediante &man.cvsup.1; (y, si esto &uacute;ltimo se cumple,
con qu&eacute; frecuencia se realiza la actualizaci&oacute;n). Si se est&aacute; siguiendo la rama &os.current;, se
trata de la primera pregunta que nos har&aacute;n,
debido a que los parches (sobre todo para problemas de alto
nivel) tienden a aplicarse muy r&aacute;pidamente, y se espera
de los usuarios de &os.current; un seguimiento cercano de
las actualizaciones aplicadas.</para> </listitem>
<listitem>
<para>Incluya qu&eacute; opciones globales se han especificado
en el archivo <filename>make.conf</filename>. Aviso:
Es bien conocido por todos que especificar
<literal>-O2</literal> y valores superiores para
&man.gcc.1; produce fallos y resulta ser proclive a
errores en muchas situaciones. Aunque los
desarrolladores de &os; normalmente dan por buenos y
aceptan los parches proporcionados por el creador del
informe de problemas, normalmente no desean investigar
dichas condiciones extra&ntilde;as debido simplemente a la
falta de tiempo y de voluntarios, y puede que
respondan diciendo simplemente que dicha opci&oacute;n de
compilaci&oacute;n no se encuentra soportada.</para>
</listitem>
<listitem>
<para>Si se trata de un problema del kernel, prep&aacute;rese
para proporcionar la siguiente informaci&oacute;n. (No es
necesario incluir esta informaci&oacute;n por defecto, puesto
que lo &uacute;nico que produce es un crecimiento desmesurado
de la base de datos GNATS, pero s&iacute; puede merecer la
pena incluir res&uacute;menes que usted considere
importantes):</para>
<itemizedlist>
<listitem>
<para>La configuraci&oacute;n del kernel (incluyendo los
dispositivos hardware que se tienen
instalados)</para>
</listitem>
<listitem>
<para>Si se tienen opciones de depuraci&oacute;n activadas
(tales como <literal>WITNESS</literal>), y en tal
caso, si el problema persiste cuando se cambia el
valor de dichas opciones</para>
</listitem>
<listitem>
<para>Una traza de depuraci&oacute;n, si se pudo
generar.</para> </listitem>
<listitem>
<para>El hecho de que se ha leido detenidamente el
archivo <filename>src/UPDATING</filename> para
constatar que el problema no se ha identificado
all&iacute; (se garantiza que algui&eacute;n le
preguntar&aacute; sobre este punto)</para>
</listitem>
<listitem>
<para>Si se puede o no se puede ejecutar otro kernel
sin problemas (se trata de identificar problemas
relacionados con el hardware como discos con
errores o CPUs sobrecalentadas, que pueden
confundirse f&aacute;cilmente con problemas del
kernel)</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Si se trata de un problema relacionado con los
ports, prep&aacute;rese para poder proporcionar la
informaci&oacute;n que se muestra a continuaci&oacute;n. (No
es necesario incluir esta informaci&oacute;n por defecto, ya
que s&oacute;lo produce un crecimiento indeseado de la base de
datos, pero s&iacute; se pueden incluir res&uacute;menes de
aquellos datos que usted considere relevantes):</para>
<itemizedlist>
<listitem>
<para>Los ports que se tiene instalados</para>
</listitem>
<listitem>
<para>Cualesquiera variables de entorno que
sobreescriban los valores por defecto del archivo
<filename>bsd.port.mk</filename>, tales como
<makevar>PORTSDIR</makevar></para>
</listitem>
<listitem>
<para>El hecho de que se ha leido
<filename>ports/UPDATING</filename> y que nuestro
problema no se encuentra identificado en dicho
archivo (se garantiza que alguien puede preguntar
este hecho).</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para><emphasis>Evitar peticiones de caracter&iacute;sticas
vagas.</emphasis> Los PRs del estilo de
<quote>alguien deber&iacute;a implementar algo que haga
esto y aquello y lo de m&aacute;s all&aacute;</quote> son
informes con pocas probabilidades de obtener resultados
positivos. Las caracter&iacute;sticas deben ser muy concretas y
espec&iacute;ficas. Recuerde que el c&oacute;digo fuente se
encuentra disponible para todo el mundo, de tal forma que si usted
necesita una caracter&iacute;stica, la mejor forma de verla
incluida en futuras versiones de la herramienta consiste
en ponerse usted mismo a trabajar sobre ella, manos a la
obra. Tambi&eacute;n tenga en cuenta que para discutir este tipo
de problemas resulta m&aacute;s adecuado utilizar la lista
<literal>freebsd-questions</literal>, como ya se ha
comentado anteriormente.</para>
</listitem>
<listitem>
<para><emphasis>Aseg&uacute;rese que nadie m&aacute;s ha enviado un
PR similar.</emphasis> Aunque esto ya se ha mencionado
anteriormente, merece la pena que se repita en este punto.
S&oacute;lamente lleva uno o dos minutos realizar una
b&uacute;squeda basada en un motor web en <ulink
url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query"></ulink>.
(Por supuesto, a todo el mundo se le puede olvidar
realizar esto de vez en cuando, pero por esa misma raz&oacute;n
merece la pena hacer incapi&eacute; en ello)</para></listitem>
<listitem>
<para><emphasis>Evite peticiones controvertidas.</emphasis>
Si nuestro PR se dirige hacia un &aacute;rea o tema controvertido
en el pasado, debemos prepararnos no s&oacute;lo a ofrecer
parches, si no tambi&eacute;n a justificar por qu&eacute; motivo
los parches proporcionados son la <quote>Forma Correcta de
Hacerlo</quote>. Como se avis&oacute; anteriormente, una
b&uacute;squeda meticulosa en las listas de correo en los
archivos hist&oacute;ricos sitos en <ulink
url="http://www.FreeBSD.org/search/search.html#mailinglists"></ulink>
resulta siempre una buena idea y sirve para preparar
nuestro razonamiento y aprender de la experiencia y de las
decisiones tomadas en el pasado.</para> </listitem>
<listitem>
<para><emphasis>Sea educado.</emphasis>
Casi cualquier persona que se encarge de tratar nuestro
informe de problemas trabajar&aacute; en el como un voluntario.
A nadie le gusta que le digan c&oacute;mo hacer las cosas cuando
ya se est&aacute;n haciendo de una forma determinada,
especialmente cuando la motivaci&oacute;n para realizarlas no es
monetaria. Este hecho es bueno tenerlo en mente y
aplicarlo para cualquier proyecto de Software
Libre.</para> </listitem> </itemizedlist>
</section>
<section>
<title>Antes de comenzar.</title>
<para>Antes de ejecutar el programa &man.send-pr.1;, aseg&uacute;rese
de que la variable de entorno <envar>VISUAL</envar> (o
<envar>EDITOR</envar> si la variable <envar>VISUAL</envar> no
se encuentra definida) se encuentra apuntando a algo con
sentido.</para>
<para>Es importante comprobar que la entrega de correo funciona
correctamente. &man.send-pr.1; utiliza mensajes de correo para
enviar y realizar un seguimiento de los informes de problemas.
Si no se puede generar correo electr&oacute;nico desde la
m&aacute;quina en la que se ejecuta &man.send-pr.1;, el informe
jam&aacute;s llegar&aacute; a la base de datos GNATS.
Si quiere saber m&aacute;s sobre la
configuraci&oacute;n del correo en &os; consulte el cap&iacute;tulo de
<quote>Correo Electr&oacute;nico</quote> del manual de &os; en <ulink
url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/mail.html">
</ulink>.</para>
</section>
<section>
<title>Adjuntar parches o archivos</title>
<para>El programa &man.send-pr.1; posee la capacidad de adjuntar
archivos al informe de problemas. Se pueden adjuntar tantos
archivos como se quiera siempre y cuando se utilice un nombre
distinto para cada archivo (e.g. el nombre del archivo despu&eacute;s
de eliminar el path). Simplemente basta con utilizar la opci&oacute;n
<option>-a</option> de l&iacute;nea de comandos para especificar los
nombres de todos los archivos que se desean adjuntar:</para>
<screen>&prompt.user; <userinput>send-pr -a /var/run/dmesg -a /tmp/errors</userinput></screen>
<para>No se preocupe por los archivos binarios, dichos archivos
se codifican autom&aacute;ticamente para no interferir con el agente
de correo.</para>
<para>Si se adjunta un parche, aseg&uacute;rese que se utiliza la
opci&oacute;n <option>-c</option> o la opci&oacute;n
<option>-u</option> de &man.diff.1; para crear un contexto
unificado (el contexto suele ser el preferido por quienes lo han de
recibir) y adem&aacute;s aseg&uacute;rese de especificar
los n&uacute;meros de revisi&oacute;n de CVS de los archivos que se
modifican para que los desarrolladores que lean el informe
puedan aplicar dichos parches f&aacute;cilmente. Para problemas
relacionados con el kernel o con las utilidades del sistema
base, se prefiere un parche contra &os.current; (la rama HEAD
del &aacute;rbol CVS) ya que cualquier c&oacute;digo nuevo debe
probar se primeramente en dicha rama. Despu&eacute;s de comprobar su
correcto funcionamiento de una forma sustancial y extensa,
eventualmente dicho c&oacute;digo pasar&aacute; a formar parte de
&os.stable;, mediante uni&oacute;n o migraci&oacute;n.</para>
<para>Si se env&iacute;a un parte en l&iacute;nea, en vez de como
adjunto, tenga en cuenta que el principal problema de esta forma de
enviar los parches es que, dependiendo del lector de correo
utilizado, algunos lectores muestran los tabuladores como
espacios, lo cual arruina completamente el formato y la
indentaci&oacute;n del parche, e invalida totalmente un parche que
forme parte de un Makefile.</para>
<para>Tambi&eacute;n tenga en cuenta que mientras que la
inclusi&oacute;n de parches en un PR se considera como algo
positivo&mdash;particularmente cuando se soluciona el problema
que describe el informe&mdash;partes grandes y especialmente
c&oacute;digo nuevo que puede requerir una sustancial revisi&oacute;n
antes de ser aplicado deber&iacute;a hacerse accesible a trav&eacute;s
de otros medios, como p&aacute;ginas web o servidores de ftp, y
en vez de incluir el parche en el informe se puede incluir la URL.
Los parches de gran tama&ntilde;o en los correos electr&oacute;nicos
tienden a mezclarse o partirse, especialmente cuando GNATS los trata,
y cuanto m&aacute;s grande es el parche m&aacute;s dif&iacute;cil
resulta recuperar el original. Tambi&eacute;n existe una ventaja
a&ntilde;adida a la inclusi&oacute;n del parche a trav&eacute;s de una
URL, ya que de este modo se puede modificar el parche sin tener que
reenviar el informe como una respuesta al informe inicial.</para>
<para>Se debe prestar atenci&oacute;n tambi&eacute;n al hecho de que, a
menos que se especifique expl&iacute;citamente lo contrario en el PR o
en el propio parche, cualquier parche enviado se supone
licenciado bajo los mismos t&eacute;rminos y condiciones que el
archivo original que modifica.</para> </section>
<section>
<title>Rellenar la plantilla</title>
<para>Cuando se ejecuta &man.send-pr.1; se nos presenta en
pantalla una plantilla. Esta plantilla consiste en una lista
de campos, algunos de los cuales se encuentran ya rellenados,
mientras que otros poseen comentarios donde se explica su
prop&oacute;sito o se comentan los valores aceptables. No se preocupe
por los comentarios, puesto que se borran autom&aacute;ticamente
antes de generar el informe.</para>
<para>Al comienzo de la plantilla, justo debajo de las l&iacute;neas de
<literal>SEND-PR:</literal>, se encuentran las cabeceras de
correo electr&oacute;nico. Dichas cabeceras normalmente no se tienen
que modificar, a menos que se est&eacute; rellenando el informe desde
una m&aacute;quina que puede enviar correo pero no puede recibirlo
directamente, en cuyo caso usted tendr&aacute; que editar los campos
<literal>From:</literal> y <literal>Reply-To:</literal> para
escribir la direcci&oacute;n de correo v&aacute;lida. Tambi&eacute;n
puede enviarse una copia a usted mismo o a cualquier otra persona
rellenando el campo <literal>Cc:</literal>.</para>
<para>A continuaci&oacute;n aparecen una serie de campos de una sola
l&iacute;nea:</para>
<itemizedlist>
<listitem>
<para><emphasis>Submitter-Id:</emphasis> No cambie este
campo. El valor por defecto
<literal>current-users</literal> es correcto, incluso si
se est&aacute; ejecutando &os.stable;.</para> </listitem>
<listitem>
<para><emphasis>Originator:</emphasis> Se rellena
autom&aacute;ticamente con el campo <literal>gecos</literal> del
usuario que est&aacute; actualmente dentro del sistema. Por
favor, especifique su nombre real, opcionalmente
acompa&ntilde;ado por su direcci&oacute;n de correo
electr&oacute;nico entre &lt; &gt;.</para> </listitem>
<listitem>
<para><emphasis>Organization:</emphasis> Escriba lo que
usted quiera. Este campo no se utiliza para nada
significativo.</para> </listitem>
<listitem>
<para><emphasis>Confidential:</emphasis> Esto se rellena
autom&aacute;ticamente con el literal <literal>no</literal>.
Cambiar este valor carece de sentido ya que no existe
ning&uacute;n informe de problemas de &os; confidencial&mdash;la
base de datos de PR se distribuye a todo el mundo de forma
p&uacute;blica mediante <application>CVSup</application>.</para>
</listitem>
<listitem>
<para><emphasis>Synopsis:</emphasis> Rellene este campo con
una descripci&oacute;n corta y precisa del problema. La sinopsis
se utiliza como subject del correo electr&oacute;nico del informe
de problemas, y tambi&eacute;n se utiliza en los listados y
res&uacute;menes de informes de la base de datos; informes de
problemas con obscuras sinopsis tienden a ser
completamente ignorados.</para>
<para>Como se avis&oacute; anteriormente, si su informe de
problemas incluye un parche, por favor incluya en la
sinopsis la etiqueta <literal>[patch]</literal> al
comienzo; si usted es un mantenedor de software, tambi&eacute;n
puede a&ntilde;adir la cadena <literal>[maintainer
update]</literal> y asignar el campo <quote>Class</quote>
del informe al valor
<literal>maintainer-update</literal>.</para> </listitem>
<listitem>
<para><emphasis>Severity:</emphasis> Los valores aceptados
son <literal>non-critical</literal>,
<literal>serious</literal> o <literal>critical</literal>.
No sea exagerado; evite etiquetar el problema como
<literal>critital</literal> a menos que sea realmente algo
cr&iacute;tico (e.g. escalada de permisos hacia
<username>root</username>, kernel panic f&aacute;cilmente
reproducible). Incluso debe pensarse detenidamente
etiquetar algo como <literal>serious</literal> a menos que
se trate de algo que afecte a muchos usuarios (problemas
con drivers de dispositivos particulares o con utilidades
del sistema). Los desarrolladores de &os; no van a
resolver el problema m&aacute;s r&aacute;pido por el hecho de
variar esta etiqueta, debido a que existe mucha gente que infla
este campo inadecuadamente. De hecho, los desarrolladores
prestan muy poca atenci&oacute;n al valor de este campo y del
siguiente precisamente por esto &uacute;ltimo.</para> </listitem>
<listitem>
<para><emphasis>Priority:</emphasis> Los valores aceptados
son <literal>low</literal>, <literal>medium</literal> o
<literal>high</literal>. <literal>high</literal> debe
reservarse para problemas que afecten a la mayor&iacute;a de los
usuarios de &os; y <literal>medium</literal> para aquellos
problemas que afecten a varios usuarios.</para>
</listitem>
<listitem>
<para><emphasis>Category:</emphasis> Seleccione uno de los
siguientes valores (extra&iacute;dos de
<filename>/usr/gnats/gnats-adm/categories</filename>):</para>
<itemizedlist> <listitem>
<para><literal>advocacy:</literal> para problemas
relacionados con la imagen p&uacute;blica de &os;. Raras veces
utilizado.</para> </listitem>
<listitem>
<para><literal>alpha:</literal> para problemas
espec&iacute;ficos de la plataforma Alpha.</para> </listitem>
<listitem>
<para><literal>amd64:</literal> para problemas
espec&iacute;ficos de la plataforma AMD64.</para> </listitem>
<listitem>
<para><literal>bin:</literal> para problemas con
aplicaciones de la zona de usuario del sistema
base.</para> </listitem>
<listitem>
<para><literal>conf:</literal> para problemas de
archivos de configuraci&oacute;n, valores por defecto,
etc.</para> </listitem>
<listitem>
<para><literal>docs:</literal> para problemas con las
p&aacute;ginas de manual o la documentaci&oacute;n online.
</para> </listitem>
<listitem>
<para><literal>gnu:</literal> para problemas
realacionados con aplicaciones gnu de &os; tales como
&man.gcc.1; o &man.grep.1;.</para> </listitem>
<listitem>
<para><literal>i386:</literal> para problemas
espec&iacute;ficos de la plataforma &i386;.</para> </listitem>
<listitem>
<para><literal>ia64:</literal> para problemas
espec&iacute;ficos de la plataforma ia64.</para> </listitem>
<listitem>
<para><literal>java:</literal> para problemas
relacionados con &java;.</para> </listitem>
<listitem>
<para><literal>kern:</literal> para problemas
relacionados con el kernel o con (no especif&iacute;cos de
ninguna plataforma) controladores de
dispositivos.</para> </listitem>
<listitem>
<para><literal>misc:</literal> para cualquier cosa que
no encaja en ninguna de las anteriores categor&iacute;as.
(Tenga en cuenta que es muy f&aacute;cil que los problemas
bajo esta categor&iacute;a se pierdan en el olvido).</para>
</listitem>
<listitem>
<para><literal>ports:</literal> para problemas
relacionados con el &aacute;rbol de ports.</para> </listitem>
<listitem>
<para><literal>powerpc:</literal> para problemas
espec&iacute;ficos de la plataforma &powerpc;.</para>
</listitem>
<listitem>
<para><literal>sparc64:</literal> para problemas
espec&iacute;ficos de la plataforma &sparc64;.</para>
</listitem>
<listitem>
<para><literal>standards:</literal> para problemas
relativos a la adecuaci&oacute;n con est&aacute;ndares.</para>
</listitem>
<listitem>
<para><literal>threads:</literal> para problemas
relacionados con la implementaci&oacute;n de threads de &os;
(especialmente en &os.current;).</para> </listitem>
<listitem>
<para><literal>www:</literal> para cambios o mejoras
del sitio web de &os;.</para> </listitem>
</itemizedlist> </listitem>
<listitem>
<para><emphasis>Class:</emphasis> Se puede seleccionar uno
entre los siguientes:</para>
<itemizedlist>
<listitem>
<para><literal>sw-bug:</literal> bugs de software.</para>
</listitem>
<listitem>
<para><literal>doc-bug:</literal> errores en la
documentaci&oacute;n.</para> </listitem>
<listitem>
<para><literal>change-request:</literal> peticiones de
caracter&iacute;sticas adicionales o de cambios en las
caracter&iacute;sticas existentes.</para> </listitem>
<listitem>
<para><literal>update:</literal> actualizaciones de
ports o de software contribuido por terceros.</para>
</listitem>
<listitem>
<para><literal>maintainer-update:</literal>
actualizaciones de ports de los cuales usted es
mantenedor.</para> </listitem> </itemizedlist>
</listitem>
<listitem>
<para><emphasis>Release:</emphasis> La versi&oacute;n de &os; que
se est&aacute; ejecutando. El programa &man.send-pr.1; rellena
autom&aacute;ticamente este campo, por lo que s&oacute;lamente
resulta necesaria su modificaci&oacute;n cuando estemos rellenando
un informe de problemas desde un sistema distinto al sistema
donde se ha producido dicho problema.</para> </listitem>
</itemizedlist>
<para>Por &uacute;ltimo, existen una serie de campos
multil&iacute;nea:</para>
<itemizedlist>
<listitem>
<para><emphasis>Environment:</emphasis> Este campo debe
describir, tan preciso como sea posible, el entorno en el
cual se ha observado el problema. Esto incluye la versi&oacute;n
del sistema operativo, la versi&oacute;n del programa
que contiene el problema y cualquier otro asunto relevante
tales como la configuraci&oacute;n del sistema o cualquier otro
software instalado que pueda influir en la ejecuci&oacute;n del
primero, etc. Resumiendo todo lo anterior, se debe
especificar todo lo que un desarrollador necesita conocer
para poder reconstruir el entorno en el cual se ha
producido el problema.</para> </listitem>
<listitem>
<para><emphasis>Description:</emphasis> Una descripci&oacute;n
completa y precisa del problema que se est&aacute; sufriendo.
Intente evitar especular sobre las posibles causas del
problema a menos que se tenga la seguridad de que el
camino descrito es el correcto, puesto que puede inducir
al desarrollador a realizar falsas presunciones.</para>
</listitem>
<listitem>
<para><emphasis>How-To-Repeat:</emphasis> Un resumen de las
acciones que deben llevarse a cabo para reproducir el
problema.</para> </listitem>
<listitem>
<para><emphasis>Fix:</emphasis> Preferentemente un parche, o
al menos una soluci&oacute;n temporal (la cual no s&oacute;lo
ayuda a otras personas que experimenten el mismo problema, sino
que puede ayudar tambi&eacute;n al desarrollador para que
investigue sobre las verdaderas causas del problema). No
obstante, si no se dispone de ninguna de estas opciones,
lo mas sabio es dejar vac&iacute;o este campo y sobre todo no
hacer especulaciones.</para> </listitem> </itemizedlist>
</section>
<section>
<title>Env&iacute;o del informe de problemas</title>
<para>Una vez que hemos terminado de rellenar la plantilla,
hemos salvado y hemos salido del editor, &man.send-pr.1; nos
dar&aacute; a conocer las siguientes opciones: <prompt>s)end, e)dit
or a)bort?</prompt>. Es en estos momentos cuando podemos
teclear <userinput>s</userinput> para continuar y enviar el
informe de problemas, <userinput>e</userinput> para relanzar
el editor y realizar m&aacute;s modificaciones a la plantilla o
<userinput>a</userinput> para abortar el programa. Si se
selecciona esta &uacute;ltima alternativa, el informe de problemas no
ser&aacute; destruido, sino que permanecer&aacute; en disco
(&man.send-pr.1; nos indicar&aacute; el nombre del fichero antes
de finalizar), de tal forma que se puede editar de forma individual
(sin &man.send-pr.1;) en cualquier momento, o tambi&eacute;n se
puede transferir a otro sistema con mejor conectividad para
finalmente enviarlo utilizando la opci&oacute;n <option>f</option> de
l&iacute;nea de comandos de &man.send-pr.1;:</para>
<screen>&prompt.user; <userinput>send-pr -f ~/my-problem-report</userinput></screen>
<para>Esto leer&aacute; el archivo especificado, validando sus
contenidos, y eliminar&aacute; los comentarios para finalmente
enviarlo.</para> </section>
</section>
<section id="pr-followup">
<title>Follow-up</title>
<para>Una vez enviado el informe de problemas, se recibe una
confirmaci&oacute;n por correo electr&oacute;nico en la que se incluye el
n&uacute;mero asignado al informe y la URL que puede utilizarse para
consultar su estado. Con un poquito de suerte, alguien mostrar&aacute;
inter&eacute;s en el problema y tratar&aacute; de solucionarlo, o de
explicar por qu&eacute; raz&oacute;n no se considera un problema,
como ha ocurrido en muchas ocasiones. Recibiremos
autom&aacute;ticamente una notificaci&oacute;n relativa a
cualquier cambio de estado, adem&aacute;s de recibir copias de
cualquier comentario o de los parches que se generen
relacionados con nuestro informe.</para>
<para>Si alguien solicita informaci&oacute;n adicional sobre el problema,
o de repente descubre o recuerda algo que no tuvo ocasi&oacute;n de
mencionar en el informe inicial, puede utilizar una de las
siguientes opciones para enviar una continuaci&oacute;n
(<quote>followup</quote>) a dicho informe:</para>
<itemizedlist>
<listitem>
<para>La forma m&aacute;s sencilla consiste en utilizar el enlace
followup que aparece en la p&aacute;gina web asociada a nuestro
informe de problemas, la cual se puede alcanzar a partir de
la p&aacute;gina de b&uacute;squedas de PRs en <ulink
url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query"></ulink>
. Al pinchar en dicho enlace se mostrar&aacute; una pantalla con
las l&iacute;neas de To: y Subject correctamente rellenadas (siempre
y cuando el navegador soporte esta caracter&iacute;stica de
autorelleno).</para> </listitem>
<listitem>
<para>Alternativamente, se puede enviar un correo eletr&oacute;nico
directamente a <email>bug-followup@FreeBSD.org</email>,
asegurando que el n&uacute;mero de seguimiento se incluye en el
asunto para que el sistema de seguimiento de informes pueda
adjuntar la respuesta al informe apropiado.</para>
<note>
<para>Si <emphasis>no</emphasis> se incluye el n&uacute;mero de
seguimiento, GNATS no reconocer&aacute; el informe inicial y
crear&aacute; un PR totalmente nuevo, que quedar&aacute; asignado
al administrador de GNATS, de tal forma que el followup
quedar&aacute; en el vac&iacute;o hasta que alguien resuelva el
entuerto, lo cual puede tardar dias o semanas.</para>
<para>Forma incorrecta:<programlisting>Subject: ese PR que
envi&eacute; en su d&iacute;a</programlisting> Forma
correcta:<programlisting>Subject: Re: ports/12345:
problema de compilaci&oacute;n en foo/bar</programlisting></para>
</note> </listitem>
</itemizedlist>
<para>Si el informe de problemas permanece abierto una vez que
dicho problema ha desaparecido, simplemente env&iacute;e un followup
(de la forma descrita anteriormente) diciendo que el informe de
problemas se puede cerrar y, a ser posible, tambi&eacute;n conviene
explicar la forma en que el problema se resolvi&oacute;.</para>
</section>
<section id="pr-further">
<title>Lecturas recomendadas</title>
<para>A continuaci&oacute;n se muestra una lista de recursos relacionados
con la escritura adecuada de informes y con el procesamiento de
dichos informes. No pretende ser una completa
enumeraci&oacute;n.</para>
<itemizedlist>
<listitem>
<para><ulink
url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">
How row to Report Bugs Effectively</ulink>&mdash;un
excelente ensayo por Simon G. Tatham sobre la redacci&oacute;n de
informes de problemas (el texto no es espec&iacute;fico sobre
&os;)</para>
</listitem>
<listitem>
<!--
<para><ulink
url="&url.articles.pr-guidelines;/article.html">Problem
Report Handling Guidelines</ulink>&mdash;resumen de valor
-->
<para><ulink
url="http://www.freebsd.org/doc/en/articles/pr-guidelines/article.html">Problem
Report Handling Guidelines</ulink>&mdash;resumen de valor
sobre c&oacute;mo los desarrolladores de &os; manejan y gestionan
los informes de problemas.</para>
</listitem>
</itemizedlist>
</section>
</article>