GeckoView
   HOME

TheInfoList



OR:

Gecko is a browser engine developed by Mozilla. It is used in the Firefox browser, the Thunderbird email client, and many other projects. Gecko is designed to support open Internet standards, and is used by different applications to display web pages and, in some cases, an application's user interface itself (by rendering XUL). Gecko offers a rich programming API that makes it suitable for a wide variety of roles in Internet-enabled applications, such as web browsers, content presentation, and client/server. Gecko is written in C++ and JavaScript, and, since 2016, additionally in Rust. It is
free and open-source software Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
subject to the terms of the Mozilla Public License version 2. Mozilla officially supports its use on
Android Android may refer to: Science and technology * Android (robot), a humanoid robot or synthetic organism designed to imitate a human * Android (operating system), Google's mobile operating system ** Bugdroid, a Google mascot sometimes referred to ...
, Linux, macOS, and Windows.


History

Development of the layout engine now known as Gecko began at
Netscape Netscape Communications Corporation (originally Mosaic Communications Corporation) was an American independent computer services company with headquarters in Mountain View, California and then Dulles, Virginia. Its Netscape web browser was onc ...
in 1997, following the company's purchase of DigitalStyle. The existing Netscape rendering engine, originally written for Netscape Navigator 1.0 and upgraded through the years, was slow, did not comply well with W3C standards, had limited support for dynamic HTML and lacked features such as incremental reflow (when the layout engine rearranges elements on the screen as new data is downloaded and added to the page). The new layout engine was developed in parallel with the old, with the intention being to integrate it into Netscape Communicator when it was mature and stable. At least one more major revision of Netscape was expected to be released with the old layout engine before the switch. After the launch of the Mozilla project in early 1998, the new layout engine code was released under an open-source license. Originally unveiled as ''Raptor'', the name had to be changed to ''NGLayout'' (next generation layout) due to trademark problems. Netscape later rebranded NGLayout as ''Gecko''. While Mozilla Organization (the forerunner of the Mozilla Foundation) initially continued to use the NGLayout name (Gecko was a Netscape trademark), eventually the Gecko branding won out. In October 1998, Netscape announced that its next browser would use Gecko (which was still called NGLayout at the time) rather than the old layout engine, requiring large parts of the application to be rewritten. While this decision was popular with web standards advocates, it was largely unpopular with Netscape developers, who were unhappy with the six months given for the rewrite. It also meant that most of the work done for Netscape Communicator 5.0 (including development on the Mariner improvements to the old layout engine) had to be abandoned. Netscape 6, the first Netscape release to incorporate Gecko, was released in November 2000 (the name Netscape 5 was never used). As Gecko development continued, other applications and embedders began to make use of it.
America Online AOL (stylized as Aol., formerly a company known as AOL Inc. and originally known as America Online) is an American web portal and online service provider based in New York City. It is a brand marketed by the current incarnation of Yahoo! Inc. ...
, by this time Netscape's parent company, eventually adopted it for use in
CompuServe CompuServe (CompuServe Information Service, also known by its initialism CIS) was an American online service provider, the first major commercial one in the world – described in 1994 as "the oldest of the Big Three information services (the oth ...
7.0 and AOL for Mac OS X (these products had previously embedded Internet Explorer). However, with the exception of a few
betas ''Betas'' is an American streaming television series that was produced by Amazon Studios. The show starred Joe Dinicol and Karan Soni as "dating app" developers in Silicon Valley who are looking for an investor. Amazon offered the first three e ...
, Gecko was never used in the main
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
AOL client. On July 15, 2003, AOL laid off the remaining Gecko developers and the Mozilla Foundation (formed on the same day) became the main steward of Gecko development. Today, Gecko is developed by employees of the Mozilla Corporation, employees of companies that contribute to the Mozilla project, and volunteers. In October 2016, Mozilla announced
Quantum In physics, a quantum (plural quanta) is the minimum amount of any physical entity (physical property) involved in an interaction. The fundamental notion that a physical property can be "quantized" is referred to as "the hypothesis of quantizati ...
, an ongoing project encompassing several
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
efforts to "build the next-generation web engine for Firefox users". It includes numerous improvements to Gecko, taken from the experimental Servo project. Firefox 57, also known as "Firefox Quantum", first shipping in November 2017, is the initial version with major components from the Quantum/Servo projects enabled. These include increased performance in the
CSS Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML (including XML dialects such as SVG, MathML or XHTML). CSS is a cornerstone techno ...
and GPU rendering components. Additional components will be merged from Servo to Gecko incrementally in future versions. In September 2018, Mozilla announced GeckoView, the foundation of Mozilla's next generation of mobile products based on a software library that makes Gecko reusable for Android, encompassing newer software development efforts to "decouple the engine itself from its user interface, and made it easy to embed in other applications". Firefox Focus 7.0, shipped in the same month, is the initial version introduced GeckoView, with increased performance in median page loading. Firefox Reality was also built with GeckoView. In June 2019, Mozilla announced Firefox Preview as an ongoing project that focuses on building an Android web browser with GeckoView. Firefox for Android 79, also known as "Firefox Daylight", first shipping in August 2020, is the first stable release of that with major components powered by GeckoView engine.


Standards support

From the outset, Gecko was designed to support open Internet standards. Some of the standards Gecko supports include: *
CSS Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML (including XML dialects such as SVG, MathML or XHTML). CSS is a cornerstone techno ...
Level 3 *
DOM Dom or DOM may refer to: People and fictional characters * Dom (given name), including fictional characters * Dom (surname) * Dom La Nena (born 1989), stage name of Brazilian-born cellist, singer and songwriter Dominique Pinto * Dom people, an et ...
* HTML5 * JavaScript ( ECMAScript ES6 or superior, currently ECMAScript 2021 ES12), implemented in SpiderMonkey * MathML * RDF * XForms (via an official extension) * XHTML 1.0 * XML 1.0 *
XSLT XSLT (Extensible Stylesheet Language Transformations) is a language originally designed for transforming XML documents into other XML documents, or other formats such as HTML for web pages, plain text or XSL Formatting Objects, which may subseque ...
and XPath, implemented in TransforMiiX Gecko also supports SVG.


Legacy IE non-standard support

In order to support web pages designed for legacy versions of Netscape and Internet Explorer, Gecko supports
DOCTYPE #REDIRECT Document type declaration {{redirect category shell, {{R move{{R from other capitalisation{{R up ...
switching. Documents with a modern DOCTYPE are rendered in standards compliance mode, which follows the W3C standards strictly. Documents that have no DOCTYPE or an older DOCTYPE are rendered in quirks mode, which emulates some of the non-standard oddities of Netscape Communicator 4.x; however, some of the 4.x features (such as layers) are not supported. Gecko also has limited support for some non-standard Internet Explorer features, such as the marquee element and the document.all property (though pages explicitly testing for document.all will be told it is not supported).


Usage

Gecko is primarily used in web browsers, the earliest being Netscape 6 and
Mozilla Suite The Mozilla Application Suite (originally known as Mozilla, marketed as the Mozilla Suite) is a discontinued cross-platform integrated Internet suite. Its development was initiated by Netscape Communications Corporation, before their acquisitio ...
(later renamed SeaMonkey). It is also used in other Mozilla web browser derivatives such as Firefox and
Firefox for mobile Firefox for Android is a web browser developed by Mozilla for Android smartphones and tablet computers. As with its desktop version, it uses the Gecko layout engine, and supports features such as synchronization with Firefox Sync, blocking web ...
and the implementation of the Internet Explorer-clone that is part of Wine. Mozilla also uses it in their Thunderbird email-client. Other web browsers using Gecko include GNU IceCat, Waterfox, K-Meleon, Lunascape, Portable Firefox, Conkeror, Classilla, TenFourFox. Gecko is also used by
Sugar Sugar is the generic name for sweet-tasting, soluble carbohydrates, many of which are used in food. Simple sugars, also called monosaccharides, include glucose, fructose, and galactose. Compound sugars, also called disaccharides or double ...
for the OLPC XO-1 computer. Gecko is used as a complete implementation of the XUL ( XML User Interface Language). Gecko currently defines the XUL specification.


