Hace poco estuvimos discutiendo yo y algunos compañeros de Polinux un par de temas acerca de aplicaciones interescritorio. En el siguiente artículo expongo algunos problemas, cuál puede haber sido la causa del mismo y algunas soluciones propuestas que generalmente serán comunes: “Utilizar estándares consensuados”
Muchas veces, cuando usas entornos de escritorio en sistmeas GNU/Linux te encuentras con que hay aplicaciones “bonitas” y otras que tienen una apriencia más descuidada. Esto suele deberse a que cada una ha sido creada usando librerías distintas que representan los widgets (entendiendo por widget desde un cuadro de texto hasta una barra de desplazamiento), de formas distintas.
Este problema suele ser un problema “menor” de cara a la mayoría de usuarios experimentados, pero para un usuario que empieza pueden llegar a echarle atrás, lo curioso es que, por lo general, dichos widgets suelen ser similares, por no decir idénticos. En este caso, tengo una propuesta que pueden llegar a ser útil:
Cambiar el paradigma actual en el que las aplicaciones las que se encargan de dibujar los widgets y su contenido por otro en el cuál mediante un protocolo estándar (semejante al que existe actualmente para comunicarse con el servidor de las X) sea el sistema de escritorio el encargado de dibujar los mismos de acuerdo a las preferencias del usuario.
Dicho protocolo debería de poder ser extensible para la adición de nuevos widgets y debería ser decidido de forma consensuada por representante de los desarrolladores de los principales sistemas de escritorio y debería definir entre otras cosas los tipos de widgets existentes, sus parámetros y, de quererse retrocompatibilidad, una clase en versiones anteriores que ofrezca unas características semejantes. Esto sería semejante a los documentos que indican que puede esperar una aplicación de un gestor de ventanas que tan buenos resultados han dado y es un acercamiento al paradigma del HTML con hojas CSS en el cuál el código sólo se encarga de decir qué hay que dibujar y algunos atributos mientras que el CSS se encarga de decir cómo dibujarlo y el navegador lo dibuja. Con esto se lograría una uniformidad bastante buena en la visualización, y los desarrolladores de librerías para la generación de GUIs podrían centrarse en ofrecer una API más cómoda (o rápida) a los desarrolladores en vez de tratar de ofrecer nuevas características visuales que no necesariamente funcionaran de forma correcta en todos los sistemas de escritorio.
Otro problema que discutimos era la dificultad que tenían para comunicarse aplicaciones desarrolladas con librerías diferentes. Esto, por ejemplo, queda patente en la existencia de algunas aplicaciones que no pueden copiar o pegar a otras (entre otras cosas). En este caso y dado el sistema actual, la solución sería un sistema de capas, así en la capa superior estarían las aplicaciones, en la inferior el sistema de intercomunicación proveído por la librería, y en la última el entorno de intercomunicación de entornos. Este debería de nuevo ser definido por representantes de los desarrolladores de estos sistemas y ofrecer una forma unívoca de identificación de aplicaciones y una forma segura de trasmisión de datos entre aplicaciones que usasen una segunda capa distinta. De esta forma, cada cuál podría seguir usando internamente los sistemas de comunicación propios (por ejemplo el Gnome VFS) con las ventajas que conlleve su uso de cara a otras aplicaciones que usen el mismo sistema, pero garantizando una serie de servicios mínimos de cara al resto de aplicaciones.
Hay muchos otros temas que surgieron en la discusión, pero estos fueron los que más me llamaron la atención. Me despido recordándoos que protocolos cómo por ejemplo el HTTP usado para el envío de datos o el SMTP, usado para enviar e-mails, llevan años definidos y estandarizados y se han ido extendiendo conforme aumentaban las necesidades sin dejar de lados a las versiones anteriores, quizás por la suma de ambos factores estén tan extendidos a día de hoy. Así que recordad, usad estándares siempre que podáis, así conseguiréis unas aplicaciones más uniformes y agradables.