En visperas de navidad, Fabio Gómez abrió una discusión sobre la detección del tipo de archivo en base a su contenido o su extensión. Esto es, cuando se abre una ventana de nautilus, éste debe determinar el tipo de cada archivo para poder mostrar el icono adecuado y realizar las acciones (menú contextual, aplicación a cargar, etc.) asociadas a dicho tipo.
Las sugerencias se iniciarion en otra larga discusión y finalmente hoy, Alex Larsson, unos de los mantenedores de Nautilus (que se había mantenido al margen), dió a conocer la solución que será implementada, que no es del todo perfecta, pero en mi opinión es bastante criteriosa y mejorará en gran medida el tiempo de respuesta.
El problema es notorio en nautilus, pero la característica está implementada en GNOME-VFS. Actualmente, se determina el tipo de archivo en base a su contenido, este método, aunque es el más deseado, presenta dos problemas:
-
Latencia. Al visitar un directorio, no basta con leer la tabla del directorio, sino que debe abrir todos y cada uno de los archivos (aunque sean unos cuantos bytes los que se lean, la operación con el disco penaliza el rendimiento, y se nota mucho más cuando se hace a través de la red).
-
Difícil recuperación ante errores. Los algoritmos de detección del tipo de archivo en base a su contenido no son infalibles. La única manera de corregir dicha asociación es mejorando el algoritmo, lo cual implica tiempo y la solución está en manos de los desarrolladores.
En el caso contrario, asociación del tipo de archivo en base a su extensión, es menos preciso, dado que cualquier usuario puede colocar cualquier extensión a un archivo y engañar la asociación. Sin embargo, se puede solucionar rápidamente, en caso que accidetalmente tenga una asociación directa. En términos de latencia, sólo se debe leer la tabla del directorio, lo cual es mucho más rápido (40 veces, según una medición de Alex Larsson).
La solución propuesta es una mezcla. Para los archivos que no tienen extensión, se asociaran en base al contenido; en el resto de los casos, mediante la extensión. Sin embargo, al momento de seleccionar el archivo (doble click, ver propiedades) se analizará por contenido, si el tipo obtenido es distinto a la extensión, entonces se notificará al usuario y preguntará por alguna acción a determinar. Esto agilizará bastante el tiempo de respuesta. donde se notará en directorios con muchos archivos y en los sistemas de archivos de red.