Past users

Products that formerly used Gecko include Pale Moon (now using Goanna), Epiphany (now known as GNOME Web and using
WebKitGTK WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as on the iOS and iPadOS version of any web browser. WebKit is also used by the BlackBerry Browser, PlayStation consoles beginning from the PS3, ...
), and
GNOME DevHelp Devhelp is a GTK/GNOME browser for API documentation; it works natively with gtk-doc (which is the API reference format for GTK/GNOME documentation). It is integrated in GNOME development tools such as GNOME Builder, Glade and Anjuta, and is an ...
(now using
WebKitGTK WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as on the iOS and iPadOS version of any web browser. WebKit is also used by the BlackBerry Browser, PlayStation consoles beginning from the PS3, ...
.) Discontinued products that used Gecko include
Swiftfox Swiftfox was a web browser based on Mozilla Firefox. It was available for Linux platforms and distributed by Jason Halme. Swiftfox was a set of builds of Firefox optimized for different Intel and AMD microprocessors. Swiftfox was freely downloa ...
, Flock, Galeon,
Camino Camino may refer to: Places *Camino, California, United States, a census-designated place *Camino, Piedmont, Italy, a town * Camino, Veneto, Italy, a town People *Jaime Camino (1936–2015), Spanish film director and screenwriter *Renae Camino ...
,
Minimo Minimo (from "Mini Mozilla") was a project to create a version of the Mozilla web browser for small devices like personal digital assistants and mobile phones. The project aimed to make it easier for developers to embed parts of Mozilla into syste ...
, Beonex Communicator,
Kazehakase Kazehakase (Japanese: ) was a web browser for Unix-like operating systems that uses the GTK+ libraries. Kazehakase embeds the Gecko layout engine as well as GTK+ WebKit. The browser is named after the short story "Kazehakase" by the Japanese aut ...
, Songbird, Sunbird (calendar),
MicroB MicroB was a mobile browser, mobile web browser developed by Nokia for use in smartphones and mobile devices that run the Maemo operating system. The browser is Mozilla-based and uses the Gecko (layout engine), Gecko Browser engine, layout engine ...
, Nightingale,
Instantbird Instantbird is a discontinued cross-platform instant messaging client based on Mozilla's XULRunner and the open-source library ''libpurple'' used in Pidgin. Instantbird is free software available under the GNU General Public License. Over 250 ...
, and Picasa for Linux.


Proprietary dependency

On Windows and other platforms, Gecko depends on proprietary compilers. Thus, FOSS distributions of Linux cannot include the Gecko package used in the Windows compatibility layer Wine. After Gecko 2.0, the version number was bumped to 5.0 to match Firefox 5, and from then on has been kept in sync with the major version number for both Firefox and Thunderbird, to reflect the fact that it is no longer a separate component.


Bloat

In the Netscape era, a combination of poor technical and management decisions resulted in Gecko software bloat. Thus in 2001 Apple chose to fork KHTML, not Gecko, to create the WebKit engine for its
Safari A safari (; ) is an overland journey to observe wild animals, especially in eastern or southern Africa. The so-called "Big Five" game animals of Africa – lion, leopard, rhinoceros, elephant, and Cape buffalo – particularly form an importa ...
browser. However, by 2008 Mozilla had addressed some of the bloat problems, resulting in big performance improvements for Gecko.


Quantum

