29 de mayo de 2006

Google Picasa para Linux, y la importancia de Wine

Bueno, como algunos ya sabrán, Google ha lanzado una versión de Picasa - gestor de fotos - para Linux, utilizando wine. Las reacciones han sido muy diferentes. Por una parte algunos aplauden este apoyo a Linux mientras que otros critican que no haya sido un port "puro". Despues de darle vueltas al tema, he pensado que este tema merecía una pequeña reflexión.



En cuanto a Picasa en concreto, la cosa la han explicado muy bien en este email. Se podría decir que Google decidió hacer un experimento con Wine. Wine iba bien para la mayoría de las cosas pero le faltaba soporte básico para unas pocas. Asi que hablaron con los de CodeWeavers y les pagaron (supongo) para que implementaran todo lo necesario para que Picasa funcione: Un total de 200 parches que han sido publicados y que ya han sido integrados en Wine. Google se ha portado como Dios manda.

Luego esta el tema de que Google debería haber hecho un port "real". Sinceramente y despues de pensarlo mucho me parece absurdo no considerar a esta versión un "port" real y recomendar que google gaste varios meses en portar toda la aplicación a QT o GTK - recordar que Google compró Picasa y no tuvo oportunidad de hacer las cosas bien desde el principio en el caso de esta aplicación - para dar soporte a un sistema operativo con tan pocos usuarios. Esperar eso de Google era ya casi absurdo. Esperar eso de todas las empresas de software del mundo se clasifica directamente como demencia e incapacidad de concebir el mundo real

Es aquí donde viene Wine: Aunque en el pasado he pensado a menudo que reimplementar todas las dll de windows es algo absurdo, tiene su puntito. El puntito le tiene porque una vez que una aplicación se ejecuta bajo wine, realmente se está ejecutando de forma nativa, especialmente si creas un binario nativo de linux compilado contra la winelib. Para los que no lo sepan, parte de la idea que hay detrás de Wine es que se reimplementan todas las librerias "básicas" de Windows, incluyendo archivos de cabecera y especímenes varios, de manera que si Wine estuviera completado al 100% una aplicación podría compilarse nativamente tanto para windows como para Linux, utilizando g++ (o esa creo que es la teoría).

Quiero decir que como todo el mundo debería saber, wine no es un emulador (de ahí su nombre, Wine Is Not an Emulator). Wine es una implementación libre de la API Win32 de Microsoft. Y la verdad, es que si Wine estuviera completado al 100%, uno podría escribir programas utilizando la API de windows y al mismo tiempo poder compilar nativamente esa misma aplicación para Linux, porque la verdad es que Linux tampoco tiene una API definida (QT vs GTK) y usar la API Win32 no tiene nada, nada de "antinativo" si se tiene una implementación libre de Win32. De tal manera que con Wine Win32 saldría de la cueva donde Microsoft la mantiene y pasaría a ser algo al estilo de GTK y QT. Win32 es horrible por supuesto. ¿Pero acaso es menos horrible programar Evolution bajo GTK a base de C puro? Basta de hipocresias partidistas baratas, por favor. Programar en linux con API Win32 bajo una implementacion de Win32 libre sería algo perfectamente aceptable.

Por eso Wine me parece necesario. A diferencia de otros, soy capaz de concebir la realidad y ni espero que las empresas de software porten su software a Linux + GTK/QT ni creo que sea la mejor solución: Es más sencillo completar Wine que portar decenas, cientos de miles de aplicaciones comerciales. Por no mencionar que completar Wine es algo que la comunidad de software libre puede hacer o no hacer, pero modificar esos cientos de miles de aplicaciones comerciales es imposible porque ni te dan, ni te van a dar el código. El mejor ejemplo está en los juegos: Le guste a la gente o no, miles de juegos utilizan DirectX y cada vez son más. Y aunque no tengo conocimientos ni ganas de meterme en la discusión DirectX vs OpenGL, los resultados (los juegos que se ven) dicen que DirectX es una plataforma muy usable para el desarrollo de juegos. No la mejor, no la peor, simplemente una que está ahí y funciona. Y la tarea de Wine incluye el crear un port completo de Direct3D. Una especie de Mesa, pero en vez de opengl, Direct3D. Que incluso permitiría desarollar juegos nativos para Linux para aquellos linuxeros que piensen que Direct3D es mejor que Mesa, que los habrá. Vamos, que Wine me parece útil, y todo. Y aportes como el de Google hacen diferencia.

1 comentario:

  1. Me ha gustado mucho tu articulo, ya que yo pienso igual que tu.

    Para mi, que wine se complete es algo muy importante. De hecho yo ya tengo pensados otros elementos que harían de wine una plataforma para programar aplicaciones perfecta.

    Lo que tengo pensado es:
    - Usar GTK2 para la apariencia: aunque utilice librerias win32 debería de utilizar GTK para dibujar las fuentes, barras de herramientas y demás widgets, de manera que una aplicacion ejecutada bajo wine no se diferenciase de una hecha en GTK (Lo mismo un theme para que utilizase las QT, aunque prefiero GTK).
    - Integrarlo el sistema de ficheros de wine con el resto del sistema: me refiero, a que si instalas un juego, que este esté disponible para todos los usuarios que lo quieran ejecutar. Para esto, se haría necesario que cuando wine intentase escribir en un directorio del sistema, nos pidiese el password de administrador.

    Si estas dos cosas se hiciesen, wine sería perfecto y el escritorio GNU/Linux ganaría mucha mas aceptación.

    ResponderEliminar