Etiquette in e-mail message quoting

This is a translation of my previous post Etiqueta en el citado de mensajes de e-mail.

Introduction

The most ignored Internet Etiquette rule is that of the posting style when replying to an e-mail message.

By «quoting» I mean the inclusion of a previous message in a new one (for example, a reply) with the intent of stating the relevance of the answer itself in the original context. I would say «Dan, I don’t know what are you talking about. Please quote the original e-mail in your reply next time in order to know what were you replying to.»

Almost every e-mail client do quote the original message in the reply, at least by default. That is good, and it contributes to the «netiquette», but its abuse has made it completely useless.

Sigue leyendo

Operación contraintuitiva de «patch»

Este es un ejemplo de lo que NO se debe hacer al diseñar un software.

[Sun Dec 20 14:37:42 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 24
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.bak
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.c
-rw-r--r-- 1 alvarezp alvarezp 7232 Dec 20 14:37 slpcall.c.2
 
[Sun Dec 20 14:37:43 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u slpcall.c slpcall.c.2 > p
 
[Sun Dec 20 14:37:57 -0800 -- alvarezp@octavio:~/patch-test]
$ cat p
--- slpcall.c	2009-12-20 14:37:36.000000000 -0800
+++ slpcall.c.2	2009-12-20 14:37:36.000000000 -0800
@@ -66,6 +66,11 @@
 
 	slpcall->slplink = slplink;
 
+	slpcall->wait_for_socket = FALSE;
+	slpcall->xfer = NULL;
+	slpcall->dc = NULL;
+	slpcall->branch = NULL;
+
 	msn_slplink_add_slpcall(slplink, slpcall);
 
 	slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall);
 
[Sun Dec 20 14:38:00 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u slpcall.bak slpcall.c # .bak is a backup of original
 
[Sun Dec 20 14:38:19 -0800 -- alvarezp@octavio:~/patch-test]
$ patch < p
patching file slpcall.c

Hasta aquí, todo bien.

[Sun Dec 20 14:38:53 -0800 -- alvarezp@octavio:~/patch-test]
$ cp slpcall.bak slpcall.c
 
[Sun Dec 20 14:39:02 -0800 -- alvarezp@octavio:~/patch-test]
$ mkdir x
 
[Sun Dec 20 14:39:04 -0800 -- alvarezp@octavio:~/patch-test]
$ mv slpcall* x/
 
[Sun Dec 20 14:39:06 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 8
-rw-r--r-- 1 alvarezp alvarezp  410 Dec 20 14:37 p
drwxr-xr-x 2 alvarezp alvarezp 4096 Dec 20 14:39 x
 
[Sun Dec 20 14:39:08 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u x/slpcall.c x/slpcall.c.2 > px
 
[Sun Dec 20 14:39:20 -0800 -- alvarezp@octavio:~/patch-test]
$ cat px
--- x/slpcall.c	2009-12-20 14:39:02.000000000 -0800
+++ x/slpcall.c.2	2009-12-20 14:37:36.000000000 -0800
@@ -66,6 +66,11 @@
 
 	slpcall->slplink = slplink;
 
+	slpcall->wait_for_socket = FALSE;
+	slpcall->xfer = NULL;
+	slpcall->dc = NULL;
+	slpcall->branch = NULL;
+
 	msn_slplink_add_slpcall(slplink, slpcall);
 
 	slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall);
 
[Sun Dec 20 14:39:22 -0800 -- alvarezp@octavio:~/patch-test]
$ patch < px
patching file slpcall.c.2
Hunk #1 FAILED at 66.
1 out of 1 hunk FAILED -- saving rejects to file slpcall.c.2.rej

¿La solución?

patch -p0 < px

Etiqueta en el citado de mensajes de e-mail

Introducción

Una regla de etiqueta en Internet muy ignorada es la del citado de mensajes al contestar un correo electrónico.

Al hablar de «citado» me refiero a la inclusión de un mensaje anterior dentro de uno nuevo (una respuesta, por ejemplo) con el objetivo de mantener la relevancia de la respuesta dentro del contexto original. Es decir, le diría a alguien: «Javier, no sé de qué hablas. La próxima vez cita en tu respuesta el mensaje original para saber a qué estás contestando.»

Prácticamente todos los clientes de correo electrónico citan el mensaje que es objeto de respuesta, al menos por defecto. Eso es bueno y contribuye con la etiqueta, pero ha desencadenado un abuso de esta regla que la vuelve totalmente inútil.

Al decir que la regla es «ignorada», me refiero a que el usuario común no edita el texto citado por el cliente de correo. Deja que su programa cite el mensaje original ignorando el texto resultante. Después de 3 iteraciones de respuesta, el «mensaje original» contiene más basura que contenido relevante.

Y los clientes de correo electrónico —como Outlook y Thunderbird— tampoco ayudan; son demasiado tontos. Citan lo que se encuentran. Si bien, el propósito es dejarte el mensaje original listo para su *edición* durante la respuesta, lo cierto es que incluyen hasta las firmas y los legales odiosos.

Bien, más allá de la queja, el propósito de este artículo es mostrar las técnicas de citado y respuesta existentes, pero sobre todo, expresar mi añoranza por un estilo que usaba hace 15 años, incluso antes de la proliferación de Internet en esta ciudad.

La etiqueta bien aplicada a una respuesta o forward de correo electrónico permite un mensaje relativamente organizado y se compone de dos elementos: (a) la correcta colocación de la respuesta en relación al mensaje citado y (b) la correcta edición del mensaje citado.

Colocación de la respuesta en relación al mensaje citado

La mejor manera de explicar lo que es, es mencionando los tres diferentes estilos y la diferencia entre ellos: publicación superior (top-posting), inferior (bottom-posting) e intercalado (interposting or inline-posting). Corresponde a colocar la respuesta arriba del mensaje original, abajo, o intercalando las respuestas a los diferentes temas del texto.

Ejemplo A: publicación superior (top-posting)
Sí y la voy a realizar yo.

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
Ejemplo B: publicación inferior (bottom-posting)
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx

Sí y la voy a realizar yo.
Ejemplo C: respuestas intercaladas (inline-posting)
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?

Sí.

>
> Quién la va a realizar?

Yo.

> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx

¿Cuál consideran que es mejor? La respuesta puede variar según el entorno, pues tienen pros y contras. ¿Cuáles consideras que son los pros y contras de cada uno?

En las listas de correo, por ejemplo, el escrito superior está más que prohibido, a favor del escrito inferior (o mejor aún, el intercalado). Este se ha venido manejando incluso desde antes de la existencia del «correo electrónico» como se conoce hoy en día.

Sin embargo, en los negocios y el uso común, lo más popular es el estilo «superior», debido a que es más fácil «escribir y mandar» sin preocuparse por más; esto ha llevado a que los clientes de correo electrónico más populares vengan preconfigurados de esa manera, lo que a su vez lo populariza aún más.

Correcta edición del mensaje citado

El ejemplo anterior de mensaje intercalado deja al descubierto la inutilidad de una gran parte del texto de respuesta. Se considera que el texto citado forma parte de la respuesta, pues pertenece al mismo mensaje y ocupa espacio en disco como parte de la misma.

Tomaré el ejemplo de intercalado expuesto arriba como caso de análisis, pero esto aplica a cualquiera de los tres estilos de colocación de respuesta.

A partir de la palabra «saludos» es texto irrelevante (y por ende, inútil). Tal vez podríamos argumentar que la línea «Octavio:» también es texto irrelevante, pero no seamos tan quisquillosos en este momento. En números, son inútiles 8 de 21 líneas (38%); 25 de 59 palabras (42%); 161 de 373 caracteres (43%). Hay que considerar que falta mi propia firma, lo cual disminuirá ligeramente estos porcentajes.

Ejemplo D: Correcto citado en publicación superior
Sí y lo voy a realizar yo.

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
Ejemplo E: Correcto citado en publicación inferior
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>

Sí y lo voy a realizar yo.
Ejemplo F: Correcto citado en publicación intercalada.
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?

Sí.

> Quién la va a realizar?

Yo.

El argumento principal para no editar el texto podría ser que es muy ineficiente y tardado hacerlo. Lo que en mi barrio le llamamos «hueva».

Este será el argumento que den aquellas personas que no conozcan los atajos de teclado para edición, en particular el uso de la tecla Shift como un estándar no escrito para marcar texto. Usando Shift y las flechas seguido de la tecla «Delete», es sumamente fácil marcar y eliminar texto inútil.

Añorando Blue Wave y FidoNet

Antes de tocar el tema de las interfaces de usuario y los dispositivos móviles, me tomaré un momento para externar mi más sincera añoranza por los tiempos en los que escribía en FidoNet, antes de la presencia popular de Internet en Tijuana (1994 a 1996).

En FidoNet, la costumbre era un tanto distinta. En ese entonces usaba un shareware popular llamado Blue Wave Offline Reader. Muchos usábamos Blue Wave, que tenía un estilo especial de preparar el citado antes de enviarlo a edición:

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 HT>
 HT> Quién la va a realizar?
 HT>
 HT> Saludos.
 HT>
 HT> ---
 HT> Hitsuo Tikashi.
 HT> Coord. de Servicios de Infraestructura.
 HT> Sistemas Integrados.
 HT> T. +52 (664) 555-1234
 HT> E. hitsuo.tikashi@sistint.com.mx

Lo interesante no está en el intercalado, pues entonces como hoy, con un par de Enters tenía una respuesta intercalada.

Y para borrar a partir de «Saludos», tal como hoy: me coloco en la letra «S» de «Saludos» y en dos pasos: Shift+Ctrl+End, Delete, y listo: mensaje limpio.

Y entonces yo contestaba:

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?

 Así es. Aunque el mantenimiento no está considerado de carácter crítico,
 en caso de posible falla afectaremos los acuerdos de nivel de servicio,
 pues hace menos de 30 días hubo otra falla por parte de nuestros
 proveedores.

 HT> Quién la va a realizar?

 Yo.

Lo realmente interesante es que cuando el susodicho remitente intentara contracontestar mi respuesta, el texto era automáticamente ajustado a la longitud de la línea y citado de la siguiente manera:

El Vie, 26 Jun 2009 17:42:34 -0700, Octavio Alvarez dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 OA>
 OA> Así es. Aunque el mantenimiento no está considerado de carácter
 OA> crítico, en caso de posible falla afectaremos los acuerdos de
 OA> nivel de servicio, pues hace menos de 30 días hubo otra falla por
 OA> parte de nuestros proveedores.

 Enterado. Te encargo el changarro y mantenme informado.

 HT> Quién la va a realizar?
 OA>
 OA> Yo.

 ¿Quién estará monitoreando los servicio al siguiente día?

En el ejemplo, el usuario ya intercaló su respuesta hacia mí.

Puede apreciarse cómo las líneas del texto no corresponden a las líneas originales: fueron modificadas inteligentemente, siendo consideradas como un párrafo y ajustadas para mantener un bloque sólido y consistente de texto.

Puede verse cómo el texto es sumamente claro y fácil de seguir; aún más, si el lector y el editor se encargaban de poner en diferentes colores a los diferentes autores.

Este estilo, además de ordenado es escalable. Después de múltiples iteraciones, el texto y el formato se mantienen en orden.

El Vie, 26 Jun 2009 17:42:34 -0700, Octavio Alvarez dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 OA>
 OA> Así es. Aunque el mantenimiento no está considerado de carácter
 OA> crítico, en caso de posible falla afectaremos los acuerdos de
 OA> nivel de servicio, pues hace menos de 30 días hubo otra falla por
 OA> parte de nuestros proveedores.
 HT>
 HT> Enterado. Te encargo el changarro y mantenme informado.
 OA>
 OA> Ok. Le enviaré un mensaje a su celular, según el procedimiento.

 Y además mándamelo por correo, por favor.
 
 HT> Quién la va a realizar?
 OA>
 OA> Yo.
 HT>
 HT> ¿Quién estará monitoreando los servicio al siguiente día?
 OA> 
 OA> Estará el compañero nuevo, pero ya hablé con los demás para que
 OA> estén al pendiente de caulqueir eventualidad.

 ¿Ya intercambiaron números de teléfono?

Desde mi punto de vista esto es mucho más inteligente que su popularizada contraparte:

El Lun, 29 Jun 2009 17:42:34 -0700, Octavio Alvarez <alvarezp@alvarezp.ods.org> dijo:
> El Dom, 28 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> > El Sab, 27 Jun 2009 17:42:34 -0700, Octavio Alvarez <alvarezp@alvarezp.ods.org> dijo:
> > > El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi <hitsuo.tikashi@sistint.com.mx> dijo:
> > > > Octavio:
> > > >
> > > > El mantenimiento es la madrugada del próximo jueves?
> > >
> > > Así es. Aunque el mantenimiento no está considerado de carácter
> > > crítico, en caso de posible falla afectaremos los acuerdos de
> > > nivel de servicio, pues hace menos de 30 días hubo otra falla por
> > > parte de nuestros proveedores.
> >
> > Enterado. Te encargo el changarro y mantenme informado.
>
> Ok. Le enviaré un mensaje a su celular, según el procedimiento.

Y además mándamelo por correo, por favor.
 
> > > > Quién la va a realizar?
> > >
> > > Yo.
> >
> > ¿Quién estará monitoreando los servicio al siguiente día?
> 
> Estará el compañero nuevo, pero ya hablé con los demás para que estén
> al pendiente de caulqueir eventualidad.

¿Ya intercambiaron números de teléfono?

Esto es lo mejor que un mensaje de correo electrónico puede dar. No está tan mal, asumiendo que el autor haya seguido la etiqueta.

De no ser así, nos encontramos con:

  • Prefijos de cita como el siguiente: > >> > >>> >
  • Líneas partidas por exceder una cierta longitud.
  • Mensajes citados en su totalidad, incluyendo párrafos irrelevantes.
  • Mensajes llenos de firmas y bloques de textos de información legal (a veces en dos idiomas por mensaje).

Aunque mejor que lo que se ve día a día, dista mucho de la comodidad de trabajar con el estilo de Blue Wave / FidoNet.

De interfaces de usuario

Los clientes de correo electrónico son realmente deficientes en promover la cultura de la etiqueta en el correo electrónico.

Considero que podría existir un mecanismo en los clientes de correo electrónico para detectar la firma del remitente y excluirla del mensaje citado. Esto ahorraría que después de tres respuestas, la respuesta contuviera tres copias del mismo rollo:

> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
>
> El contenido de este mensaje de correo, así como sus anexos pueden ser
> confidenciales y estar protegidos por derechos de autor. Están dirigidos
> única y exclusivamente para uso de el (los) destinatario(s). Si Usted
> lo ha recibido por error debe destruirlo de su sistema. No se permite
> copiar, ni imprimir, ni distribuir este correo o sus anexos, ni usarlos
> para propósito alguno ni dar a conocer su contenido a persona alguna.
> La información aquí contenida no necesariamente refleja la opinión
> o postura de [NOMBRE DE LA EMPRESA] ni sus subsidiarias, afiliadas
> o alianzas.
>
> Por favor piense en el planeta antes de imprimir este mensaje.

(Nota: la última línea la he visto en algunos mensajes de correo y la he incluído sólo porque al imaginarme ese llamado a la ecología al lado de ese derroche de energía eléctrica y espacio en disco que suele estar en HTML, no puedo evitar contener mi deficiente sentido del sarcasmo.)

Los dispositivos móviles

En una pantalla de 160×320 y un teclado miniatura uno podría argumentar que es difícil realizar toda esta edición de mensaje de forma práctica. Sin embargo, del mismo modo en el que los dispositivos móviles presentan al usuario interfaces apropiadas para realizar otras tareas, es en la interfaz donde radica la facilidad o dificulad de realizar estas ediciones.

De ser popular el intercalado, un dispositivo móvil contaría con una función para «contestar el siguiente bloque o párrafo» o tal vez para «navegar por párrafo» y escoger «contestar», «dejar» o «eliminar» cada uno de ellos hasta una opción para «borrar el resto del texto».

Si la interfaz no lo contiene, es porque el intercalado no fue lo suficientemente popular y hoy en día no se demanda lo suficiente.

Conclusiones

He tratado de mostrar cómo el estilo del ejemplo F es el más ordenado, organizado y escalable de todos, basado en la experiencia previa de Blue Wave y FidoNet.

Personalmente, trato de respetar el estilo que la mayoría de la población utilice en un contexto dado. Es lo mejor. Una persona que contesta con intercalado en una lista donde todos contestan arriba del mensaje original (por ejemplo, en el trabajo) sólo provocaría confusión para todos.

No me queda más que hacer el llamado a quienes participan en grupos de discusión, listas de correo (en especial a los de áreas más técnicas) que al menos entre nosotros mismos sigamos estas reglas de etiqueta:

  • Intercalar nuestras respuestas en el mensaje original.
  • Eliminar las partes irrelevantes del mensaje citado, en especial firmas y párrafos legales.
  • Reacomodar los párrafos que se vuelvan ilegibles.
  • Evitar vicios de escritura.
  • Apoyar nuestro texto con los emoticones en caso de que pudiera prestarse a confusión.

Gracias por la paciencia de leer hasta aquí.

Remplazo interactivo en vim

Una nota rápida para que no se me olvide la siguiente vez.

Para remplazar texto en vim, confirmando cada remplazo, basta con agregar la opción «c» al comando «s».

Si nuestro comando original era %s/viejo/nuevo/g entonces se usa %s/viejo/nuevo/gc.

Cada posible remplazo se sombrea y vim solicita confirmación con las siguientes opciones:

y = yes, remplazar el texto sombreado.
n = no, ignorar el texto sombreado.
a = all, siempre sí remplazar todo.
l = last, cambiar el actual y terminar.
q = quit, ignorar el actual y terminar.
^E = desplazar el texto hacia adelante (para ver más texto).
^Y = desplazar el texto hacia atrás.

Fuente:
Vim tips: The basics of search and replace

Superkb 0.20

Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key). Haz clic para ver la imagen completa.

Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key)

Ha habido mucho trabajo en esta versión y lo más notable es el soporte para pintar el teclado usando Cairo.

Cualquier falla que encuentren, por favor levanten un bug en el sistema de seguimiento de bugs, o bug tracking system. Al levantar un caso de bug, todo queda escrito y no se nos van a olvidar las cosas. Lo más importante es que el caso o bug quedará documentado para evitar que usuarios y desarrollador(es) trabajemos doble.

Por supuesto, lo anterior no quita que podamos platicar y discutir en #superkb en irc.freenode.net.

Quiero agradecer al Grupo de Usuarios de Linux de Tijuana por la retroalimentación sobre Superkb, sobre todo estos últimos días, en particular a:

  • IsReal, por el post en su blog y usar Superkb para aprender a hacer paquetes RPM. Si tendremos uno para la 0.20 será gracias a él. Update: Ya tenemos paquete para Fedora Core 12! Gracias, IsReal.
  • aduarte, por las eternas recomendaciones.
  • biker, por intentar incansablemente de instalarlo por más que le falle. Al ver los errores he podido corregirlos.
  • y me faltó juan_arandaalva, por la ayuda con Cairo (que al final resultó ser una tontería).

Bien, los recursos y descargas están donde siempre: en la página de Superkb en este blog y en el sitio oficial.

De cualquier manera, cito todo eso aquí: