Había considerado iniciar esta entrada en el blog escribiendo sobre lo frustrante que puede ser el desarrollo de software, pero, si bien el problema que me llevó a escribirla no es de «desarrollo de software«, sí es parte de su dominio. Me explico.

El desarrollo de productos de software (aplicaciones, programas, suites de aplicaciones, utilerías, bibliotecas, componentes, paquetes, etcétera— y las clasificaciones pueden ser muchas más —) enfrenta por sí solo retos y dificultades propias de la naturaleza del producto que se busca desarrollar, así como dificultades, problemas y limitaciones de la tecnología empleada (tanto de las herramientas como del entorno de desarrollo en el que se ejecutará el resultado). Sí, además, lo que se busca construir es un producto multiplataforma (que funcione en diferentes entornos), prácticamente duplicaremos sus riesgos y problemas.
Un producto de software estable para un entorno de ejecución ya es encomiable; que lo sea en todos esos entornos (que no se limitan simplemente a Linux, macOS y Windows, también pueden considerarse iOS, watchOS, iPadOS y tvOS; iOS versus Android, o PlayStation, Nintendo y XBox), ya es de admirarse. Es difícil dar una cifra exacta de aplicaciones y su alcance, pero los números que algunas firmas de investigación de mercados1,2 llegan a filtrar nos quitarán las ganas de intentarlo. Tan solo al 15 de mayo de 2026 estaban registradas2 2,343,063 apps en Google Play y 2,317,875 apps en el Apple App Store.
Aquellas aplicaciones que proporcionan un binario descargable e instalable (R, Python, MATLAB, VS Code, Wolfram Mathematica, por mencionar algunos) en más de un sistema operativo son las que a todos nos gustan. Uno solo tiene que asegurarse de contar con la versión adecuada del sistema operativo, una CPU, RAM y espacio en disco suficientes para descargar y ejecutar. No es hasta que uno se topa con algún producto que necesita y para el que sólo se cuenta con la opción de descargar el código fuente y compilarlo en su sistema operativo cuando se da cuenta del esfuerzo que implica desarrollar y mantener un producto multiplataforma. Y uno valorará más todo esto cuando el proceso de compilación nos lleve a realizar acciones adicionales. Cuando todo esto resulta exitoso, es muy gratificante; cuando no, resulta muy, muy frustrante. El primero lo he podido vivir con varios productos (e.g. Autopsy); el segundo, en menor grado, pero también. El más reciente ha sido con nmap.
Independientemente del resultado, siempre hay un aprendizaje. Solamente no lo hay, cuando se trata de una actividad rutinaria, cuando uno ya conoce muy bien todos los pormenores de instalación y desinstalación (como podría ser el caso de Conda).
¿Qué hacer cuando nos encontramos con la imposibilidad de llevar a buen término la compilación del código fuente y de obtener un producto funcional? Es importante considerar dos cosas: que pueda compilarse y que pueda ejecutarse. Como me ha ocurrido con nmap, a pesar de sortear múltiples dificultades durante la compilación, no he logrado que el producto se ejecute correctamente. Para este caso, mis alternativas son: ejecutarlo en una máquina virtual con un instalador de un sistema operativo compatible, o recurrir a un port. Esta última puede ser la mejor alternativa para probar primero.
Y, al respecto de las máquinas virtuales, otra lección aprendida es usar una de ellas si aún no conoce el proceso de compilación. El fracaso con nmap me lleva a limpiar todo aquello que llegué a tocar: Homebrew, Conda y los directorios de instalación en /usr/local (donde me he percatado de que hay «cascajo» de otros proyectos, exitosos o fallidos, que dejaron residuos tras su desinstalación).

Referencias
- «Cross-Platform Software Market Report 2026«, The Business Research Company, web. Published: 2026.01.15; visited: 2026.05.16. URL: https://www.thebusinessresearchcompany.com/report/cross-platform-software-global-market-report.
- «Google Play vs the Apple App Store: App Stats and Trends», 42matters.com, web. Visited: 2026.05.16. URL: https://42matters.com/stats.
Siguiente

