Gecko (layout engine)
From Wikipedia, the free encyclopedia
Gecko | |
---|---|
Developed by | Mozilla Foundation / Mozilla Corporation |
Latest release | 1.8.1.14 / April 9, 2008 |
Preview release | 1.9 RC2 / May 29, 2008 |
Written in | C++ |
OS | Cross-platform |
Genre | Layout engine |
License | Mozilla tri-license |
Website | mozilla.org/newlayout |
Gecko is a layout engine originally created by Netscape Communications Corporation for the Mozilla application suite and now used in all applications developed by Mozilla, including later Netscape Navigator releases. Designed to support open Internet standards, it is used by applications such as Mozilla Firefox, Camino, Flock, SeaMonkey, K-Meleon, and Netscape, 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.[1]
Gecko is written in C++ and is cross-platform, running on operating systems including Microsoft Windows, BSDs, Linux, Mac OS X, Solaris, OS/2, AIX and OpenVMS. Its development is now overseen by the Mozilla Foundation. Licensed a tri-license of the Mozilla Public License (MPL), GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), Gecko is free and open source software.
Gecko is the second most-popular layout engine on the World Wide Web, after Trident (used by Internet Explorer for Windows since version 4), and followed by WebKit (used by Safari) and Presto (used by Opera).
Contents |
[edit] Standards support
From the outset, Gecko was designed to support open Internet standards. Some of the standards Gecko supports include:
- HTML 4.0
- CSS Level 1 (partial support for CSS 2 and 3, see Mozilla CSS support chart for details)
- JavaScript 1.7 (ECMAScript)
- DOM Level 1 and 2 (partial support for DOM 3)
- XML 1.0
- XHTML 1.1
- XSLT and XPath
- MathML
- XForms (via an official extension)
- RDF
Gecko also partially supports SVG 1.1.[2][3]
In order to support web pages designed for legacy versions of Netscape and Internet Explorer, Gecko supports 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 layers) are not supported.
Gecko also has limited support for some non-standard Internet Explorer features, such as the <marquee> tag and the document.all
property (though pages explicitly testing for document.all
will be told it is not supported). While this increases compatibility with many documents designed only for Internet Explorer, some purists argue that it harms the cause of standards evangelism.
[edit] 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 widely considered to be inferior to the one used in Microsoft Internet Explorer. It 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)[4], eventually the Gecko branding won out. For a time, Gecko was used to refer to both the old NGLayout layout engine and XPFE (cross-platform front-end)—the new XML-based Mozilla user interface, rendered by NGLayout—but it is now used solely to refer to the layout engine.
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[5]. 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, 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 betas, Gecko was never used in the main Microsoft Windows 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.
[edit] Usage
Gecko is primarily used in web browsers, notably Firefox. It is also used in other Mozilla web browser derivatives such as Camino, Flock, SeaMonkey, K-Meleon, and Netscape. There follows a comparison of versions.
Gecko version | All platforms | Windows only | Mac only | *nix only | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Firefox | Netscape | SeaMonkey | Flock | Songbird | Beonex | K-Meleon | Camino | Galeon | Epiphany | Kazehakase | Skipstone | |
0.6 | 6.0 | |||||||||||
0.8 | 0.3 | |||||||||||
0.9.2 | 6.1 | |||||||||||
0.9.4 | 6.2 | 0.5 | ||||||||||
0.9.4.1 | 6.2.2 | |||||||||||
0.9.5 | 0.6 | |||||||||||
0.9.7 | 1.0.2 | |||||||||||
1.0.1 | 7.0 | 0.8.2 | ||||||||||
1.1 | 0.8.3 | |||||||||||
1.2b | 0.1 | 0.7 | ||||||||||
1.3a | 0.5 | |||||||||||
1.4 | 7.1 | |||||||||||
1.4.1 | 1.0.4 | |||||||||||
1.5 | 0.7 | 0.8 | ||||||||||
1.7 | 1.0 | 2.0 | 0.2.8 | |||||||||
1.7.2 | 7.2 | |||||||||||
1.7.5 | 8.0.2 | 0.9 | ||||||||||
1.8.0 | 1.5 | 1.0 | 0.7 | 0.2 | 1.0 | 1.0 | ||||||
1.8.1 | 2.0 | 9.0 | 1.1 | 1.0 | 1.1 | 1.5.5 | 2.16 | 1.0.0 | ||||
1.9b | 3.0RC1 | 2.0 | 0.5 |
Other products not included in the above table include Swiftfox, Portable Firefox, HP Secure Web Browser, Oxygen, Minimo, Sylera (for mobile), Thunderbird (email) and Sunbird (calendar).
Gecko is also used by Sugar for the OLPC XO-1 computer.[6] Gecko is used as a complete implementation of the XUL (XML User Interface Language). Gecko currently defines the XUL specification.
[edit] Future
[edit] Version 1.9
Some information on the work being done for the next version of Gecko is available in the Gecko 1.9 roadmap.[7]
One main initiative in 1.9 is an overhaul of the graphics infrastructure, replacing the platforms' API, with cairo for all graphics outputs.[8][9] This is expected to improve 2D graphics capabilities and, via glitz, provide accelerated graphics on 3D graphics hardware. It also results in a single rendering pipeline for HTML and CSS, canvas and SVG, so that SVG effects can be applied to HTML content. Using cairo will also allow to output the graphics to formats such as Portable Network Graphics (PNG) and Portable Document Format (PDF), allow users to export Web content in these formats.
Another major change in Gecko 1.9 is refactoring of reflow code, [10] which fixed many layout bugs, in particular some of the bugs leading to incorrect rendering of the Acid2 standards-compliance test.
[edit] Gecko 2.0
The second major version of Gecko will have support for JavaScript 2.
[edit] See also
- List of layout engines
- Comparison of layout engines
- Comparison of layout engines (HTML)
- Comparison of layout engines (XML)
- Comparison of layout engines (XHTML)
- Comparison of layout engines (graphics)
- Comparison of layout engines (CSS)
- Comparison of layout engines (DOM)
- Comparison of layout engines (HTML5)
- Comparison of layout engines (ECMAScript)
- Comparison of layout engines (SVG)
[edit] References
- ^ Embedding Mozilla
- ^ The SVG font, color profile, animation, view, and cursor modules are yet to be implemented and the filter and text modules are only partially implemented. The extensibility module is also implemented but is currently disabled
- ^ Mozilla SVG Status
- ^ nglayout project: identity crisis
- ^ Ars Technica interviews Scott Collins
- ^ Martens, China (2007-01-03). One Laptop Per Child readies 'Sugar' interface. IDG News Service. Retrieved on 2007-12-28.
- ^ DRAFT Gecko 1.9 Roadmap
- ^ Mozilla2:GraphicsPlan
- ^ Glimpse Of The Future
- ^ Gecko:Reflow Refactoring
[edit] External links
- Mozilla Layout Engine
- Gecko development wiki (wiki.mozilla.org)
- Gecko Layout Engine - Real-time Reflow Videos
- Mozilla Product Strategy Proposal (DRAFT)
- Web Browser Standards Support
- JRex (Java API for Gecko)
|
|
|