Gecko (software): Difference between revisions

Content deleted Content added
JF001 (talk | contribs)
Legacy support information moved from standards support section to it's own dedicated section
m Azure: As a list.
(46 intermediate revisions by 28 users not shown)
Line 1:
{{shortShort description|FreeOpen-source HTML layout engine}}
{{Infobox software
| name = Gecko
| logo = [[file:Mozillagecko-logo.svg|81x89px]]
| screenshot = =
| caption = =
| developer = [[Mozilla Foundation]], [[Mozilla Corporation]], [[Adobe Systems]], and other contributors
| programming language = [[C++]], [[JavaScript]], [[Rust (programming language)|Rust]]
| genre = [[Browser engine]]
| license = [[Mozilla Public License|MPL 2.0]]<ref>{{Cite web|url=https://www.mozilla.org/en-US/about/legal/eula/|title=Mozilla Foundation End-User Licensing Agreements|website=Mozilla}}</ref><ref>{{Cite web |url = https://www.mozilla.org/foundation/licensing.html |title = Mozilla Licensing Policies |publisher = mozilla.org |access-date = 2013-03-26}}</ref>
| latest release version = {{wikidata|property|reference|P348}}125
| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| website = {{URL|https://developer.mozilla.org/en-US/docs/Glossary/Gecko}}
}}
}}'''Gecko''' (stylized as ɢecko) is a [[browser engine]] developed by [[Mozilla]]. It is used in the [[Firefox]] browser, the [[Mozilla Thunderbird|Thunderbird]] [[email client]], and many other projects.
 
Gecko is designed to support [[Open standard|open]] [[web standards|Internet standards]], and is used by different applications to display [[web page]]s and, in some cases, an application's [[user interface]] itself (by rendering [[XML User Interface Language|XUL]]). Gecko offers a rich programming [[application programming interface|API]] that makes it suitable for a wide variety of roles in Internet-enabled applications, such as [[web browsers]], content presentation, and [[client/server]].<ref>{{cite web |url = https://www.mozilla.org/projects/embedding/ |title = Embedding Mozilla |publisher = Mozilla.org |date = 2012-10-25 |access-date = 2012-10-31 }}</ref>
 
Gecko is written in [[C++]] and [[JavaScript]],<ref name="Android build">{{cite web |url=https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_for_Android_build |title=Simple Firefox for Android build |quote=Gecko is implemented using C++ and JavaScript.<!--at least for Android--> |access-date=2017-05-03 |archive-date=2019-09-29 |archive-url=https://web.archive.org/web/20190929165146/https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_for_Android_build |url-status=dead }}</ref><ref name="Servo_paper">{{cite journal|last1=Bergstrom|display-authors=etal|first1=Lars|title=Engineering the Servo Web Browser Engine using Rust|journal=Proceedings of the International Conference on Software Engineering|date=May 2016|url=https://raw.githubusercontent.com/larsbergstrom/papers/master/icse16-servo-preprint.pdf |archive-url=https://web.archive.org/web/20160529014010/https://raw.githubusercontent.com/larsbergstrom/papers/master/icse16-servo-preprint.pdf |archive-date=2016-05-29 |url-status=live}}</ref> and, since 2016, additionally in [[Rust (programming language)|Rust]].<ref>{{Cite web|url=https://groups.google.com/forum/m/#!msg/mozilla.dev.platform/Gzwh1IbxvHE/7RlO21I6DwAJ|title=Google Groups|website=groups.google.com}}</ref><ref>{{Cite web|url=https://www.infoworld.com/article/3165424/mozilla-binds-firefoxs-fate-to-the-rust-language.html|title=Mozilla binds Firefox's fate to the Rust language|first=Serdar|last=Yegulalp|date=February 3, 2017|website=InfoWorld}}</ref> It is [[free and open-source software]] subject to the terms of the [[Mozilla Public License]] version 2.<ref>{{cite web |url = https://wiki.mozilla.org/MPL_Upgrade |title = MPL 2 Upgrade |access-date = 2012-08-18 }}</ref> Mozilla officially supports its use on [[Android (operating system)|Android]],<ref name="Android build"/> [[Linux]], [[macOS]], and [[Windows]].<ref>{{Cite web|url=https://developer.mozilla.org/en-US/docs/Gecko/FAQ|title=Gecko FAQ|website=MDN Web Docs|access-date=2017-05-03|archive-date=2019-10-08|archive-url=https://web.archive.org/web/20191008071852/https://developer.mozilla.org/en-US/docs/Gecko/FAQ|url-status=dead}}</ref>
 
==History==
Development of the layout engine now known as Gecko began at [[Netscape Communications Corporation|Netscape]] 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),<ref>{{cite web|url=https://www.mozilla.org/newlayout/gecko.html |title=nglayout project: identity crisis |publisher=Mozilla.org |access-date=2012-10-31 |url-status=dead |archive-url=https://web.archive.org/web/20110629154746/http://www.mozilla.org/newlayout/gecko.html |archive-date=2011-06-29 }}</ref> eventually the Gecko branding won out.{{Citation needed|date=April 2023}}
 
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.<ref name="Collins_interview"/> It also meant that most of the work done for [[Netscape 5|Netscape Communicator 5.0]] (including development on the [[Mariner (layout engine)|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).{{Citation needed|date=April 2023}}
 
As Gecko development continued, other applications and embedders began to make use of it. [[America Online]], by this time Netscape's parent company, eventually adopted it for use in [[CompuServe]] 7.0 and AOL for Mac OS X (these products had previously embedded Internet Explorer). However, with the exception of a few [[development stage|betas]], Gecko was never used in the main [[Microsoft Windows]] AOL client.{{Citation needed|date=April 2023}}
 
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.{{Citation needed|date=April 2023}}
 
In the Netscape era, a combination of poor technical and management decisions resulted in Gecko [[software bloat]].<ref name="Collins_interview">{{cite web |url = https://arstechnica.com/information-technology/2004/06/collins-interview/2/ |title = Ars Technica sits down with Scott Collins from Mozilla.org |author = Jorge O. Castro |website = Ars Technica |date = 2004-06-15 |access-date=2017-02-16}}</ref><ref name="FestaCnet"/><ref name="dbaron-complexity">{{cite web|url=http://dbaron.org/log/2003-01#l20030109 |archive-url=https://web.archive.org/web/20090728082253/http://dbaron.org/log/2003-01 |title=Thursday 2003-01-09 |work=David Baron's weblog |author=David Baron |publisher=self-published |date=2003-01-09 |archive-date=2009-07-28 |access-date=2017-02-16 |url-status=dead }}</ref> Thus in 2001 [[Apple Inc.|Apple]] chose to fork [[KHTML]], not Gecko, to create the [[WebKit]] [[browser engine|engine]] for its [[Safari (web browser)|Safari]] browser.<ref name="FestaCnet">{{cite web|url=http://news.cnet.com/2100-1023-980492.html |archive-url=https://web.archive.org/web/20121025015655/http://news.cnet.com/2100-1023-980492.html |title=Apple snub stings Mozilla |author=Paul Festa |publisher=[[CNET Networks]] |date=2003-01-14 |archive-date=2012-10-25 |access-date=2017-02-16 |author-link=Paul Festa |url-status=dead }}</ref><ref name="dbaron-complexity"/> However, by 2008 Mozilla had addressed some of the bloat problems, resulting in bigsignificant performance improvements for Gecko.<ref>{{cite web |url =https://arstechnica.com/information-technology/2008/09/mozilla-committed-to-gecko/ |author = Ryan Paul |title = Why Mozilla is committed to Gecko as WebKit popularity grows |date = 2008-09-09 |access-date=2017-02-16}}</ref>
In October 2016, Mozilla announced [[#Quantum|Quantum]], an ongoing project encompassing several [[software development]] efforts to "build the next-generation web engine for [[Firefox]] users". It includes numerous improvements to Gecko, taken from the experimental [[Servo (layout engine)|Servo]] project.<ref name="QuantWiki">{{cite web|url=https://wiki.mozilla.org/Quantum|title=Quantum|website=Mozilla Wiki|access-date=2017-04-20}}</ref><ref name="QuantAnnounce">{{Cite news|url=http://news.softpedia.com/news/mozilla-announces-quantum-a-new-browser-engine-for-firefox-509767.shtml|title=Mozilla Announces Quantum, a New Browser Engine for Firefox|last=Cimpanu|first=Catalin|newspaper=softpedia|access-date=2016-11-07}}</ref> 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]] and [[GPU]] rendering components. Additional components will be merged from Servo to Gecko incrementally in future versions.<ref name="QuantWiki" />
 
In October 2016, Mozilla announced [[#Quantum|Quantum]], an ongoing project encompassing several [[software development]] efforts to "build the next-generation web engine for [[Firefox]] users". It included numerous improvements to Gecko, taken from the experimental [[Servo (software)|Servo]] project.<ref name="QuantWiki">{{cite web|url=https://wiki.mozilla.org/Quantum|title=Quantum|website=Mozilla Wiki|access-date=2017-04-20}}</ref><ref name="QuantAnnounce">{{Cite news|url=http://news.softpedia.com/news/mozilla-announces-quantum-a-new-browser-engine-for-firefox-509767.shtml|title=Mozilla Announces Quantum, a New Browser Engine for Firefox|last=Cimpanu|first=Catalin|newspaper=softpedia|access-date=2016-11-07}}</ref> 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]] and [[GPU]] rendering components. Additional components will be merged from Servo to Gecko incrementally in future versions.<ref name="QuantWiki" />

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,<ref>{{Cite web|url=https://techdows.com/2018/09/firefox-focus-7-0-to-use-geckoview-gecko-engine.html|title=Firefox Focus 7.0 enters beta, Switches to GeckoView (Gecko Engine)|date=14 September 2018|access-date=19 September 2019|archive-date=31 July 2020|archive-url=https://web.archive.org/web/20200731225124/https://techdows.com/2018/09/firefox-focus-7-0-to-use-geckoview-gecko-engine.html|url-status=dead}}</ref> is the initial version introduced GeckoView, with increased performance in median page loading.<ref name="focus-with-geckoview">{{cite web|url=https://hacks.mozilla.org/2018/09/focus-with-geckoview/|title=Firefox Focus with GeckoView|date=September 13, 2018|website=Mozilla Hacks|access-date=September 4, 2019}}</ref><ref>{{Cite web|url=https://support.mozilla.org/kb/whats-new-firefox-focus-android-version-7|title=What's new in Firefox Focus for Android (version 7) {{!}} Firefox Focus Help|website=support.mozilla.org|language=en-US|access-date=September 4, 2019}}</ref> Firefox Reality was also built with GeckoView.<ref name="focus-with-geckoview" /> In June 2019, Mozilla announced Firefox Preview as an ongoing project that focuses on building an Android web browser with GeckoView.<ref>{{cite web|url=https://hacks.mozilla.org/2019/06/geckoview-in-2019/|title=GeckoView in 2019|date=June 27, 2019|website=Mozilla Hacks|access-date=September 4, 2019}}</ref> 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.<ref>{{Cite web|date=August 25, 2020|title=Fast, personalized and private by design on all platforms: introducing a new Firefox for Android experience|author=Vesta Zare|url=https://blog.mozilla.org/blog/2020/08/25/introducing-a-new-firefox-for-android-experience/|access-date=September 22, 2020|website=Mozilla Blog|language=en-US}}</ref>
 
==Standards support==
Line 39 ⟶ 42:
From the outset, Gecko was designed to support open Internet standards. Some of the standards Gecko supports include:
 
* [[Cascading Style Sheets|CSS]] Level 3
* [[Document Object Model|DOM]]
* [[HTML5]]
* [[JavaScript]] ([[ECMAScript]] 5.1ES6 or superior,<ref>{{citeCite web |url title=Cross https://developer.mozilla.org/en-US/docs/Web/JavaScript/ECMAScript_5_support_in_MozillaBrowser |titleCompatibility =of ECMAScript 52015 support(ES6) in MozillaFirefox |publisher102 |url= Developerhttps://www.mozillalambdatest.orgcom/web-technologies/es6-support-on-firefox-102 |access-date = 20132022-1108-1421 |access-datewebsite=www.lambdatest.com |language= 2013en-12-02 US}}</ref> , currently [[ECMAScript]] 2021 ES12), implemented in [[SpiderMonkey]]
* [[MathML]]
* [[Resource Description Framework|RDF]]
Line 50 ⟶ 53:
* [[XSLT]] and [[XPath]], implemented in TransforMiiX
 
Gecko also supports [[Scalable Vector Graphics|SVG]].<ref>{{Cite web |title=Cross Browser Compatibility of SVG (basic support) in Firefox 102 |url=https://www.lambdatest.com/web-technologies/svg-support-on-firefox-102 |access-date=2022-08-21 |website=www.lambdatest.com |language=en-US}}</ref>
 
==Non-standard legacyLegacy IE non-standard support==
In order to support [[web page]]s designed for legacy versions of Netscape and Internet Explorer, Gecko supports [[document type declaration|DOCTYPE]] 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 [[Layer (HTML tag)|layers]]) are not supported.
 
Line 62 ⟶ 65:
Other web browsers using Gecko include [[GNU IceCat]],<ref>{{Cite web|url=https://www.fsf.org/working-together/gang/gecko|title=Gecko|last=sdubois|date=24 June 2010|website=Free Software Foundation|access-date=23 May 2019}}</ref> [[Waterfox]], [[K-Meleon]], [[Lunascape (web browser)|Lunascape]], [[Mozilla Firefox, Portable Edition|Portable Firefox]], [[Conkeror]], [[Classilla]], [[TenFourFox]].
 
Gecko is also used by [[Sugar (GUI)|Sugar]] for the [[OLPC XO-1]] computer.,<ref name="sugarui">{{Cite news |url=http://www.infoworld.com/article/07/01/03/Hnsugarinterface_1.html |title=One Laptop Per Child readies 'Sugar' interface |last=Martens |first=China |publisher=IDG News Service |date=2007-01-03 |access-date=2007-12-28 |url-status=dead |archive-url=https://web.archive.org/web/20080118115757/http://www.infoworld.com/article/07/01/03/Hnsugarinterface_1.html |archive-date=2008-01-18 }}</ref> Geckoand is used as a complete implementation of the [[XUL]] ([[XML]] User Interface Language). Gecko currently defines the XUL specification.{{needs update|date=July 2024|reason=Mozilla discontinued XUL in 2017}} Gecko is also used by the [[KaiOS]] mobile operating system, which is based on the discontinued [[Firefox OS]].<ref>{{Cite web |url=https://www.neowin.net/news/kaios-technologies-partners-with-mozilla-to-improve-gecko/ |title=KaiOS Technologies partners with Mozilla to improve Gecko |last=Hill |first=Paul |website=Neowin |date=2020-03-12 |access-date=2024-07-12}}</ref>
 
=== Past users ===
Products that formerly used Gecko include [[Pale Moon (web browser)|Pale Moon]] (now using [[Goanna (software)|Goanna]]), Epiphany (now known as [[GNOME Web]] and using [[WebKitGTK]]), and [[GNOME DevHelp]] (now using [[WebKitGTK]].).
 
Discontinued products that used Gecko include [[Swiftfox]], [[Flock (web browser)|Flock]], [[Galeon]], [[Camino (web browser)|Camino]], [[Minimo]], [[Beonex Communicator]], [[Kazehakase]], [[Songbird (software)|Songbird]], [[Mozilla Sunbird|Sunbird (calendar)]], [[MicroB]], [[Nightingale (software)|Nightingale]], [[Instantbird]], and [[Picasa]] for Linux.<ref name="picasa">{{cite web|url=http://picasa.google.com/linux/download.html#picasa30 |title=Picasa 3.0 for Linux |access-date=2008-12-28 |url-status=dead |archive-url=https://web.archive.org/web/20090107022711/http://picasa.google.com./linux/download.html |archive-date=2009-01-07 }}</ref>
 
=== Proprietary dependency ===
On Windows and other platforms, Gecko depends on proprietary compilers.<ref>{{Cite web|title=Building Firefox for Windows|url=https://firefox-source-docs.mozilla.org/setup/windows_build.html|url-status=live|website=MDN Web Docs}}</ref> Thus, [[FOSS]] distributions of [[Linux]] cannot include the Gecko package<!-- currently #define GECKO_VERSION "2.47" --> used in the Windows compatibility layer [[Wine (software)|Wine]].<ref>{{cite web |url=http://wiki.jswindle.com/index.php/Fedora#Working_Wine |title= |website=wiki.jswindle.com |archive-url=https://web.archive.org/web/20120611003752/http://wiki.jswindle.com/index.php/Fedora#Working_Wine |archive-date=June 11, 2012}}</ref>
 
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,<ref>{{cite web |title = Gecko versions and application versions |url = https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/Versions |work = [[MDN Web Docs|MDN]] |access-date = 2013-11-18 |archive-date = 2020-10-31 |archive-url = https://web.archive.org/web/20201031145622/https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/Versions |url-status = dead }}</ref> to reflect the fact that it is no longer a separate component.<ref>{{cite web |title = Not much in new Thunderbird 5, but roadmap looks promising |url = https://arstechnica.com/information-technology/2011/06/not-much-in-new-thunderbird-5-but-roadmap-looks-promising/ |website = [[Ars Technica]] |date = 30 June 2011 | access-date = 2018-02-07 }}</ref>
 
==Bloat==
In the Netscape era, a combination of poor technical and management decisions resulted in Gecko [[software bloat]].<ref name="Collins_interview">{{cite web |url = https://arstechnica.com/information-technology/2004/06/collins-interview/2/ |title = Ars Technica sits down with Scott Collins from Mozilla.org |author = Jorge O. Castro |website = Ars Technica |date = 2004-06-15 |access-date=2017-02-16}}</ref><ref name="FestaCnet"/><ref name="dbaron-complexity">{{cite web|url=http://dbaron.org/log/2003-01#l20030109 |archive-url=https://web.archive.org/web/20090728082253/http://dbaron.org/log/2003-01 |title=Thursday 2003-01-09 |work=David Baron's weblog |author=David Baron |publisher=self-published |date=2003-01-09 |archive-date=2009-07-28 |access-date=2017-02-16 |url-status=dead }}</ref> Thus in 2001 [[Apple Inc.|Apple]] chose to fork [[KHTML]], not Gecko, to create the [[WebKit]] [[browser engine|engine]] for its [[Safari (web browser)|Safari]] browser.<ref name="FestaCnet">{{cite web|url=http://news.cnet.com/2100-1023-980492.html |archive-url=https://web.archive.org/web/20121025015655/http://news.cnet.com/2100-1023-980492.html |title=Apple snub stings Mozilla |author=Paul Festa |publisher=[[CNET Networks]] |date=2003-01-14 |archive-date=2012-10-25 |access-date=2017-02-16 |author-link=Paul Festa |url-status=dead }}</ref><ref name="dbaron-complexity"/> However, by 2008 Mozilla had addressed some of the bloat problems, resulting in big performance improvements for Gecko.<ref>{{cite web |url =https://arstechnica.com/information-technology/2008/09/mozilla-committed-to-gecko/ |author = Ryan Paul |title = Why Mozilla is committed to Gecko as WebKit popularity grows |date = 2008-09-09 |access-date=2017-02-16}}</ref>
 
==Quantum==
Line 90 ⟶ 89:
The Quantum project is composed of several sub-projects.<ref name="QuantWiki"/>
 
* '''CSS''': [[Servo (layout enginesoftware)|Servo]]'s parallel [[Cascading Style Sheets|style sheet]] system integrated into Gecko. Benchmarks suggest that performance scales linearly with number of [[CPU]] cores.<ref>{{cite web|url=https://changelog.com/podcast/228|website=The Changelog|title=The Changelog|date=18 November 2016 |access-date=2017-03-28}}</ref> This was released in Firefox 57.<ref name="introFFQuantum"/>
* '''Render''': Servo's [[Rendering (computer graphics)|rendering]] architecture, called WebRender, integrated into Gecko. WebRender replaces the [[Immediate mode (computer graphics)|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.<ref>{{cite web|url=https://air.mozilla.org/bay-area-rust-meetup-february-2016/|title=Bay Area Rust Meetup February 2016|website=Air Mozilla|access-date=2017-03-28}}</ref> Mozilla began enabling the new renderer for select hardware/OS combinations in Firefox 67.<ref>{{cite web|url=https://wiki.mozilla.org/Platform/GFX/WebRender_Where|title=Webrender Where|website=Mozilla Wiki|access-date=2020-07-14}}</ref>
* '''Compositor''': Gecko's existing [[compositing|compositor]] 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.<ref>{{cite web|url=https://blog.mozilla.org/blog/2017/04/19/first-big-bytes-project-quantum/|title=Firefox faster and more stable with the first big bytes of Project Quantum, simpler with compact themes and permissions redesign|website=Mozilla Blog|access-date=2017-04-27}}</ref>
* '''DOM''': Loosely inspired by Servo's Constellation architecture<ref>{{cite web|url=https://www.youtube.com/watch?v=an5abNFba4Q |archive-url=https://ghostarchive.org/varchive/youtube/20211211/an5abNFba4Q| archive-date=2021-12-11 |url-status=live|title=Servo Architecture|website=YouTube|date=18 January 2017 |access-date=2017-03-28}}{{cbignore}}</ref> and [[Opera (web browser)|Opera]]'s [[Presto (layoutbrowser engine)|Presto]] engine,<ref>{{cite web|url=https://billmccloskey.wordpress.com/2016/10/27/mozillas-quantum-project/|title=Mozilla's Quantum Project|website=Bill McCloskey's Blog|access-date=2017-03-28|date=2016-10-27}}</ref> Quantum DOM uses cooperatively scheduled threads within the [[Document Object Model|DOM]] to increase responsiveness without increasing the number of processes and, thus, memory usage. The core of this shipped in Firefox 57.<ref>{{cite web|url=https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/|title=Entering the Quantum Era|date=2017-11-13|website=Mozilla Hacks|access-date=2020-07-14}}</ref>
* '''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 [[Web application|webapps]], primarily G Suite (now called [[Google Workspace]]) and [[Facebook]].<ref>{{cite web|url=https://wiki.mozilla.org/Quantum/Flow|title=Quantum Flow|website=Mozilla Wiki|access-date=2017-03-28}}</ref> This work completed and shipped for Firefox 57.<ref>{{cite web|url=https://ehsanakhgari.org/blog/2017-09-21/quantum-flow-engineering-newsletter-25/|title=Quantum Flow Engineering Newsletter #25|date=2017-09-17|website=ehsanakhgari.org|access-date=2020-07-14}}</ref>
* '''Photon''': A [[User interface|UI]] refresh of the entire application, with a strong focus on improving UI performance. Treated as a sister project to Quantum Flow.<ref>{{cite web|url=https://dolske.wordpress.com/2017/05/18/photon-engineering-newsletter-1/|title=Photon Engineering Newsletter #1|last=dolske|date=2017-05-18|website=Dolske's blog|access-date=2017-07-04}}</ref> This was released in Firefox 57.<ref name="57notes"/>
Line 99 ⟶ 98:
 
== Azure ==
The '''Mozilla Azure''' project is a stateless low-level [[graphics abstraction]] API used in [[Firefox]].<ref>{{cite web|url=https://wiki.mozilla.org/Platform/GFX/Moz2D|title=Platform/GFX/Moz2D - MozillaWiki}}</ref> <br>
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 (graphics)|Cairo]] in 2012.<ref>{{cite web|url=http://news.softpedia.com/news/Firefox-Now-Uses-the-Azure-Graphics-API-for-Canvas-on-All-Platforms-290671.shtml|title=Firefox Now Uses the Azure Graphics API for Canvas on All Platforms|last=Parfeni|first=Lucian}}</ref><ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=OTcxNQ|title=Azure Replacing Cairo In Mozilla Firefox - Phoronix}}</ref> It is written in [[C++]] and used by [[Servo (software)|Servo]].<ref>{{Cite web|url=https://lwn.net/Articles/647969/|title=Parallel page rendering with Mozilla Servo|last1=Willis|first1=Nathan|date=17 June 2015|publisher=[[LWN.net]]|access-date=27 June 2015}}</ref> 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.<ref>{{cite web|url=https://blog.mozilla.org/joe/2011/04/26/introducing-the-azure-project/|title=Introducing the Azure project - JOEDREW!|access-date=2019-09-22|archive-url=https://web.archive.org/web/20160908220007/https://blog.mozilla.org/joe/2011/04/26/introducing-the-azure-project/|archive-date=2016-09-08|url-status=dead}}</ref>
 
==References==
Line 105 ⟶ 109:
 
==External links==
* [https://developer.mozilla.org/en-US/docs/MozillaGlossary/Gecko Gecko - MDN Web Docs]
* [https://wiki.mozilla.org/Gecko:Home_Page Gecko development wiki (wiki.mozilla.org)]
* [https://web.archive.org/web/20051126174310/http://cbeard.typepad.com/mozilla/2005/11/mozilla_product.html Mozilla Product Strategy Proposal (DRAFT)]
* [http://www.webdevout.net/browser_support.phpbrowser-support Web Browser Standards Support]
* [http://jrex.mozdev.org/ JRex] {{Webarchive|url=https://web.archive.org/web/20051024022036/http://jrex.mozdev.org/ |date=2005-10-24 }} ([[Java (programming language)|Java]] API for Gecko)
 
Line 120 ⟶ 124:
[[Category:Free layout engines]]
[[Category:Free software programmed in C++]]
[[Category:Free software programmed in Rust]]
[[Category:Gecko-based software| ]]
[[Category:Mozilla]]
[[Category:Software that uses Cairo (graphics)]]
[[Category:Free software programmed in Rust]]