Gecko (software)

Source: Wikipedia, the free encyclopedia.
Gecko
Stable release
106.0.5[1]
/ 4 November 2022; 10 months ago (4 November 2022)
Repository
Written inC++, JavaScript, Rust
TypeBrowser engine
LicenseMPL 2.0[2][3]
Websitedeveloper.mozilla.org/en-US/docs/Glossary/Gecko

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

client/server.[4]

Gecko is written in

History

Development of the layout engine now known as Gecko began at

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

Mozilla Organization (the forerunner of the Mozilla Foundation) initially continued to use the NGLayout name (Gecko was a Netscape trademark),[11] eventually the Gecko branding won out.[citation needed
]

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.

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
]

As Gecko development continued, other applications and embedders began to make use of it.

betas, Gecko was never used in the main Microsoft Windows AOL client.[citation needed
]

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]

In October 2016, Mozilla announced

GPU rendering components. Additional components will be merged from Servo to Gecko incrementally in future versions.[13]

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,[15] is the initial version introduced GeckoView, with increased performance in median page loading.[16][17] Firefox Reality was also built with GeckoView.[16] In June 2019, Mozilla announced Firefox Preview as an ongoing project that focuses on building an Android web browser with GeckoView.[18] 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.[19]

Standards support

From the outset, Gecko was designed to support open Internet standards. Some of the standards Gecko supports include:

Gecko also supports

SVG.[21]

Legacy IE non-standard support

In order to support

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).[22]

Usage

Gecko is primarily used in

Firefox for mobile and the implementation of the Internet Explorer-clone that is part of Wine.[23] Mozilla also uses it in their Thunderbird email-client
.

Other web browsers using Gecko include

TenFourFox
.

Gecko is also used by

OLPC XO-1 computer.[25] 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

WebKitGTK
.)

Discontinued products that used Gecko include Swiftfox, Flock, Galeon, Camino, Minimo, Beonex Communicator, Kazehakase, Songbird, Sunbird (calendar), MicroB, Nightingale, Instantbird, and Picasa for Linux.[26]

Proprietary dependency

On Windows and other platforms, Gecko depends on proprietary compilers.

FOSS distributions of Linux cannot include the Gecko package used in the Windows compatibility layer Wine.[28]

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,[29] to reflect the fact that it is no longer a separate component.[30]

Bloat

In the Netscape era, a combination of poor technical and management decisions resulted in Gecko software bloat.[12][31][32] Thus in 2001 Apple chose to fork KHTML, not Gecko, to create the WebKit engine for its Safari browser.[31][32] However, by 2008 Mozilla had addressed some of the bloat problems, resulting in big performance improvements for Gecko.[33]

Quantum

Quantum is a

Servo project. Quantum also includes refinements to the user interface and interactions.[13][14]

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".[34][35]

Background

In 2012, Mozilla began the experimental

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.[6]

As of April 2016, Servo needed at least several years of development to become a full-featured browser engine,[36] 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.[37]

Components

The Quantum project is composed of several sub-projects.[13]

Azure

The Mozilla Azure project is a stateless low-level graphics abstraction API used in Firefox.[50] 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.[51][52] It is written in C++ and used by Servo.[53] 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.[54]

