Windows contará con sistema de paquetes similar al usado en Linux

por

350 posts

microsoft-windows-7-boxGarret Serack, ingeniero del área Open Source en Microsoft, ha iniciado un proyecto para llevar el concepto de sistema de paquetes de Linux al sistema operativo Windows, para simplificar el uso e instalación de componentes de código abierto en este sistema.

La motivación de Serack es la dificultad existente hoy en día para instalar aplicaciones de código abierto en Windows, ya que el usuario puede perder horas y horas entre descargar, instalar y configurar componentes de código abierto, algo que en Linux es prácticamente automático y el sistema lo puede hacer en forma automática en pocos minutos (ver bonus track más abajo).

El proyecto bautizado como CoApp (Common Open Source Application Publishing Platform) y que se encuentra alojado en Launchpad.net de Canonical, es una iniciativa personal de Serack que cuenta con la bendición de Microsoft y se desarrollará como código abierto.

Aquí en Microsoft han reconocido el valor de este proyecto – y amablemente me ofrecieron trabajar en él a tiempo completo.  Estoy liderando el proyecto y Microsoft me da su 100% de apoyo.  El diseño es completamente un trabajo mio y de la comunidad de CoApp, y no tengo que pasar por la aprobación de nadie al interior de la compañía.  Esto hace de mi trabajo, un trabajo soñado: Consigo trabajar en un proyecto que me apasiona, lo hago de código abierto, y lo dirijo hacia donde tenga sentido.

CoApp resolverá varios problemas en la plataforma Windows respecto a instalación de aplicaciones de código abierto, dotándolo de un verdadero sistema de componentes compartidos, los que pueden ser descargados de repositorios oficiales en donde las versiones estén coordinadas:

Casi todo el tiempo, si alguien publica estos binarios (versiones compiladas), integran además sus copias de bibliotecas compartidas con la aplicación.  El problema es que no hay un versionamiento común, o realmente, bibliotecas compartidas que se compartan efectivamente en Windows.  Si tu aplicación y mi aplicación comparten la misma biblioteca, podrían (y usualmente lo hacen) distribuirse con versiones diferentes de una misma biblioteca.

El formato de los paquetes será el mismo utilizado hoy por los instaladores (MSI), y se proveerá tanto de fuentes oficiales de instalación como de una estructura de directorios común en donde estas aplicaciones serán instaladas.

Bonus Track: Instaladores en Windows y sistemas de paquetes en Linux

linuxLos sistemas de instalación actuales en Linux y Windows tienen un enfoque bastante distinto.  En Windows normalmente la aplicación es autocontenida y posee todo lo que necesita para funcionar, en cambio en Linux y en general en las aplicaciones de código abierto se evita reescribir la rueda y una aplicación está dividida en muchas partes pequeñas que se desarrollan en forma independiente, compartiendo muchos componentes entre ellas.

Un instalador para una aplicación en Windows puede ser bastante grande, ya que además de incluir la aplicación a ser instalada, debe incluir todas las bibliotecas que necesita esa aplicación para funcionar, lo que en algunos casos hace inevitable el uso de CD’s para contener sólo una aplicación.  En el caso de Linux, sólo se descarga e instala en el sistema lo que no se había instalado previamente: Por ejemplo, si una aplicación ya instaló una biblioteca de criptografía, la siguiente aplicación no necesita volverla a instalar.

En Windows, lo más cercano al enfoque de Linux podría ser la relación entre los juegos y DirectX, en donde Microsoft desarrolla DirectX mientras que terceros desarrollan los juegos: Primero se instala DirectX y luego los juegos pueden usar el DirectX que ya se encuentra instalado en el sistema.  Lamentablemente o afortunadamente depende del punto de vista de cada uno, no es mucho más lo que se comparte entre aplicaciones de Windows.

Desde el punto de vista positivo en las instalaciones de Windows, se asegura de que el instalador tiene todo lo que se necesita para que la aplicación funcione.  Desde el punto de vista negativo, cada aplicación usa su propia versión de cada componente, existen múltiples copias y no hay una forma unificada en que se pueda actualizar el sistema y las aplicaciones al mismo tiempo, por ejemplo para corregir bugs o problemas de seguridad.  Por ejemplo si una aplicación contiene la funcionalidad para decodificar mp3 y contiene una falla, cuando aparece la corrección se debe descargar e instalar la aplicación completa nuevamente.

En el caso de Linux también se tiene un punto de vista positivo y otro negativo:  Por el lado positivo, una aplicación es sólo un componente del sistema y puede ser instalada y actualizada en forma sencilla e independiente.  El instalador sólo tiene lo necesario y si la aplicación necesita otro componente para funcionar, se usa el que ya está instalado o bien se descarga automáticamente de Internet. A veces una actualización puede significar inmediatamente la mejora de varias aplicaciones, ya que los componentes se comparten. Desde el punto de vista negativo, instalar estas aplicaciones sin acceso a Internet puede resultar una odisea.

Paquetes

Para simplificar la instalación de estas aplicaciones, en Linux se utiliza un sistema de paquetes, en donde cada componente está constituido por uno o más paquetes.  Al instalar una paquete, el sistema determina qué más necesita, lo descarga de Internet, lo instala y configura en forma completamente automática.  En Windows, que no cuenta con un sistema de paquetes, instalar estas aplicaciones puede ser un infierno, porque el usuario debe instalar cada componente en forma manual y configurarlos para que conversen entre ellos.

Por ejemplo, si en Linux queremos tener un servidor web con soporte de PHP y base de datos, con una corta linea de comandos (o pocos clicks) el sistema instala todo lo necesario en forma automática y queda listo en pocos minutos o segundos dependiendo de la calidad de la conexión a Internet.  En Windows, instalar lo mismo puede llevar horas, ya que el usuario se debe encargar de todo, desde buscar la aplicación en Internet, hasta configurarlas para que se integren.  Si a esto agregamos que no hay una coordinación de versiones, es muy probable que en algunos casos no encuentre versiones que sean compatibles ente ellas.

Con COAPP en Windows, esta dificultad quedará en el pasado, porque instalar aplicaciones de código abierto en Windows llegará a ser tan simple como es hoy en Linux.

Links:
What’s this ‘CoApp’ all about? (blog de Garret Serack vía FayerWayer Brasil)
Microsoft aims to bring apt/rpm like tools to Windows (OS News)