XUL
Encyclopedia
In computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

, XUL , the XML User Interface Language, is an XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 user interface markup language
User interface markup language
A user interface markup language is a markup language that renders and describes graphical user interfaces and controls. Many of these markup languages are dialects of XML and are dependent upon a pre-existing scripting language engine, usually a JavaScript engine, for rendering of controls and...

 developed by the Mozilla project. XUL operates in Mozilla cross-platform applications such as Firefox
Mozilla Firefox
Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...

. The Mozilla Gecko
Gecko (layout engine)
Gecko is a free and open source layout engine used in many applications developed by Mozilla Foundation and the Mozilla Corporation , as well as in many other open source software projects....

 layout engine
Layout engine
A web browser engine, , is a software component that takes marked up content and formatting information and displays the formatted content on the screen. It "paints" on the content area of a window, which is displayed on a monitor or a printer...

 provides the implementation of XUL used in the Firefox browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

.

Design

XUL relies on multiple existing Web standards
Web standards
Web standards is a general term for the formal standards and other technical specifications that define and describe aspects of the World Wide Web. In recent years, the term has been more frequently associated with the trend of endorsing a set of standardized best practices for building web sites,...

 and Web technologies, including CSS
Cascading Style Sheets
Cascading Style Sheets is a style sheet language used to describe the presentation semantics of a document written in a markup language...

, JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

, and DOM
Document Object Model
The Document Object Model is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents. Aspects of the DOM may be addressed and manipulated within the syntax of the programming language in use...

. Such reliance makes XUL relatively easy to learn for people with a background in Web programming and design.

XUL has no formal specification and does not inter-operate
Interoperability
Interoperability is a property referring to the ability of diverse systems and organizations to work together . The term is often used in a technical systems engineering sense, or alternatively in a broad sense, taking into account social, political, and organizational factors that impact system to...

 with non-Gecko
Gecko (layout engine)
Gecko is a free and open source layout engine used in many applications developed by Mozilla Foundation and the Mozilla Corporation , as well as in many other open source software projects....

 implementations. However, it uses an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 implementation of Gecko, tri-licensed under the GPL
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

, LGPL
GNU Lesser General Public License
The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License or GPL and permissive licenses such as the BSD licenses and the MIT License...

, and MPL
Mozilla Public License
The Mozilla Public License is a free and open source software license. Version 1.0 was developed by Mitchell Baker when she worked as a lawyer at Netscape Communications Corporation and version 1.1 at the Mozilla Foundation...

.

Mozilla provides experimental XULRunner
XULRunner
XULRunner is a runtime environment developed by the Mozilla Foundation to provide a common back-end for XUL-based applications. It replaced the Gecko Runtime Environment, a stalled project with a similar purpose....

 build
Software build
In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact that can be run on a computer, or the result of doing so...

s to let developers build their applications on top of the Mozilla application framework
Mozilla application framework
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...

 and of XUL in particular.

XUL provides a portable
Porting
In computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed...

 definition for common widgets
Widget (computing)
In computer programming, a widget is an element of a graphical user interface that displays an information arrangement changeable by the user, such as a window or a text box. The defining characteristic of a widget is to provide a single interaction point for the direct manipulation of a given...

, allowing them to move easily to any platform on which Mozilla applications run.

XUL documents

Programmers typically 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
    User interface
    The user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...

  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 elements

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

top-level elements: window
Window (computing)
In computing, a window is a visual area containing some kind of user interface. It usually has a rectangular shape that can overlap with the area of other windows...

, page, dialog
Dialog box
In a graphical user interface of computers, a dialog box is a type of window used to enable reciprocal communication or "dialog" between a computer and its user. It may communicate information to the user, prompt the user for a response, or both...

, wizard
Wizard (software)
A software wizard or setup assistant is a user interface type that presents a user with a sequence of dialog boxes that lead the user through a series of well-defined steps. Tasks that are complex, infrequently performed, or unfamiliar may be easier to perform using a wizard...

, etc.
widgets: label, button
Button (computing)
In computing, a button is a user interface element that provides the user a simple way to trigger an event, like searching for a query at a search engine, or to interact with dialog boxes, like confirming an action.-Description:A typical button is a rectangle or rounded rectangle, wider than it is...

, text box
Text box
A text box, text field or text entry box is a kind of widget used when building a graphical user interface . A text box's purpose is to allow the user to input text information to be used by the program...