References

  1. ^ "Firefox 106.0.5, See All New Features, Updates and Fixes".
  2. ^ "Mozilla Foundation End-User Licensing Agreements". Mozilla.
  3. ^ "Mozilla Licensing Policies". mozilla.org. Retrieved 2013-03-26.
  4. ^ "Embedding Mozilla". Mozilla.org. 2012-10-25. Retrieved 2012-10-31.
  5. ^ a b "Simple Firefox for Android build". Archived from the original on 2019-09-29. Retrieved 2017-05-03. Gecko is implemented using C++ and JavaScript.
  6. ^ a b Bergstrom, Lars; et al. (May 2016). "Engineering the Servo Web Browser Engine using Rust" (PDF). Proceedings of the International Conference on Software Engineering. Archived (PDF) from the original on 2016-05-29.
  7. ^ "Google Groups". groups.google.com.
  8. ^ Yegulalp, Serdar (February 3, 2017). "Mozilla binds Firefox's fate to the Rust language". InfoWorld.
  9. ^ "MPL 2 Upgrade". Retrieved 2012-08-18.
  10. ^ "Gecko FAQ". MDN Web Docs. Archived from the original on 2019-10-08. Retrieved 2017-05-03.
  11. ^ "nglayout project: identity crisis". Mozilla.org. Archived from the original on 2011-06-29. Retrieved 2012-10-31.
  12. ^ a b Jorge O. Castro (2004-06-15). "Ars Technica sits down with Scott Collins from Mozilla.org". Ars Technica. Retrieved 2017-02-16.
  13. ^ a b c d "Quantum". Mozilla Wiki. Retrieved 2017-04-20.
  14. ^ a b Cimpanu, Catalin. "Mozilla Announces Quantum, a New Browser Engine for Firefox". softpedia. Retrieved 2016-11-07.
  15. ^ "Firefox Focus 7.0 enters beta, Switches to GeckoView (Gecko Engine)". 14 September 2018.
  16. ^ a b "Firefox Focus with GeckoView". Mozilla Hacks. September 13, 2018. Retrieved September 4, 2019.
  17. ^ "What's new in Firefox Focus for Android (version 7) | Firefox Focus Help". support.mozilla.org. Retrieved September 4, 2019.
  18. ^ "GeckoView in 2019". Mozilla Hacks. June 27, 2019. Retrieved September 4, 2019.
  19. ^ Vesta Zare (August 25, 2020). "Fast, personalized and private by design on all platforms: introducing a new Firefox for Android experience". Mozilla Blog. Retrieved September 22, 2020.
  20. ^ "Cross Browser Compatibility of ECMAScript 2015 (ES6) in Firefox 102". www.lambdatest.com. Retrieved 2022-08-21.
  21. ^ "Cross Browser Compatibility of SVG (basic support) in Firefox 102". www.lambdatest.com. Retrieved 2022-08-21.
  22. ^ "Mozilla Adds Undetectable document.all Support, Part of New Novell Linux Distribution?". Developer.mozilla.org. 2004-07-23. Retrieved 2018-02-07.
  23. ^ "IE Uses Gecko Under Wine". Wine Wiki. Retrieved 2009-09-14.
  24. ^ sdubois (24 June 2010). "Gecko". Free Software Foundation. Retrieved 23 May 2019.
  25. ^ Martens, China (2007-01-03). "One Laptop Per Child readies 'Sugar' interface". IDG News Service. Archived from the original on 2008-01-18. Retrieved 2007-12-28.
  26. ^ "Picasa 3.0 for Linux". Archived from the original on 2009-01-07. Retrieved 2008-12-28.
  27. ^ "Building Firefox for Windows". MDN Web Docs.
  28. ^ "Fedora - Wine-Wiki". wiki.jswindle.com. Archived from the original on June 11, 2012.
  29. ^ "Gecko versions and application versions". MDN. Archived from the original on 2020-10-31. Retrieved 2013-11-18.
  30. ^ "Not much in new Thunderbird 5, but roadmap looks promising". Ars Technica. 30 June 2011. Retrieved 2018-02-07.
  31. ^
    CNET Networks. Archived from the original
    on 2012-10-25. Retrieved 2017-02-16.
  32. ^ a b David Baron (2003-01-09). "Thursday 2003-01-09". David Baron's weblog. self-published. Archived from the original on 2009-07-28. Retrieved 2017-02-16.
  33. ^ Ryan Paul (2008-09-09). "Why Mozilla is committed to Gecko as WebKit popularity grows". Retrieved 2017-02-16.
  34. ^ a b "Firefox 57.0, See All New Features, Updates and Fixes". Mozilla. Retrieved 2018-10-30.
  35. ^ a b "Introducing the New Firefox: Firefox Quantum – The Mozilla Blog". The Mozilla Blog. Retrieved 2018-10-30.
  36. ^ "Servo remaining work". GitHub. Retrieved 2017-02-17.
  37. ^ "Mozilla lays off 250 employees while it refocuses on commercial products". ZDNet. Retrieved 2022-06-14.
  38. ^ "The Changelog". The Changelog. 18 November 2016. Retrieved 2017-03-28.
  39. ^ "Bay Area Rust Meetup February 2016". Air Mozilla. Retrieved 2017-03-28.
  40. ^ "Webrender Where". Mozilla Wiki. Retrieved 2020-07-14.
  41. ^ "Firefox faster and more stable with the first big bytes of Project Quantum, simpler with compact themes and permissions redesign". Mozilla Blog. Retrieved 2017-04-27.
  42. ^ "Servo Architecture". YouTube. Archived from the original on 2021-12-11. Retrieved 2017-03-28.
  43. ^ "Mozilla's Quantum Project". Bill McCloskey's Blog. 2016-10-27. Retrieved 2017-03-28.
  44. ^ "Entering the Quantum Era". Mozilla Hacks. 2017-11-13. Retrieved 2020-07-14.
  45. ^ "Quantum Flow". Mozilla Wiki. Retrieved 2017-03-28.
  46. ^ "Quantum Flow Engineering Newsletter #25". ehsanakhgari.org. 2017-09-17. Retrieved 2020-07-14.
  47. ^ dolske (2017-05-18). "Photon Engineering Newsletter #1". Dolske's blog. Retrieved 2017-07-04.
  48. ^ "TPE Necko/Projects - MozillaWiki". wiki.mozilla.org. Retrieved 2017-07-04.
  49. ^ "Firefox 59 Release Notes". www.mozilla.org. Retrieved 2019-01-16.
  50. ^ "Platform/GFX/Moz2D - MozillaWiki".
  51. ^ Parfeni, Lucian. "Firefox Now Uses the Azure Graphics API for Canvas on All Platforms".
  52. ^ "Azure Replacing Cairo In Mozilla Firefox - Phoronix".
  53. ^ Willis, Nathan (17 June 2015). "Parallel page rendering with Mozilla Servo". LWN.net. Retrieved 27 June 2015.
  54. ^ "Introducing the Azure project - JOEDREW!". Archived from the original on 2016-09-08. Retrieved 2019-09-22.

External links