Ha pasado algo más de un año desde TBClamAV, y ya me empezaba a entrar el gusanillo de desarrollar otra cosa. Además, a pesar de lo capaz que era TBClamAV, obtuvo menos éxito del que me esperaba. Quiero creer que por la decreciente popularidad de The Bat!.

De manera que me propuse crear FileOptimizer o File Optimizer, un optimizador de archivos nativo para Windows, gratuito y de código abierto, que consiguiera reducir el tamaño de los mismos, sin pérdidas de calidad (lossless), a lo sumo, y de manera configurable, puede eliminar los metatags, pero ese es el único cambio que en apariencia externa realiza sobre los archivos, a pesar que a nivel interno se efectúen gran cantidad de manipulaciones.

Lo que me incitó a comenzarlo, fue que por un lado, las utilidades similares que había disponibles, como PNGGauntlet, ImageOptim, Trimage, o incluso PNGOutWin, en el mejor de los casos, eran capaces de optimizar unicamente JPEG, PNG y GIF. Algunas de ellas no estaban disponibles para Windows, y otras requerían .NET.

Para evitar todo ello, me puse manos a la obra con mi querido C++ Builder XE2, y en un fin de semana, cree una diminuta aplicación que como sus competidores, actuaba únicamente como interfaz de usuario amigable y fácil de utilizar, sobre programas de consola que eran los que hacían el trabajo duro de optimización.

Como de costumbre reutilicé el código genérico C++ Builder que incluyen casi todos mis programas, y liberé la primera versión, con soporte para APNG, MNG, JPEG, PNG, SWF y ZIP.

Poco menos de dos meses después, FileOptimizer va ya por la versión 1.70, y se ha transformado en un programa pequeño/mediano con aproximadamente 2000 lineas de código, y 70 horas de desarrollo invertidas entre análisis, investigación, programación, pruebas, documentación, mantenimiento web, y soporte. Soportando 17 formatos básicos (APNG, BMP, DLL, EXE, GIF, GZ, JPEG, MNG, MP3, OGG, OGV, PDF, PNG, SWF, TIFF, WEBP y ZIP), que derivan en casi 50 extensiones de archivo soportadas (AIR, APK, APNG, APPX, BMP, BPL, CBZ, DLL, DOCM, DOCX, DRV, DWFX, EPUB, EXE, GIF, GZ, ICO, IPA, JAR, JPEG, JPG, LZL, MNG, MP3, MPP, ODT, OGG, OGV, OXPS, PNG, PPTM, PPTX, PDF, PUB, SCR, SVGZ, SWF, SYS, TGZ, TIF, TIFF, VSD, WEBP, XAP, XLSM, XLSX, XPS, y ZIP).

El registro de cambios, indica que en total he liberado 9 actualizaciones, y 2 revisiones menores.

Por el camino, he realizado una compilación actualizada de Gifsicle 1.67, he actualizado los fuentes de jpegoptim 1.2.4 compilando una versión actualizada para Windows, he estudiado las especificiones internas de PNG/APNG, y me he puesto al día con la VCL de Embarcadero. También he desarrollado zRecompress, para recomprimir SWF tanto deflate como LZMA, y archivos GZ, así que he hecho ingeniería inversa, he estudiado ambos formatos, he recordado como funcionaba Zlib, y me analizado como funciona la interfaz de 7-Zip y el SDK de LZMA. Es decir, que agrupa en una sola herramienta, 20 programas de terceros, que persiguen una finalidad común: reducir el tamaño de los archivos, sin mermas de calidad.

Reconozco que incluso ahora, no hace todo lo que hacen los demás, algunas cosas por estar diseñadas explícitamente así, y que me siguen pareciendo lo adecuado (por ejemplo sobrrescribir los archivos de destino); y otras que aunque en efecto fueron concebidas de esa forma, han demostrado que con un leve cambio, habrían resultado más convenientes (como el soporte multihilo). Según varias pruebas independientes de usuarios, FileOptimizer no es solo la herramienta de este tipo que mayor cantidad de formatos soporta, sino que además, es desde el principio la que reduce en mayor proporción el tamaño de los archivos, eso si, a costa de un tiempo de ejecución superior.

En este caso, y con más de 10.000 descargas hasta el momento, mis expectativas se han visto superadas, y he aprendido como no se trata de desarrollar aplicaciones técnicamente avanzadas, sino de aplicaciones que funcionen mejor que las demás. En este sentido debo destacar la colaboración de los usuarios a todos los niveles, desde ofrecerme hosting gratuito, hasta sugerencias, reporte de errores, y contribuciones al código.

Todo este ajetreo, se ha completado con mi traspaso a Sourceforge en http://nikkhokkho.sourceforge.net, que espero sea finalmente un hogar duradero para FileOptimizer y para el resto.

El futuro, le puede reservar agradables sorpresas, soporte multihilo, versión Win64 con C++ Builder XE3, integración en la bandeja del sistema, barras de progreso en la barra de tareas para Windows 7 y superior, localización multiidioma, repositorio de versiones de código, … Pero lógicamente, ni siquiera yo mismo se con certeza lo que acabará incluyéndose, y es que a medida que crece el código, se hace más complicado y laborioso de mantener; a medida que se hace más popular, requiere más tiempo de soporte, y gestión. Todo ello, en dependencia directa con la cantidad de tiempo libre del que dispongo, que por lo visto, es cada vez menos…

En la página de descargas de Sourceforge, tenéis disponible tanto los fuentes, como los binarios, para que vosotros mismos podáis valorar si es que os apetece.