En Gnome 45 no se podrán utilizar complementos antiguos por temas de compatibilidad
Hace ya algunos días se dio a conocer información sobre un cambio que puede no ser del agrado de todos los usuarios de Gnome y es que en la nueva versión de GNOME 45 se han realizado algunos cambios que afecta a los complementos del entorno.
En específico se menciona que se ha cambiado la organización de la carga de módulos en complementos para GNOME Shell, lo que provocará una violación de la compatibilidad con versiones anteriores y requerirá cambios en los complementos.
Se menciona que:
JavaScript se originó en los navegadores web para agregar un poco de interactividad a páginas que de otro modo serían estáticas. No era necesario dividir pequeños fragmentos de código en varios archivos, por lo que el lenguaje no proporcionaba un mecanismo para ello.
Esto se convirtió en un problema cuando la gente empezó a escribir programas más grandes en JavaScript, por lo que entornos como node.js y GJS agregaron sus propios sistemas de importación para organizar el código en múltiples archivos. Como consecuencia, los desarrolladores y las herramientas tuvieron dificultades para realizar la transición de un entorno a otro.
Como tal, el problema que tendrán los complementos desarrollados para versiones anteriores de GNOME y que no podrán ejecutarse en la próxima versión de GNOME 45, es debido a una ruptura de compatibilidad que cambia de su propio sistema de importación de módulos, específico del tiempo de ejecución de JavaScript GJS (GNOME JavaScript basado en el motor SpiderMonkey del proyecto Mozilla), al mecanismo de importación de módulos JavaScript estándar (ESM) descrito en ECMAScript.
Las importaciones heredadas todavía son compatibles con extensiones.gnome.org, pero deberá cargar un soporte previo y posterior a GNOME 45 para admitir tanto LTS como distribuciones regulares.
Ademas de ello, se menciona que las diferencias se reducen al hecho de que anteriormente, además de GNOME Shell, se usaba el objeto «imports» para conectar módulos JavaScript y enlaces GObject, pero ahora se debe usar el operador «imports».
Por otra parte, también se menciona que los complementos adaptados para ejecutarse en GNOME 45 no podrán instalarse en versiones anteriores de GNOME y que para mantener la compatibilidad con diferentes versiones de GNOME, los desarrolladores de complementos deben cargar dos variantes de complementos en extensions.gnome.org : una para GNOME 45 y versiones posteriores, y otra para versiones anteriores de GNOME.
Bueno, hay un pequeño inconveniente: los módulos y las importaciones heredadas son incompatibles en la práctica.
Los módulos se cargan de manera diferente a los scripts y algunas declaraciones, concretamente importy export, solo son válidas en los módulos. Eso significa que intentar importar un módulo con el sistema heredado resultará en un error de sintaxis si el módulo usa una de esas declaraciones (casi tan probable como que un Papa sea católico).
Los módulos también ocultan cualquier cosa al exterior que no se exporte explícitamente. Entonces, si bien es técnicamente posible importar un script como módulo, es tan útil como importar un archivo vacío.
Finalmente se menciona a los desarrolladores que para funcionar en GNOME 45 y versiones más recientes, las extensiones deben cambiar el código asociado con la carga de bibliotecas, asegurarse de que el archivo extension.js contenga métodos enable()/disable() en la clase predeterminada y, cuando se use prefs.js, definir ExtensionPreferences. subclase con un método fillPreferencesWindow.
La versión modificada del complemento debe vincularse a las nuevas versiones de GNOME Shell a través del parámetro ‘»shell-version»: [ «45» ]’ en metadata.json. Para GNOME anterior a la versión 45, puede crear versiones separadas de complementos, asegurándose también de que se vinculen a versiones anteriores a través del parámetro shell-version en metadata.json. Puede probar las adiciones modificadas utilizando compilaciones del sistema operativo GNOME.
De igual forma se comparte una guía de portabilidad, la cual se puede consultar desde el siguiente enlace. Por último y no menos importante, cabe mencionar que el lanzamiento de la nueva versión de Gnome 45 está previsto para el 20 de septiembre (ya para mañana).
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.