“No puedo mostrarte el problema ahora mismo.” Cuando una mujer se quejó a su esposo de que el ordenador de casa estaba roto, él le preguntó por qué no podía enseñárselo. Su desconcertante respuesta fue: “Porque hoy es miércoles.”
En 2009, la comunidad de Ubuntu se enfrentó a un misterioso problema del sistema. Varios usuarios descubrieron que la impresión de documentos desde OpenOffice fallaba de forma esporádica. La única pista inicial era que la impresión desde todas las demás aplicaciones funcionaba perfectamente, mientras que OpenOffice enviaba los trabajos directamente a un agujero negro. Como era de esperar, la mayoría de los desarrolladores centraron sus sospechas en la capa de aplicación, asumiendo que se trataba de un error de software en el propio OpenOffice.
Reinstalar el sistema no soluciona la maldición del martes
Algunos usuarios recurrieron a la solución definitiva: reinstalar el sistema operativo. Completaron la instalación un jueves y comprobaron que la impresión funcionaba sin problemas, creyendo que el asunto estaba resuelto. Sin embargo, dos semanas después, un martes, la impresora volvió a dejar de funcionar en silencio.
El problema no estaba en el código de OpenOffice. El verdadero culpable se encontraba en componentes más profundos del sistema. El sistema Linux utiliza el comando file para identificar el tipo de archivo, basándose en más de 1.600 reglas de patrones mágicos (magic patterns) mantenidas por la comunidad. Antes de imprimir, el sistema ejecuta file para verificar si el documento está en formato PostScript.
Figura: Conflicto entre la línea de fecha en el encabezado PostScript y la regla de magic pattern. Fuente: Diagrama propio
En 2001, se añadió una regla a la base de datos de file pensada para identificar archivos Erlang JAM. Debido a que se omitió el escape de un espacio, la cadena Tue dentro de la regla se convirtió en un patrón de coincidencia directa que tenía prioridad sobre la detección de PostScript. Como resultado, si un archivo contenía la cadena Tue, el sistema lo clasificaba erróneamente como un archivo de Erlang. Esto demuestra cómo un pequeño descuido en un componente de bajo nivel puede afectar a todo el sistema.
El calendario es el depurador más preciso
Cuando OpenOffice generaba un archivo de impresión PostScript un martes, el encabezado del archivo registraba automáticamente la fecha de creación, como %%CreationDate: (Tue ...). Al escanear el archivo, el comando file detectaba ese Tue, determinaba inmediatamente que no se trataba de un documento imprimible y rechazaba enviarlo a la impresora.
Figura: Un pequeño error de bajo nivel invalida el funcionamiento de las aplicaciones superiores. Fuente: Diagrama propio
Incluso hoy en 2026, esta historia de hace 15 años volvió a posicionarse en el segundo lugar de Lobsters. Los desarrolladores de la comunidad la consideran un caso de estudio clásico sobre metodologías de depuración. Demuestra que, en la ingeniería de software moderna, la dimensión del tiempo puede ser una variable clave al investigar fallos extraños.
En sistemas complejos no existen componentes insignificantes. Un solo espacio faltante en una regla de una herramienta básica detuvo por completo las impresoras. La próxima vez que encuentre un error que solo ocurre en días específicos, tal vez el calendario debería ser su primer depurador.
Enlaces de referencia:
- OpenOffice no imprime los martes
- Discusión en la comunidad Lobsters (s/im3eeh)