, list box, combo box
Combo box
A combo box is a commonly used graphical user interface widget . It is a combination of a drop-down list or list box and a single-line textbox, allowing the user to either type a value directly into the control or choose from a list of existing options.Combo boxes are typically applied to provide...

, radio button
Radio button
A radio button or option button is a type of graphical user interface element that allows the user to choose only one of a predefined set of options....

, check box
Check box
In computing, a checkbox is a graphical user interface element that permits the user to make multiple selections from a number of options or to have the user answer yes or no on a simple yes/no question.Normally, checkboxes are shown on...

, tree
Tree view
A tree view or an outline view is a graphical user interface element that presents a hierarchical view of information. Each item can have a number of subitems...

, menu
Menu (computing)
In computing and telecommunications, a menu is a list of commands presented to an operator by a computer or communications system. A menu is used in contrast to a command-line interface, where instructions to the computer are given in the form of commands .Choices given from a menu may be selected...

, toolbar
Toolbar
In a graphical user interface, on a computer monitor, a toolbar is a GUI widget on which on-screen buttons, icons, menus, or other input or output elements are placed. Toolbars are seen in office suites, graphics editors, and web browsers...

, group box, tab box
Tab (GUI)
In the area of graphical user interfaces , a tabbed document interface is one that allows multiple documents to be contained within a single window, using tabs as a navigational widget for switching between sets of documents...

, colorpicker, spacer, splitter, etc.
box model: box, grid, stack, deck, etc.
events and scripts: script, command, key, broadcaster, observer, etc.
data source: template, rule, etc.
others: overlay (analogous to SSI
Server Side Includes
Server Side Includes is a simple interpreted server-side scripting language used almost exclusively for the Web.The most frequent use of SSI is to include the contents of one or more files into a web page on a web server...

, but client-side and more powerful, with higher performance), iframe, browser, editor, etc.

One can use elements from other applications of XML within XUL documents, such as XHTML
XHTML
XHTML is a family of XML markup languages that mirror or extend versions of the widely-used Hypertext Markup Language , the language in which web pages are written....

, SVG, and MathML
MathML
Mathematical Markup Language is an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents...

.

Mozilla added some common widgets — (sometimes called "slider"), (spinbox), time and date pickers — during the Gecko 1.9 development cycle.

XUL applications

While XUL serves primarily for constructing Mozilla applications and their extensions, it may also feature in Web application
Web application
A web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...

s transferred over HTTP. The Mozilla Amazon Browser, a former XUL application of this type (and well-known in its day), provided a rich interface for searching books at Amazon.com
Amazon.com
Amazon.com, Inc. is a multinational electronic commerce company headquartered in Seattle, Washington, United States. It is the world's largest online retailer. Amazon has separate websites for the following countries: United States, Canada, United Kingdom, Germany, France, Italy, Spain, Japan, and...

.

However, many of the powerful features of Mozilla (such as privileged XPCOM
XPCOM
XPCOM is a cross-platform component model from Mozilla. It is similar to Microsoft COM and CORBA. It has multiple language bindings and IDL descriptions so programmers can plug their custom functionality into the framework and connect it with other components.-The model:XPCOM is one of the main...

 objects) remain unavailable to unprivileged XUL documents unless the script has a digital signature
Digital signature
A digital signature or digital signature scheme is a mathematical scheme for demonstrating the authenticity of a digital message or document. A valid digital signature gives a recipient reason to believe that the message was created by a known sender, and that it was not altered in transit...

, and unless the user obtains grants of certain privileges to the application. Such documents also suffer from various limitations of the browser, including the inability to load remote XUL, DTD, and RDF documents.

As Gecko
Gecko (layout engine)
Gecko is a free and open source layout engine used in many applications developed by Mozilla Foundation and the Mozilla Corporation , as well as in many other open source software projects....

 provides the only full implementation of XUL, such applications remain inaccessible to users of browsers not based on Mozilla. Mozilla-programmers sometimes refer to XUL applications running locally as chrome.

