XUL ( / ˈz uːl / ZOOL ), que significa lenguaje de interfaz de usuario XML , es un lenguaje de marcado de interfaz de usuario desarrollado por Mozilla . XUL es un dialecto XML para escribir interfaces gráficas de usuario , que permite a los desarrolladores escribir elementos de interfaz de usuario de manera similar a las páginas web .
Las aplicaciones XUL dependen del código base de Mozilla o de una bifurcación del mismo. El ejemplo más destacado es el navegador web Firefox . Sin embargo, Mozilla ha reducido significativamente el uso de XUL en Firefox después de su reescritura del motor del navegador en la versión 57. [1] [2] Esto resultó en la eliminación del sistema de complementos heredado , que dependía de XUL y XPCOM , otra tecnología multiplataforma que Mozilla decidió descontinuar poco antes del lanzamiento de Firefox 57. Firefox originalmente permitía que los complementos alteraran ampliamente su interfaz de usuario, pero esta capacidad se eliminó en 2017 y se reemplazó con la API WebExtensions menos permisiva . [3] [4] Varias bifurcaciones de Firefox conservan el soporte para complementos basados en XUL y XPCOM. Waterfox mantiene una bifurcación del código base heredado de Mozilla para el navegador Waterfox Classic . [5] El navegador Pale Moon , [6] el navegador Basilisk , [7] el sistema operativo Hyperbola , [8] y numerosos proyectos más pequeños utilizan y mantienen colectivamente la implementación de la Plataforma XUL Unificada (UXP).
XUL fue ideado en Netscape en 1997 como parte del esfuerzo de desarrollo que eventualmente se convirtió en la base de código de Mozilla . [9] XUL es similar a las tecnologías web implementadas por el motor de renderizado Gecko . Cuando se introdujo XUL, agregó características más allá del HTML 4, que entonces era estándar . Fue diseñado como una extensión de HTML para ser utilizado con aplicaciones en lugar de documentos. [10]
XUL fue utilizado por varios proyectos de Mozilla, bifurcaciones de proyectos de Mozilla y proyectos estrechamente relacionados con Mozilla. Algunos proyectos de software como Songbird , Komodo IDE y Zotero comenzaron como aplicaciones de escritorio que utilizaban XULRunner para renderizar y componer su interfaz de usuario. A principios de la década de 2000, hubo cierto interés en utilizar XUL por parte de otras partes, incluida Amazon , [11] pero estas se han pasado a HTML5 . [1] [2] Muchas de las características de las tecnologías web modernas como HTML5, CSS3, ECMAScript 5+, WebGL y WebAssembly que hicieron posibles aplicaciones web ricas y modernas, sin la necesidad de utilizar tecnologías heredadas de complementos de navegador NPAPI / PPAPI / ActiveX como Adobe Flash , Silverlight , Java o Shockwave , también hicieron que gran parte de XUL fuera redundante. [10]
Mozilla lanzó Firefox 57, también conocido como Firefox Quantum, en noviembre de 2017. Como parte de esto, Firefox terminó la transición a una arquitectura multiproceso. Aunque los complementos XUL podían funcionar en esta arquitectura, a menudo creaban problemas de rendimiento importantes. Debido a esto, Mozilla eliminó la compatibilidad con complementos heredados , incluido el uso de código XUL personalizado. [3] [4] Mozilla cambió su sistema de extensiones de navegador a la API WebExtensions entre navegadores, que se basa en gran medida en la API de extensión de Chrome. A fines de 2017, Firefox todavía incluía 289 enlaces XUL para componentes nativos del navegador. A fines de 2019, Mozilla había eliminado todos los archivos XUL de su mozilla-central
repositorio. [12] [1] [2]
Cuando Mozilla eliminó el soporte de Firefox, todavía había varias aplicaciones que usaban XUL. Mozilla comenzó a eliminar gradualmente el soporte de XUL de su cliente de correo electrónico, Thunderbird . Lanzaron Thunderbird 78 sin soporte para extensiones basadas en XUL en 2020. [13] La suite de Internet SeaMonkey decidió volver a implementar XUL para la base de código Firefox Quantum, y el desarrollo de la suite se ralentizó posteriormente. Los desarrolladores de Pale Moon bifurcaron toda la base de código Firefox 52 ESR de Mozilla para crear la Plataforma Unificada XUL (UXP) para su motor de renderizado Goanna . UXP mantiene las capacidades tradicionales de XUL. [14] Como resultado, Pale Moon y otras aplicaciones UXP han seguido siendo de un solo proceso pero más extensibles en comparación con las versiones modernas de Firefox y Thunderbird. [15]
XUL sólo se puede utilizar con el código base de Mozilla (o una bifurcación del mismo) porque el motor Gecko (o Goanna ) realiza la representación de XUL. [16]
Los programadores de aplicaciones necesitan definir una interfaz XUL como tres conjuntos discretos de componentes:
XUL define una amplia gama de elementos, que pertenecen aproximadamente a los siguientes tipos:
El comportamiento predeterminado de los widgets XUL se puede modificar con enlaces XBL .
XML Binding Language ( XBL ) es un lenguaje de marcado basado en XML para alterar el comportamiento de un widget XUL , como una barra de desplazamiento . [17] [18] Un archivo XBL contiene enlaces , cada uno de los cuales describe el comportamiento de un widget XUL. El elemento raíz de un archivo XBL es el elemento, que contiene uno o más elementos. Cada elemento declara un enlace, que se puede adjuntar a cualquier elemento XUL. También puede poseer un atributo. Un enlace se asigna a un elemento estableciendo la propiedad CSS en la URL del archivo del enlace. [19] Por ejemplo:<bindings>
<binding>
<binding>
id
-moz-binding
barra de desplazamiento { -moz- enlace : url ( 'somefile.xml#binding1' ); }
Este ejemplo muestra tres botones apilados uno sobre otro en un contenedor de caja vertical: [20]
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" tipo="text/css"?><window id= "ejemplo de vbox" title= "Ejemplo 3..." xmlns= "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <layout> <button id= "yes1" label= "Sí" /> <button id= "no1" label= "No" /> <button id= "maybe1" label= "Tal vez" /> </layout> </window>
XUL contiene una referencia a la película de 1984 Los Cazafantasmas . [21] El antagonista de la película es la deidad ficticia Zuul, el Guardián de la Puerta. [22] Zuul posee al personaje Dana Barrett y declara: "No hay Dana. Solo hay Zuul". [23] [21] Los creadores de XUL, que se pronuncia igual que Zuul, [24] crearon el eslogan, "No hay datos. ¡Solo hay XUL!". [25] El eslogan y Zuul como guardián de la puerta están referenciados en el URI del espacio de nombres XML de XUL y anteriormente estaban presentes en todos los complementos de Firefox: [21]
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul
— Mozilla [21]
El navegador Mozilla Amazon es un estudio de caso interesante por varias razones. En primer lugar, es una aplicación prototipo funcional, no un ejemplo construido únicamente con el propósito de demostrar la tecnología. En segundo lugar, ejercita muchas áreas del soporte de Mozilla para el desarrollo remoto y, por lo tanto, muestra las capacidades, el potencial y las limitaciones de las aplicaciones XUL remotas. Por último, demuestra el soporte de Mozilla para los servicios web, una importante tecnología emergente para el desarrollo de aplicaciones web.
El plan es cambiar Pale Moon de nuestra plataforma actual a UXP (planes a largo plazo) porque una plataforma basada en XUL desarrollada y mantenida es la única forma en que una aplicación XUL (como Pale Moon) tiene alguna posibilidad de sobrevivir sin caer en la obsolescencia, con Mozilla abandonando esta tecnología. ¡Esa ha sido la razón principal por la que decidí empezar con esta plataforma! De todos modos, la plataforma no se desarrollará únicamente para el posible uso futuro de Pale Moon, se desarrolla para cualquier aplicación XUL futura que de lo contrario estaría muerta en el agua. Básicamente, estamos tomando el relevo de Mozilla en el desarrollo y mantenimiento de una plataforma para aplicaciones XUL de cualquier tipo; Mozilla no debería ser visto como "upstream" porque no lo es.