Quantum is a Mozilla project encompassing several
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
efforts to "build the next-generation web engine for Firefox users". It includes numerous improvements to Gecko, largely incorporated from the experimental Servo project. Quantum also includes refinements to the user interface and interactions. Firefox 57, released in November 2017, is the initial version with a Servo component enabled. Mozilla dubs this and several planned future releases "Firefox Quantum".


Background

In 2012, Mozilla began the experimental Servo project, which is an engine designed from scratch with the goals of improving concurrency and parallelism while also reducing memory safety vulnerabilities. Servo is written in the Rust programming language, also created by Mozilla, which is designed to generate compiled code with better memory safety, concurrency, and parallelism than compiled C++ code. As of April 2016, Servo needed at least several years of development to become a full-featured browser engine, hence the decision to start the Quantum project to bring stable portions of Servo into Firefox. Mozilla laid off all Servo developers in August 2020.


Components

The Quantum project is composed of several sub-projects. * CSS: Servo's parallel style sheet system integrated into Gecko. Benchmarks suggest that performance scales linearly with number of
CPU A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, and ...
cores. This was released in Firefox 57. * Render: Servo's rendering architecture, called WebRender, integrated into Gecko. WebRender replaces the immediate mode drawing model with a retained mode model that is more easily accelerated by the GPU by taking advantage of CSS/DOM's similarity to a scene graph. Worst-case scenario rendering in testing exceeds 60 frames per second. Mozilla began enabling the new renderer for select hardware/OS combinations in Firefox 67. * Compositor: Gecko's existing
compositor Compositor may refer to: * Compositor (typesetting), a person or machine which arranged movable type for printing ** Paige Compositor, a device developed to replace manual compositors, which was a commercial failure * Compositing software, used i ...
moved to its own process, isolating browser tabs from graphics driver related crashes. Since compositor crashes will not bring down the browser content process, the compositor process can be restarted transparently without losing user data. This was released in Firefox 53. * DOM: Loosely inspired by Servo's Constellation architecture and Opera's
Presto Presto may refer to: Computing * Presto (browser engine), an engine previously used in the Opera web browser * Presto (operating system), a Linux-based OS by Xandros * Presto (SQL query engine), a distributed query engine * Presto (animation s ...
engine, Quantum DOM uses cooperatively scheduled threads within the
DOM Dom or DOM may refer to: People and fictional characters * Dom (given name), including fictional characters * Dom (surname) * Dom La Nena (born 1989), stage name of Brazilian-born cellist, singer and songwriter Dominique Pinto * Dom people, an et ...
to increase responsiveness without increasing the number of processes and, thus, memory usage. The core of this shipped in Firefox 57. * Flow: An umbrella for user visible performance improvements driven by a team that works across Gecko components. Focused on real user performance improvements on major webapps, primarily G Suite (now called Google Workspace) and Facebook. This work completed and shipped for Firefox 57. * Photon: A UI refresh of the entire application, with a strong focus on improving UI performance. Treated as a sister project to Quantum Flow. This was released in Firefox 57. * Network: Improve the performance of
Necko 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 co ...
, Gecko's networking layer, by moving more network activity off the main thread, context dependent prioritization of networking streams, and racing the cache layer with the network. This feature was released in Firefox 59.


Azure

The Mozilla Azure project is a stateless low-level graphics abstraction API used in Firefox. The project has several objectives including more accurate Direct2D compatibility, optimized state interoperability, and improved control over performance characteristics and bugs. Azure will provide 2D hardware acceleration on top of 3D graphics backends. Firefox began using Azure instead of Cairo in 2012. It is written in C++ and used by Servo. The Azure name is an ode to the early Netscape founder James H. Clark and his earlier work at Silicon Graphics where workstations were often named after colors.


References


External links


Gecko - MDN Web Docs

Gecko development wiki (wiki.mozilla.org)



Web Browser Standards Support

JRex
( Java API for Gecko) {{DEFAULTSORT:Gecko (Layout Engine) Cross-platform software Free layout engines Free software programmed in C++ Mozilla Software that uses Cairo (graphics) Free software programmed in Rust