Cuáles son los mejores ejemplos de bugs de software que se convirtieron en características (aka misbugs)?

Según Rob Pike, el comportamiento de UNIX de ocultar los archivos cuyos nombres comienzan con un punto fue en realidad un error.

Una lección sobre atajos.

Hace mucho tiempo, cuando se estaba trabajando en el diseño del sistema de archivos de Unix, aparecieron las entradas . y .., para facilitar la navegación. No estoy seguro, pero creo que .. apareció durante la reescritura de la versión 2, cuando el sistema de archivos se volvió jerárquico (al principio tenía una estructura muy diferente). Sin embargo, cuando uno tecleaba ls, estos archivos aparecían, así que Ken o Dennis añadieron una simple prueba al programa. Entonces estaba en ensamblador, pero el código en cuestión equivalía a algo así:
if (nombre[0] == ‘.’) continue;
Esta declaración era un poco más corta de lo que debería haber sido, que es
if (strcmp(nombre, «.») == 0 || strcmp(nombre, «..») == 0) continue;
pero oye, era fácil.

El resultado fueron dos cosas.

Primero, se sentó un mal precedente. Muchos otros programadores perezosos introdujeron errores al hacer la misma simplificación. Los archivos reales que comienzan con puntos se saltan a menudo cuando deberían ser contados.

Segundo, y mucho peor, se creó la idea de un archivo «oculto» o «punto». Como consecuencia, los programadores más perezosos empezaron a soltar archivos en el directorio personal de todo el mundo. No tengo muchas cosas instaladas en la máquina que estoy usando para escribir esto, pero mi directorio personal tiene unos cien archivos «dot» y ni siquiera sé qué son la mayoría de ellos o si todavía son necesarios. Cada evaluación de nombres de archivos que pasa por mi directorio personal se ve ralentizada por este lodo acumulado.

Estoy bastante seguro de que el concepto de archivo oculto fue una consecuencia no intencionada. Ciertamente fue un error.

¿Cuántos errores y ciclos de CPU desperdiciados y casos de frustración humana (por no mencionar el mal diseño) han resultado de ese pequeño atajo hace unos 40 años?

Tenga eso en mente la próxima vez que quiera cortar una esquina en su código.

(Para aquellos que objetan que los archivos de puntos sirven para un propósito, no lo discuto pero contesto que son los archivos los que sirven para el propósito, no la convención para sus nombres. Podrían estar fácilmente en /cfg o /lib, que es lo que hicimos en el Plan 9, que no tenía archivos de puntos. Se pueden aprender lecciones.)

https://plus.google.com/101960720994009339267/posts/R58WgWwN9jp