15 de febrero de 2015

Los frutos de la modularidad en KDE 5

El desarrollo de KDE 5 está siendo bastante caótico de cara al público, mucha gente no sabe bien que se está haciendo. Por eso el anuncio de hoy, publicando KDE Frameworks 5.7.0, no dirá mucho a la gente, ni sabrán si esa publicación acerca, o no, a la publicación de un "KDE 5.0". No les culpo, KDE no ha sabido explicar bien sus intenciones, y yo no tengo intención de hacerlo hoy. Pero merece la pena hablar de KDE Frameworks 5, y de los buenos resultados que está teniendo.

La intención de KDE Frameworks 5 es hacer honor a su nombre en el sentido más amplio de la palabra: uno de los principales objetivos ha sido que los usuarios de Qt puedan usar partes de las librerías básicas de KDE, sin tener que usar KDE. Para ello, KDE Frameworks 5 ha dividido la gran masa de código "kdelibs" en 60 pequeñas librerías que ofrecen diferentes funcionalidades, desde KArchive para gestionar archivos comprimidos, KI18n para la internacionalización, KConfig para la gestión de archivos de configuración, o Kemoticons para mostrar emoticonos en lugar de ";)".

Las dependencias que estas librerías tienen entre sí mismas se distinguen con diferentes "tier". Las que no dependen sólo de Qt forman el "Tier 1", el "Tier 2" lo forman las librerías que dependen del "Tier 1", y el "Tier 3" las librerías con dependencias de las anteriores dos. Las dependencias de librerías y funcionalidades externas, no relacionadas con KDE Frameworks, se gestionan dividiendo las librerías en las que no requieren dependencias ("funcional"), las que requieren alguna para la integración en el sistema ("integration"), o las que tienen otras dependencias variadas ("solution").

La consecuencia de esta modularización masiva es que KDE Frameworks pasa a ser, en buena medida, una extensión de funcionalidad para Qt, un verdadero framework que pasa a ser desarrollado independientemente de Plasma y las aplicaciones finales de KDE, y que permite crear aplicaciones Qt que utilicen librerías de KDE Frameworks sin tener que forzar a los usuarios a instalar medio KDE.

Como KDE Frameworks pasa a ser un proyecto complementario de Qt, no debería sorprender que algunas de las librerías de KDE Frameworks hayan sido movidas a Qt: QMimeType proviene de KMimeType, QTemporaryDir de KTempDir, QStandardPaths de KStandardDirs. También se han mejorado otras clases ya existentes, y cuando es posible y recomendable los programadores de KDE intentan mejorar cosas de QT, en lugar de reimplementar cosas por su cuenta.

El broche final como ejemplo de los beneficios de toda esta modularización se puede comprobar con la publicación de LXQt 0.9, un escritorio ligero basado en Qt, fusión de LXDE y razor-qt. En esa versión anunciaron que empezarían a usar un componente de KDE Frameworks, KWindowSystem, para gestionar la interacción con el sistema de ventanas. Reutilizarán un código mejor probado y mantenido por otros, y no sólo se libran de tener la implementación de la misma funcionalidad que hacían por su cuenta, sino que todos los esfuerzos que están haciendo en KDE para que KWindowSystem funcione con Wayland redundarán en su beneficio.

Resumiendo, la modularización de KDE Frameworks 5 supone un gran paso para KDE y el ecosistema Qt. Y aunque no haya un "KDE 5.0", se puede comprobar que el proyecto sigue trabajando mucho y muy bien.

2 comentarios:

  1. Gracias por este informativo artículo. Muy interesante. Yo quiero Wayland yaaaaaaaaaaaaaaaa... XD

    ResponderEliminar
  2. No habrá KDE 5, pero si que habrá (y ya hay) las nuevas versiónes de las aplicaciones KDE y el escritorio Plasma que usan KDE Frameworks 5!

    ResponderEliminar