Biz & IT —

A first look at Firefox 3.0

The recent release of Firefox 3. test.

Mozilla has officially released the first public alpha build of Firefox 3.0. Codenamed Gran Paradiso, Firefox 3 includes the new Gecko 1.9 rendering engine which leverages the open source Cairo rendering framework and features heavily refactored reflow algorithms that improve Firefox layout functionality and resolve some long-standing CSS bugs.

The reflow improvements in Gecko 1.9 (included in the latest Gran Paradiso nightly build, but not the alpha release) finally enable Firefox to pass the Acid 2 test, a CSS test case developed by the Web Standards Project to illuminate flaws in HTML/CSS rendering engines. To pass the Acid 2 test, browsers must comply with W3C standards and provide support for a wide variety of features that are considered relevant by web designers. The Acid 2 test has been passed by several other browsers, including Safari, Konqueror, and Opera, but not Internet Explorer. Passing Acid 2 is considered to be a significant milestone in Firefox development.




Left to right: Acid 2 under Firefox 2.0, Firefox 3.0 Alpha 1, and Firefox 3.0 Alpha Minefield (nightly)

Gecko 1.9 also includes a new threading model, support for Cocoa widgets on OS X, and some unit fixes (still under development) that could eventually facilitate a full-page zoom feature like the one found in Opera.

Firefox's transition to Cairo is significant. Written in the C programming language, the versatile Cairo graphics library is a vector-based drawing API that supports a wide variety of backends. Cairo can take advantage of hardware acceleration where available and simplifies cross-platform graphics application development by providing an internally consistent and cohesive framework that emphasizes platform-independence. Similar in function to Microsoft's Windows Presentation Foundation (formerly called Avalon) and Apple's Quartz 2D, Cairo has been widely adopted within the open source community and is currently used in numerous open source applications and frameworks including the GTK toolkit and GNOME desktop environment.

Firefox uses Thebes, a C++ wrapper for Cairo. It is hoped that incorporating Cairo into Firefox will decrease the amount of graphics code that needs to be maintained by the Firefox developers, simplifying the Firefox code base and making it easier to further improve Gecko rendering. Cairo opens the door for hardware-accelerated rendering in Firefox using Glitz, Quartz, or an accelerated X server like Xgl. Cairo will also eliminate some awkward rendering bugs, provide new drawing functionality, increase the general quality of anti-aliasing, and improve native SVG support.

SVG improvements in Gran Paradiso are already evident. In a recent message posted on the Tango artists mailing list, Tango contributor and Mozilla Visual Identity team member Steven Garrity provides a nice comparison to show how the SVG improvements in Firefox 3 affect the rendering of SVG Tango icons.


SVG icon comparison courtesy of Steven Garrity

Although Cairo has a lot to offer, the library itself still has some deficiencies. It is under heavy active development and has improved considerably, but there are still relatively significant performance issues that have to be resolved. Recent benchmarks conducted by Zack Rusin reveal that Cairo is quite a bit slower than Qt 4 in some contexts. A new Bently-Ottman tessellator being developed by Carl Worth and others on the Cairo team could potentially resolve a number of Cairo's performance problems.

There are some new bugs in Gecko 1.9, some of which have been introduced into Gecko as a result of the move to Cairo. An assortment of minor font rendering issues have been documented in Gran Paradiso on all three major platforms and compatibility issues have been reported by Linux users who aren't running at least Xorg 7.

Gran Paradiso alpha builds for Windows, OS X, and Linux are available for download from the Firefox FTP as well as the source, but it is important to note that these early alphas are experimental and not intended for regular use. Web developers can use the Gran Paradiso alpha to help ensure that their sites will render properly in Firefox 3, and members of the Mozilla community can use the alpha to help test and debug Firefox. The compressed BZ2 archive containing the Gran Paradiso Alpha 1 binaries and associated files for Linux is about 8 MB, but it expands to about 25 MB after decompression. Before testing Gran Paradiso, you will probably want to back up your Firefox settings directory (~/.mozilla on Linux) so that your configuration data isn't damaged. Those of you that want to test the new reflow improvements can try the latest nightly build, available for download from the Mozilla FTP server. The nightly build, referred to as Minefield, is extremely experimental.

If you want to run two versions of Firefox side-by-side to compare rendering differences, you will have to set the MOZ_NO_REMOTE value to 1 and create a separate Firefox profile. Instructions on how to do that for Windows and Linux can be found here.

Scheduled for official release in May, Firefox 3.0 is still in the early stages of development. Aside from the Gecko rendering changes, there are few noticeable differences between Firefox 2.x and the early 3.0 builds. It is not presently clear which features will be developed and included in the official Firefox 3 release, but preliminary plans provide some insight into possible changes.

The Places system, a history and bookmark overhaul that was controversially dropped from Firefox 2 and delayed, is planned for inclusion in Firefox 3. Also planned is a new download manager that could potentially make it possible to resume paused downloads across sessions. Multi-session resume would definitely be a welcome addition. I often use wget for large downloads specifically because Firefox can't resume downloads after a crash. Firefox developers have also discussed possibly integrating support for download acceleration and including a download queue manager that can control the number of simultaneous downloads.

Keybinding configuration has also been a topic of discussion. Since many Firefox extensions use conflicting shortcuts, the need for a centralized shortcut management system has steadily increased. The password manager could also see some improvement, with plans to integrate support for OS X's Keychain and provide better password persistence with the SQLite-based MozStorage engine.

Inclusion of the Cairo-based Gecko 1.9 rendering engine and the new Places system will make Firefox 3 a significant release. Now that Firefox conforms to W3C standards well enough to pass the Acid 2 test, it's time for Firefox developers to focus on stability and resource efficiency. In order to remain competitive, Firefox must be made more reliable and less memory intensive. Supported by a growing community of users and developers, the Firefox web browser has steadily increased in popularity. Firefox market share seems to have hit a plateau at between 11 and 13 percent and it will take creativity and innovation to move Firefox adoption to the next level.

Channel Ars Technica