miércoles, 17 de diciembre de 2008

Los "Portes Nativos" no son mejores

Bueno navegando por la red, me encontré un articulo muy interesante de Scott Ritchie, actualmente MOTU en Ubuntu y uno de los desarrolladores de Wine. Su articulo habla de por que no siempre portar las aplicaciones ha Linux es la mejor opción. Me he tomado la libertad de traducirlo y espero les agrade.

Los "Portes Nativos" no son mejores
Una de las mas extrañas criticas aun persistentes con respecto al proyecto Wine que he escuchado es el miedo a que esta compatibilidad es de alguna forma nociva para Linux. Cuando los usuarios pueden ejecutar aplicaciones con Wine, se cree, que los desarrolladores no se preocuparan en realizar el porte nativo apropiado. Bueno, si. Ese es exactamente el punto, los desarrolladores no tienen que. Portar apropiadamente una aplicación es un gran dilema. Se tiene que reescribir Direct3D usando OpenGL, reescribir DirectSount con OpenAL o SDL, rediseñar el instalador, y entonces preocuparse por los posibles errores entre las distintas distribuciones, e incluso diferentes versiones de una misma distribución. incluso con aplicaciones simples, este es un una gran cantidad de trabajo, y no sorprende entonces que la mayoría de los desarrolladores no se interesen para nada, especialmente cuando no tienen ningún personal en Linux, o ni siquiera saben que mercado les puede ofrecer este sistema operativo.

Ahora, suponga que eres lo suficientemente suertudo para tener una aplicación que ya funcione perfectamente en Wine. ¿Que beneficio extra ofrece realizar un "porte nativo"?. En ese caso, lo que se obtiene es una ubicación diferente de instalación, un enlace en Aplicaciones->Juegos en lugar de Aplicaciones->Wine->Programas->Compañía->Juego, y una cantidad de cambios detrás de escena que los usuarios nunca verán. Ese es un pequeño beneficio que se obtiene por un trabajo tan grande, e incluso ese beneficio desaparecería si se extiende el instalador MSI y se hace que las aplicaciones ejecutadas con Wine luzcan nativas. Ahora la comparación no es completamente justa, ya que Wine rara vez funciona perfectamente. Hay miles de errores en Wine, y un numero substancioso de problemas con las interfaces que pueden hacer de la usabilidad un horror.

Pero todos estos problemas de Wine son solucionables y, francamente, mas fáciles de arreglar que reescribir una gran aplicación como Photoshop o World Of Warcraft, mucho menos reescribirlos todos. Si se puede hacer el trabajo en Wine una vez, entonces no se tendría que hacer nunca mas. El beneficio de realizar el porte nativo es evitar los problemas de Wine; si se arregla Wine, entonces no tendríamos que desperdiciar esfuerzos demandando a las compañías que reescriban programas que ya funcionan en Windows.

Winelib, Microsoft.build
Wine no debería ser diferente a cualquier otra librería de la que dependamos y con la cual enlacemos programas, como GTK o Mono. Portando (y compilando) una aplicación debería ser tan simple como seleccionar "construir para Linux/Wine" desde nuestro IDE y contestando unas cuantas preguntas especificas de Linux como en que parte del menú Aplicaciones poner las viejas entradas del menú inicio. Asumiendo que el código no es especifico de una arquitectura, el mismo método podría ser utilizado para cualquier arquitectura de CPU en la que Linux y Winelib se puedan ejecutar (como, Sparc). Esto podría ser eventualmente posible con Microsoft.build de Mono, que puede manejar archivos de proyectos Visual Studio. O puede ser realizado con un sript mágico en Python que convierta un proyecto de visual studio en un sistema de construcción de tipo Scons.

De cualquier manera, mejorando Wine y su portabilidad se ve como una opcion mucho mas realista que reescribir la mayor parte de las miles de aplicaciones existentes. Wine y .msi podria ser la primera "plataforma de instalación multidistribución". Un efecto secundario de todo esto es que Wine tiene una API muy estable a la que apunta. Además del rendimiento y la interfaz de usuario , lograr la compatibilidad con esa API es literalmente la única clase de mejora que Wine puede realizar. Microsoft tenia esta intención: escribes una aplicación, y esta funciona en todas las versiones recientes de Windows en cualquier sistema. Wine tiene que ir en la misma dirección, dado que es un sistema mas. Esta es la misma meta de uno de los esfuerzos mas agresivos de estandarización de Linux; escribe una aplicación una vez, y debería ser compatible a nivel binario atraves de las distintas distribuciones.

Esto se empieza a ver cada vez menos obvio, excepto con Wine, la cual ha heredado esa necesidad de Windows. Así que, ¿vendrá el día cuando una aplicación Linux sea escrita en su mayoría en Winelib por que necesita ser compatible atraves de multiples distribuciones?. Es realmente posible. Y sera igualmente fácil portar a Windows también. ;)

Link al articulo original

No hay comentarios: