XUL

Last updated
XUL
Paradigm Declarative (markup language)
Developer Mozilla Foundation
Implementation language C++
Platform Gecko
OS Cross-platform
License MPL
Filename extensions .xul
MIME type: application/vnd.mozilla.xul+xml
Website Official documentation
Major implementations
Mozilla
Influenced by
HTML, XML

XUL ( /ˈzl/ ZOOL), which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is an XML dialect for writing graphical user interfaces, enabling developers to write user interface elements in a manner similar to web pages.

Contents

XUL applications rely on the Mozilla codebase (or a fork of it); the most prominent example is the Firefox web browser. However, in recent years, Mozilla has been reducing the usage of XUL in Firefox. [1] [2] The most notable example is the removal of add-on customization. Firefox originally permitted add-ons to extensively alter its user interface via custom XUL code, but this capability was removed in 2017 and replaced with the less-permissive WebExtensions API. [3] [4] Several forks of Firefox, such as Pale Moon, [5] Basilisk, [6] and Waterfox, [7] retain support for XUL add-ons.

History

XUL was devised at Netscape in 1997 as part of the development effort that eventually became the Mozilla codebase. [8] It never gained much traction outside of Mozilla or its forks. In the early 2000s there was some interest in using XUL by other parties, including Amazon, [9] but that dried up with the advent of HTML5. [1] [2]

With the release of Firefox 57 in 2017, Mozilla removed support for legacy add-ons, including the use of custom XUL code. [3] [4] This was a key step in the organization's long-term goal of reducing XUL usage in Firefox and replacing it with HTML5 alternatives. [1] [2] However, the UXP fork of the codebase maintains the traditional XUL capabilities. [10] [11]

Usage

XUL can only be used with the Mozilla codebase (or a fork of it) because the Gecko engine does the XUL rendering. [12]

Application programmers need to define a XUL interface as three discrete sets of components:

  1. Content: the XUL document(s), whose elements define the layout of the user interface
  2. Skin: the CSS and image files, which define the appearance of an application
  3. Locale: the files containing user-visible strings for easy software localization

XUL defines a wide range of elements, which roughly belong to the following types:

The default behavior of XUL widgets can be altered with XBL bindings.

Example

This example shows three buttons stacked on top of each other in a vertical box container: [13]

Boxes-ex1.png
<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?><windowid="vbox example"title="Example 3...."xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><layout><buttonid="yes1"label="Yes"/><buttonid="no1"label="No"/><buttonid="maybe1"label="Maybe"/></layout></window>

Ghostbusters reference

The villain of the 1984 film Ghostbusters was a deity called Zuul who possesses the character Dana Barrett and declares, "There is no Dana. There is only Zuul". [14] The creators of XUL, which is pronounced the same as Zuul, made the slogan "There is no data. There is only XUL!", part of which became the XML namespace. [15]

Related Research Articles

Plug-in (computing) Software component that adds a specific feature to an existing software application

In computing, a plug-in is a software component that adds a specific feature to an existing computer program. When a program supports plug-ins, it enables customization.

Gecko is a browser engine developed by Mozilla. It is used in the Firefox browser, the Thunderbird email client, and many other projects.

Cross Platform Component Object Model (XPCOM) is a cross-platform component model from Mozilla. It is similar to Microsoft Component Object Model (COM) and Common Object Request Broker Architecture (CORBA). It features multiple language bindings and interface description language (IDL) descriptions; thus programmers can plug their custom functions into the framework and connect it with other components.

The Book of Mozilla is a computer Easter egg found in the Netscape and Mozilla series of web browsers. It is viewed by directing the browser to about:mozilla.

XBL is an XML-based markup language for altering the behavior of XUL widgets. It was devised at Netscape in the late 1990s as an extension of XUL.

Comparison of web browsers

The following tables compare general and technical information for a number of web browsers.

Mozilla Firefox has features that allow it to be distinguished from other web browsers, such as Chrome and Internet Explorer.

Netscape Plugin Application Programming Interface (NPAPI) is an application programming interface (API) that allows browser plugins to be developed. It was first developed for Netscape browsers, starting in 1995 with Netscape Navigator 2.0, but was subsequently adopted by other browsers. With the advent of HTML5, all major web browsers have removed support for 3rd party NPAPI plugins for security reasons.

Add-on is the Mozilla term for software modules that can be added to the Firefox web browser and related applications. Mozilla hosts them on its official add-on website.

The Mozilla application framework is a collection of cross-platform software components that make up the Mozilla applications. It was originally known as XPFE, an abbreviation of cross-platform front end. It was also known as XPToolkit. To avoid confusion, it is now referred to as the Mozilla application framework.

Pentadactyl Firefox extension

Pentadactyl is a discontinued Firefox extension forked from the Vimperator and designed to provide a more efficient user interface for keyboard-fluent users. The design is heavily inspired by the Vim text editor, and the authors try to maintain consistency with it wherever possible.

ItsNat Natural AJAX, is an open-source Java component-based Ajax framework.

The Mozilla Archive Format (MAFF) is a web page archiving format provided by Firefox through an extension. It is used to save one or more web pages together with their associated audio, video, and other related web resources to a single file. Unlike MHTML, which uses MIME encoding within a single HTML file, MAFF compresses the page into a ZIP container file.

Pale Moon (web browser) Web browser

Pale Moon is an open-source web browser with an emphasis on customizability; its motto is "Your browser, Your way". There are official releases for Microsoft Windows and Linux, as well as contributed builds for various platforms.

Waterfox Open-source web browser based on Firefox

Waterfox is an open-source web browser for x64, ARM64, and PPC64LE systems. It is intended to be ethical and maintain support for legacy extensions dropped by Firefox, from which it is forked. There are official releases for Windows, Mac OS, Linux and Android in two versions: Classic and Current.

Goanna (software) Software

Goanna is an open-source browser engine that is a fork of Mozilla's Gecko. It is used in the Pale Moon browser, the Basilisk browser, and other UXP-based applications. Other uses include a fork of the K-Meleon browser and a fork of Pale Moon called Mypal.

Basilisk (web browser) Web browser

Basilisk is an open-source web browser created by the developer of the Pale Moon browser. There are releases for Microsoft Windows and Linux, and an unofficial build for macOS.

References

  1. 1 2 3 "Life After XUL". Mozilla. Retrieved 28 November 2018.
  2. 1 2 3 "Problems with XUL". mozilla.github.io. Retrieved 2019-06-07.
  3. 1 2 Firefox 57 release notes
  4. 1 2 Kev Needham (2015-08-21). "The Future of Developing Firefox Add-ons". blog.mozilla.org. Retrieved 2018-04-02.
  5. "Pale Moon future roadmap". Pale Moon . Retrieved 2018-04-02.
  6. "Pale Moon team releases first version of Basilisk browser". ghacks.net. 2017-11-17. Retrieved 2018-04-02.
  7. "Waterfox, Its Legacy and Looking to the Future". Waterfox blog. 2018-04-28. Retrieved 2018-06-20.
  8. Jorge O. Castro (2004-06-15). "Ars Technica sits down with Scott Collins from Mozilla.org". Ars Technica. Retrieved 2018-11-28.
  9. "Remote Application Development with Mozilla, Part 2: A Case Study of the Mozilla Amazon Browser (MAB)". Oreillynet . 2003-02-05.
  10. "UXP vs goanna".
  11. "There is only XUL" . Retrieved 18 September 2018.
  12. "Gecko FAQ | MDN". developer.mozilla.org. Retrieved 2021-01-05.
  13. "The Box Model - Mozilla | MDN". 2017-12-09. Archived from the original on 2017-12-09. Retrieved 2021-01-05.
  14. Ghostbusters clip
  15. Mozilla XML Namespace