15 de abril de 2009

Sobre Gnome 3.0

Una de las noticias más importantes que se han visto en estas últimas es la decisión oficial de desarrollar Gnome 3.0. Tras algunos años de quejas particulares, rumores varios y proyectos paralelos todos relacionados o relacionables con el futuro de Gnome, al final se han echado la manta a la cabeza.

En realidad, no parece haber ninguna intención de rehacer el escritorio de cara al usuario por completo, sino hacer en gran medida como hizo KDE: rehacer parte del shell (el panel, gestor de ventanas, etc) y reorganizar las librerias para eliminar el desbarajuste que inevitablemente va surgiendo en un proyecto tan grande cuando está forzado a no romper el ABI, además de mejorar algunos aspectos de GTK/GLib (incluyendo introspección para GObject- OMG!), además de estar aparentemente interesados en llevar el tema de las animaciones 3D más allá del gestor de ventanas.

Respecto al shell proponen sustituirlo con Gnome Shell, que unifica parte del panel y el gestor de ventanas en una sola cosa. La idea no parece ser mala -unificar todo lo que es el shell de un escritorio en una sola aplicación no es ningún sacrilegio-, pero aun está por ver si será una mejora radical, o se quedará en algo que reemplace el shell actual sin añadir nada interesante que lo haga más atractivo que éste. Un detalle interesante es que está hecho con clutter, una librería de "animación" al estilo de Core Animation cuyas capacidades se contemplan mejor en este video (que es la interfaz gráfica de moblin, la distribución "móvil" creada por Intel). Aparte de esto, no parecen tener intención de retocar más aspectos del shell como los programas que gestionan el fondo de pantalla (aunque, insisto, el desarrollo será largo y nadie sabe todo lo que se acabará haciendo).

Otra propuesta, y no tan interesante como la anterior, es Gnome Zeitgeist, al que yo no le veo un gran futuro. Y es que los desarrolladores de esta cosa son los programadores número 8218321095435643232 que han decidido, por inspiración del espíritu santo, que los sistemas de archivo jerárquicos, o sea, los directorios y los archivos, son malos, y hay que acabar con todos ellos en el Nombre De La Sagrada Usabilidad. Para lograrlo, ellos, los Caballeros del Sagrado Código, se sacarán de la manga un nuevo framework que dejará atrás ese infiel concepto de los directorios y nos traerá como sustitución algo que estará centrado alrededor de lo que verdaderamente importa: El Documento (tm). El pequeño problema de esta idea es que entre los bravos caballeros que ya cabalgaron por esta senda se incluyen WinFS y Reiser4, y mi opinión es que el destino que aguarda a Zeitgeist es el mismo que a ellos, por muchas razones. Los sistemas de archivo jerárquicos no son una mierda, son terriblemente prácticos e intuitivos, de ahí que sean el estándar en todos los SO que importan. El éxito del simplísimo indexador spothlight frente al intento de rehacer el mundo que fue WinFS debería servir de ejemplo...

Aparte de esto, y de la intención de usar más clutter, no parece haber muchos más planes (tampoco los hubo en kde 4) además de los propios de un evento así: Renovación del aspecto externo (themes, iconos), aproximación hacia otras plataformas (Mobile) o Windows, mayor uso de cosas como dbus, cosas anteriormente opcionales como Webkit que se vuelven un requisito y debido a ello se empiezan a utilizar más...

Uno de los aspectos más polémicos de Gnome, y uno de los que no veo cuestionar, es la cuestión de "la plataforma", es decir, la famosa discusión sobre seguir solo con C en la base, o centrarse en C#/Java. Esa discusión no parece que vaya a evolucionar en ningún sentido: Gnome 3.0 será C puro, y ofrecerá bindings a otros lenguajes, como siempre. Sin embargo, hay una novedad muy interesante en este campo, que es Vala. Vala es un clon de C#, pero que no es un lenguaje completo, sino que lo que se escribe con él se traduce a C, usando GObject como recurso para implementar los objetos. Se trata de un hack horrible...pero a pesar de sus defectos es algo muy práctico para Gnome: Permite resolver el problema de utilizar un lenguaje de más-alto-nivel, y al mismo tiempo soluciona el dilema de dejar de usar C en la plataforma base, pues los objetos creados en Vala son accesibles automáticamente a otras aplicaciones en C con GObject, y por tanto a todos los demás bindings. Yo creo que es inevitable que con el paso del tiempo Vala se convierta en EL lenguaje para crear aplicaciones Gnome, porque todos los dilemas y flames que existen sobre estos temas son como una masa de agua tempestuosa encerrada en una piscina sin posibilidad de escapar, y Vala es el único agujero por donde pueden escaparse las aguas.