Other applications using XUL are:
  • The Ample SDK
    Ample SDK
    Ample SDK is a lightweight JavaScript library intended to simplify cross-browser web application development. Although the Ample SDK allows you to do client-side scripting in a very similar way as jQuery and many other JavaScript libraries, its main purpose is to enable development of declarative...

     Open-Source GUI Framework provides a cross-browser implementation of XUL in JavaScript.
  • The ActiveState Komodo
    ActiveState Komodo
    Komodo Edit is a highly regarded free text editor for dynamic programming languages. Introduced in January 2007, with the release of version 4.3, Komodo Edit is built on top of the Open Komodo project...

     IDE uses XUL as well as the Open Komodo project announced in 2007.
  • The Songbird
    Songbird (software)
    Songbird is a free and open source software audio player and web browser, with a stated mission "to incubate Songbird, the first Web player, to catalyze and champion a diverse, open Media Web."...

     music-player and Miro video-player both use built-in XUL.
  • The Elixon WCMS/XUL Content management system
    Content management system
    A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...

     uses exclusively remote XUL, thus overcoming some of the aforementioned limits of remote unprivileged XUL documents.
  • The developers of the Celtx
    Celtx
    Celtx is free media pre-production software designed for creating and organizing media projects like screenplays, films, videos, stageplays, audio plays, documentaries, machinima, comics, games and podcasts....

     media pre-production application used XUL.
  • The Flickr
    Flickr
    Flickr is an image hosting and video hosting website, web services suite, and online community that was created by Ludicorp in 2004 and acquired by Yahoo! in 2005. In addition to being a popular website for users to share and embed personal photographs, the service is widely used by bloggers to...

     Uploadr was built using XUL


With the release of Firefox 4, support for remote XUL was disabled by default, due to security concerns. Loading an XUL page via HTTP would now display an error unless the domain was added to a hidden whitelist.

The name

The name "XUL" references the film Ghostbusters
Ghostbusters
Ghostbusters is a 1984 American science fiction comedy film directed by Ivan Reitman and written by Dan Aykroyd and Harold Ramis. The film stars Bill Murray, Dan Aykroyd, Sigourney Weaver, Harold Ramis, and Rick Moranis and follows three eccentric parapsychologists in New York City, who start a...

(1984), in which the ghost of an ancient Sumer
Sumer
Sumer was a civilization and historical region in southern Mesopotamia, modern Iraq during the Chalcolithic and Early Bronze Age....

ian deity called Zuul
Zu (mythology)
Zu, also known as Anzu and Imdugud, in Persian and Sumerian, is a lesser divinity of Akkadian mythology, and the son of the bird goddess Siris. He is also said to be conceived by the pure waters of the Apsu-gods and the wide Earth...

possesses the character Dana Barrett (played by Sigourney Weaver
Sigourney Weaver
Sigourney Weaver is an American actress. She is best known for her critically acclaimed role of Ellen Ripley in the four Alien films: Alien, Aliens, Alien 3 and Alien Resurrection, for which she has received worldwide recognition .Other notable roles include Dana...

) and declares, "There is no Dana, only Zuul". Since XUL, like MXML
MXML
MXML is an XML-based user interface markup language first introduced by Macromedia in March 2004. Application developers use MXML in combination with ActionScript to develop rich Internet applications, with products such as Adobe Flex....

, uses XML to define an interface rather than a document, its developers adopted the slogan: "There is no data, there is only XUL". Hence the XML namespace
XML Namespace
xmlns tagged XML namespaces are used for providing uniquely named elements and attributes in an XML document. They are defined in a W3C recommendation. An XML instance may contain element or attribute names from more than one XML vocabulary...

 URI
Uniform Resource Identifier
In computing, a uniform resource identifier is a string of characters used to identify a name or a resource on the Internet. Such identification enables interaction with representations of the resource over a network using specific protocols...

 at the beginning of every XUL document:

http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul

The linked document displays the slogan in large letters in the center of the screen.

"Keymaster" and "gatekeeper" also refer to the plot-line of the Ghostbusters film . (Other references to Ghostbusters also occur within Mozilla products: for instance, the JavaScript debugger
Debugger
A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...

 component is called Venkman
Venkman
Venkman is the JavaScript debugger component of the Mozilla Application Suite. It is also available as a Mozilla Firefox extension. Venkman is named after the character Dr. Peter Venkman played by Bill Murray in the movies Ghostbusters and Ghostbusters II.-History:In 1998, John Bandhauer was in...

, after one of the main characters
Peter Venkman
Peter Venkman, Ph.D. is a fictional character from the Ghostbusters franchise. He is a parapsychologist and member of the Ghostbusters, appearing in the films Ghostbusters and Ghostbusters II and in the animated television series The Real Ghostbusters...

 in the film.)

Example

This example shows 3 buttons stacked on top of each other in a vertical box container:





xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 
x
OK