6 Ejemplos En Los Que Un Bug Se Volvió Una Característica En La Historia Del Software (Misbugs)



Un bug represente un defecto en un programa, pero hay casos en los que generan consecuencias involuntarias que los usuarios utilizan de una manera que al desarrollador originalmente no se le ocurrió, también llamado misbugs. Algunos bugs se gradúan de ser defectos a características completamente soportadas oficialmente. Veamos algunos ejemplos notables en la industria del software:

1. La Velocidad Incremental en Space Invaders


En el juego Space Invaders original, la velocidad del juego se incrementaba mientras ibas matando mas aliens. Esto en realidad no fue hecho por diseño, sino debido a una limitación del renderizado de gráficos que era limitado por la velocidad del procesador.

Mientras se mostraban menos elementos, el renderizado se hacía más rápidamente. Esto ayudó a incrementar la dificultad gradualmente, así que fue un factor decisivo en el éxito de este popular videojuego.


2. Esconder Archivos en UNIX con un Punto


Es una característica muy conocida. En sistemas operativos tipo UNIX (incluyendo las distribuciones basadas en Linux), si antepones un archivo o carpeta con un punto, se esconderá en las vistas por defecto. pero como apareció esta característica es otra historia:

Hace mucho tiempo, mientras se diseñaba el sistema de archivos de UNIX, las entradas . y .. aparecían para facilitar la navegación. Pero al ingresar ls en la terminal, estas entradas aparecían, así que se agregó un arreglo muy simple al programa (originalmente fue en ensamblador, pero el código era equivalente a):

if (name[0] == '.') continue;

Pero debió haber sido algo mas preciso, como:

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

Así que dos cosas resultaron de esto. Primero, se formó un terrible precedente, por el que muchos otros programadores empezaron a introducir bugs al hacer la misma simplificación.

Segundo, la idea de archivo oculto o dot file fue creada. Como consecuencia, mas programadores perezosos empezaron a dejar archivos y carpetas ocultas en los directorios home de los usuarios, pero ahora ya se toma como un estándar por el que muchos programas almacenan su archivos de configuración, caché y otros datos en directorios ocultos en los directorios home de los usuarios. Esto de alguna manera esta bien, pero se podría haber hecho mejor almacenando este tipo de datos en una carpeta $home/config o algo similar.

¿Cuántos bugs, ciclos de CPU y frustraciones humanas se podrían haber evitado de no ser por este pequeño atajo hace mas de 40 años? Ten eso en cuenta la próxima vez que quieras cortar camino en tu código.

3. El Surgimiento de JSON-P


Esta peculiar forma de comunicación entre navegadores web y servidores fue efectivamente un exploit que evolucionó en una técnica estandarizada.

La política same-origin (mismo origen) para lenguajes de programación de navegador del lado del cliente ha sido implementada desde LiveScript para Netscape Navigator 2, y por una buena razón: No quisieras que la gente de otros sitios web ejecuten algún código JavaScript en el tuyo.

Mientras crecía el internet, y el compartir información entre sitios web se volvía mas importante, esto se convirtió mas en una limitación que en una medida de seguridad. Los desarrolladores empezaron a diseñar técnicas para superar esta limitación, y así surgió JSONP.

Esto abrió una variedad de exploits entre sitios, pero mientras teóricamente solo funcionaría si la persona que controla el servidor que retorna los datos y la persona que controla el sitio web con los scripts del lado del cliente confían entre sí, todos quedaron satisfechos con el resultado.

En 2005, JSONP se convirtió en una técnica estandarizada y, a día de hoy, casi todos los grandes sitios web como Facebook o Twitter proveen servicios de datos que lo soportan. Ahora hay nuevas técnicas que no requieren esta técnica, como CORS, pero JSONP sigue siendo la mejor forma porque los navegadores antiguos aún lo soportan.

JSONP es un hack, pero ha sido un hack que funcionó bien.

4. El Retraso de Envió de Correos de Gmail




Gmail tiene un retraso de unos 5 segundos cuando procesa un mensaje de correo electrónico. Los desarrolladores de Gmail convirtieron este problema en una característica al implementar la acción deshacer.

Como los correos electrónicos tienen este retraso, Gmail simplemente dejaba a los usuarios la posibilidad de parar los correos antes de que se envíen de cualquier modo.

5. El Mensaje de Agradecimiento de Wing Commander



Ken Demarest fue uno de los desarrolladores originales de Wing Commander para PC, y cuenta la razón de el mensaje de agradecimiento de Wing Commander.

Estábamos obteniendo una excepción del administrador de memoria EMM386 cuando el juego terminaba. Limpiábamos la pantalla pero salía un mensaje de una sola linea que decía algo como: "Error en el administrador de memoria, etc, etc". Teníamos que lanzar el producto lo mas pronto posible, así que edité el mensaje de error del administrador de memoria con un editor hexadecimal para que muestre "Gracias por jugar Wing Commander!".

6. La Historia de Ctrl+Alt+Supr



El uso de Ctrl+Alt+Supr no fue un bug, pero fue una forma en la que los desarrolladores trabajen con software defectuoso. Sin embargo, nunca fue pensado para ser utilizado por los usuarios en producción.

A día de hoy, son pocos los usuarios de computadora que no conocen esta clásica combinación de teclas.

Y tú, ¿Conoces otro caso en la que un bug de software se volvió una característica? Cuéntanos en los comentarios.

No hay comentarios:

Publicar un comentario