10 comentarios:

  1. Yo creo que Gnome para su 3.0 no sigue el camino correcto. Creo que debería centrarse mucho más en la velocidad y la usabilidad para personas algo más expertas (quién use Linux no necesita botones de un metro por un metro). Luego la arquitectura es cuestión de probar a ver cual va mejor.

    Respecto a Zeitgeist opino como tú. No tendrá éxito. De hecho creo que ese trabajo debe estar en el propio sistema de archivos en lugar de en la IGU (al estilo de BFS con sus "live queries" y atributos extendidos).

    Y respecto a Vala, creo que es una idea excepcional. Creo que Vala es un lenguaje muy limpio y sencillo de aprender. Además tiene todo lo de alto nivel como un recolector de basura. La pena es que todo lo convierta a C y luego lo compile. Pero bueno, quizás en un futuro hagan un compilador real que genere el código como se haría en C pero sin pasar por él. Pero, como digo, el lenguaje me parece muy limpio y, en mi opinión, tiene bastante futuro.

    ResponderEliminar
  2. A mi Zeitgeist si me parece algo que en el futuro puede ser interesante. Podría permitir el versioneado de documentos o vídeos, y quizá un uso algo más natural si se plantea medianamente bien.

    Pero es algo muy complejo como para plantearlo tal cual, y como mucho debería ser freedesktop quien lo llevara. Diría que gnome tiene otras prioridades.

    ResponderEliminar
  3. Hola diegoc, ya que posteaste sobre el tema me gustaría mucho saber tu opinión sobre esto: http://www.stefanoforenza.com/compiz-is-getting-rapidly-sick-of-gnome/

    ResponderEliminar
  4. @paul21 Tiene sentido que Compiz a largo plazo desaparezca y que los gestores de ventanas de kde y gnome absorban su funcionalidad.

    ResponderEliminar
  5. Anónimo4:57 p. m.

    @diegocg O que compiz evolucione en Compiz Desktop Environment.

    ResponderEliminar
  6. Anónimo6:34 p. m.

    Lamentablemente a mí tampoco me está convenciendo los planes para Gnome3.0

    Prefiero GNome-Do a Gnome Shell Cuánto mejor harían apoyando al 1º
    Zeitgeist no me gusta ni el nombre y mucho menos si lo portan a C# como parece que quieren hacer. Espero que recapaciten y lo porten a Vala.

    Vala sí que me gusta, ¿no creéis que se vaya a usar para programas que no sea de GNome? Vale que esté diseñado para GObject, pero creo que es un gran lenguaje.

    Por cierto, una pregunta ¿qué es la introspección para GObject?
    Lo he leído en muchos sitios y no soy capaz de entender lo que es.

    ResponderEliminar
  7. Anónimo6:43 p. m.

    se me olvidaba, otra pregunta relacionada con GNome 3.0:
    ¿Qué es eso de usa JavaScript para las aplicaciones?

    ¿Qué ventajas tiene?

    ResponderEliminar
  8. Anónimo5:02 p. m.

    http://diegocg.blogspot.com/2009/04/sobre-gnome-30.html#comment-form

    ResponderEliminar
  9. Anónimo5:02 p. m.

    Había oído hablar de Vala anteriormente pero no le llegué a prestar mucha atención. El primer pensamiento que se me vino a la cabeza fue, también, que no dejaba de ser una chapuza para salir al paso.

    Sin embargo, a raíz de esta entrada en tu blog, me he puesto a investigar y reflexionar un poco. Anuncio de antemano que soy, de siempre, muy partidario de Gnome (nunca me llegó a convencer KDE).

    Soy programador de Java, que es un lenguaje que me gustaba mucho porque simplificaba bastante las cosas y te permitía centrar tu atención en las cosas que verdaderamente importaban. Siempre me ha gustado mucho, por ejemplo, la forma de tratar las excepciones. Por otro lado, no me está gustando nada, las novedades que están introduciendo en cada versión del lenguaje.

    A parte de que en su origen, java, no era una plataforma libre (cosa que ya ha terminado por solucionarse) nunca terminó de convencerme tampoco el hecho de que programando en java no tuvieras acceso directo al sistema operativo (esa capa de abstracción que es la máquina virtual tenía que tener alguna desventaja) y por eso he seguido programando también en lenguaje C. Nunca he tenido ganas de meterme en C++. A parte de que las cosas que he podido desarrollar en C no han sido más que producto de mi curiosidad y ganas de aprender a moverme en un entorno UNIX.

    Hace tiempo que he estado buscando algo que me diese lo mejor de los dos mundos: acceso al sistema operativo (yo que soy entusiasta de GNU/Linux y los sistemas UNIX en general) y la belleza y facilidad de desarrollo del lenguaje (en mi opinión cada vez más estropeado) java. Incluso tuve en mi punto de mira al lenguaje D, que compilaba a código nativo y no arrastraba el lastre de tener que disponer de un entorno de interpretación/ejecución (otra de las cosas que tampoco me ha convencido nunca de java).

    Como te decía, a raíz de esta entrada en tu blog, me puse a reflexionar sobre Vala. Y llegué a la conclusión de que podía ser precisamente lo que estaba buscando (todavía no lo he probado). Dicen que su sintaxis se basa en C# (que no conozco) y además compila a código nativo. Vamos, un java pero sin máquina virtual. A primera vista puede parecer una chapuza que traduzca a código C pero si nos ponemos a pensar las otras plataformas también hacen este paso intermedio (en el caso de java a bytecode). Al final resulta que no va a ser más chapucero que la propia plataforma java o C# (con sus bytecode).

    Veremos el resultado que da, pero el hecho de que se lo estén tomando en serio dentro de Gnome ya dice bastante a su favor.

    ResponderEliminar
  10. Sorbe gnome 3.0, llevo bastantes días siguiendo las discusiones en las listas sobre lo que interesa y no interesa hacer, y sí que creo que van más o menos bien encaminados.. pero por alguna razón sigo pensando que deberían reestructurar de alguna forma el código interno, las librerías para obtener un mayor rendimiento.

    En cuanto a Vala, a mi no me parece una chapuza, creo que es necesario para acelerar el desarrollo de Gnome (por que no todo el mundo está dispuesto a programar en C, y los demás lenguajes suponen un lastre para el rendimiento), hay que tener en cuenta que Gnome se desarrollaba muy lentamente porque todo se tenía que hacer en C puro, y no fue hasta que se empezó a desarrollar con Python y C# que "dió el estirón", eso estuvo muy bien, pero hemos pagado el precio con el rendimiento del sistema.

    En cuanto a Zeitgeist, no creo que sea un problema, éste no eliminaría el sistema de ficheros típico con sus árboles de directorios, es una capa de abstracción añadida que sólo se usaría si se quiere, a mi, particularmente, me iría de coña, tengo miles de documentos, ya sean imágenes, código, textos, libros.. de todo, y muchos de ellos no se pueden clasificar bien en una estructura de árbol, por ejemplo: un documento sobre cálculo infinitesimal, donde lo pongo? en la carpeta de la universidad/calculo/apuntes? en la carpeta de libros/matematicas? si lo pongo en la segunda probablemente me olvide de que lo tengo cuando busque apuntes en mi ordenador, si lo pongo en la primera probablemente cuando pase de curso lo tendré "allí tirado" sin mirarlo nunca.. eso sí, un sistema para localizar archivos mediante tags y propiedades tiene que estar muy bien diseñado para que no quede nada escondido o por el contrario nos exponga a una sobredosis de información, pero estoy seguro de que mejorará con el tiempo.

    Sobre gnome shell, es probable que si se integra todo en una sola aplicación se pueda reducir el consumo de memoria y la potencia de cpu consumidas... (menos cambios de contexto, menos uso de dbus gracias al paso interno de mensajes, menor cantidad de librerías cargadas...), puede que no aporte gran cosa, e incluso puede que limite la capacidad de los usuarios d "tunear" su escritorio (muchos ponen sus propios paneles en vez del de gnome por ejemplo).. pero si hay suficientes disidentes d gnome shell todos podemos salir beneficiados, pues continuaria el desarrollo del modelo "tradicional" y el de gnomeshell a la vez..

    Yo, lo que creo sinceramente es que ahora lo que toca es "limpiar" gnome de código obsoleto, mejorar el rendimiento, y posiblemente aumentar la funcionalidad de las gtk para evitar que se cada programa utilize librerías diferentes para conseguir las funcionalidades que no le da gtk.. eso provoca que haya cargadas librerías similares en memoria que hacen trabajos parecidos.. cuando con una podríamos tener suficiente, así que uno de los puntos más importantes es también mejorar Mono, que podría ser mucho más veloz (véase la máquina Hotspot de Sun, que aun siendo "lenta" sobrepasa claramente a la de Miguel de Icaza)

    ResponderEliminar