The next generation: Mozilla Firefox 3
The next major release of Firefox promises changes to the user interface and serious speed benefits. Firefox 3 seamlessly integrates the Gtk environment and offers a plethora of new features.
After almost a year and a half of development, the next generation Firefox browser release is rapidly approaching. The developers plan to unveil Firefox 3 early in 2008 , although Mozilla hasn't announced an exact date.
A beta version of Firefox 3.0 is currently available for downloading and testing . Here, I look at the Beta 3 release. (Beta 4 made an appearance just before this issue went to print.)
Improvements are noticeable, especially with Firefox for Linux. On first inspection, new cross-platform features stand out, such as a new bookmark system called Places  or the website zoom function that also zooms any images on the page. Also, numerous new features optimize interaction between Linux and Firefox.
Starting with a short overview of the key new features in Firefox 3, the new bookmark system, Places, stands at the top of the list. In the new system, bookmarks reside in a flat file, rather than in a static hierarchy of folders (bookmarks.html). The bookmark system relies on tags to organize the bookmarks in a style similar to social networks or blogs. The software stores the tags in an SQLite database (Figure 1).
A Smart Bookmarks option in the Bookmarks toolbar lets you view the Most Visited and Recently Bookmarked bookmarks (Figure 2). A comprehensive API  is available to Firefox extension developers and supports extended access to the new system.
Another extremely practical new feature is Firefox's ability to scale the images on a page up (Ctrl-+) and down (Ctrl+-). This prevents altering the layout of a web page you are viewing when you zoom in. In the beta release, there was no way to disable this function.
The developers have also improved the address line in which users enter web addresses. When you enter a URL, the program not only searches in the browser history, but also in the bookmarks. Firefox 3 gives you a two-line display of the matches with the corresponding favicon while you type, making it easier to find a page that you visited previously or stored in your bookmarks.
Additionally, the application marks websites that you access via https. Instead of a stylized padlock, you are shown details about the certificate issuer and owner (see Figure 3). This makes life more difficult for phishers interested in capturing your passwords, PINs, and TANs.
The Acid2 test  gives users a reference for compliance with web standards (Figure 4). Previously, Firefox 2 did not pass the test, whereas Firefox 3 complies with all the typical standards and correctly renders the graphic in the test. This puts Firefox on a par with Safari, Konqueror, and Opera.
Firefox has also made some improvements under the hood. Mozilla uses the Cairo  library to render page content and draw the program interface. Because of this, Firefox renders complex web pages much faster.
One of the most obvious changes in the Linux version is that Firefox now uses genuine Gtk widgets: icons, scroll boxes, and buttons. Previously, the browser did not draw widgets that matched the desktop theme. Firefox 3 now integrates seamlessly and assumes the appearance of all Gtk-based applications such as Gnome or XFCE. Some bad blood between the Mozilla and KDE  developers explains why there is still no Qt variant of Firefox to integrate seamlessly with KDE.
Firefox automatically uses preconfigured icons. Where possible, the browser integrates icons from the desktop theme. On top of this, tabs in Firefox – and buttons for closing them – looked like the tents in any other Gtk application. Firefox has stopped trying to look the same on every platform on which it runs.
Previously, Linux users were unable to use the mouse wheel to scroll on the web page as soon as the mouse cursor hit a plugin (i.e., a Java applet or Flash animation) because the plugin captured the wheel's scrolling action, forcing the user to drag the mouse out of the plugin area. This issue has been resolved.
The developers have made serious improvements to the printing system . Firefox versions up to and including 2.x used lpr to address the printing system. This reduced the number of options users had for manipulating the results when printing from the browser.
Firefox 3 now directly accesses the Gtk printing features. Users can access the printing options they are familiar with from other Gnome programs, such as specifying the number of pages per sheet of paper (Figure 5).
In the past, Firefox was not known for being the fastest browser, but developers focused on improving the performance of Firefox 3. In our lab, I decided to compare Firefox 188.8.131.52 with Firefox 3 Beta 3 using the 32-bit version of Opera 9.25 and Opera 9.5 Beta 2, a 64-bit version that will be appearing shortly, as references. The tests were run on an AMD Athlon 64 X2 AM2 3800+ machine with 2GB RAM and Ubuntu Gutsy Gibbon 7.10 (64-bit).
Our next benchmark investigated how long Firefox takes to render a web page with a large table. For this, I used the Load Time Analyzer . Load Time Analyzer measures the time required to completely render a web page  and display it. Again, I saved the page locally and reloaded it 10 times, calculating an average value. Firefox 3 clearly outperforms its predecessor in this discipline. On average, it took only 675 milliseconds, whereas Firefox 2 took about 1,002 milliseconds to render the page. This represents a 32 percent performance boost.
Finally, I investigated how much memory the browser needs, considering that Firefox 2 has a reputation for being a RAM hog. To analyze this, I launched the test candidates with fresh profiles and loaded 10 web pages with considerable content.
Then, I used the Gnome system monitor to investigate the memory consumption of the individual processes. Again, the developers seem to have made considerable progress with Firefox 3: Instead of the 100MB that Firefox 2 required, Firefox 3 only needed 75MB.
The browser's performance is noticeably improved, although Firefox still came in behind the commercial Opera browser (see the "Performance Comparison" table). The Beta 4 version of Firefox appeared after I completed these tests. Mozilla worked on tuning the JS engine for Beta 4, and the performance was significantly better. I added Konqueror 3.5 and 4 to the comparison and found that Firefox Beta 4 was competitive with the alternatives. A 64-bit version of Firefox 3 (currently in development) will provide additional performance benefits.
Firefox 3 made a good impression with new features, such as improved phishing protection (Figure 6) and easier installation of add-ons that do not originate from Mozilla's add-on page. The developers have introduced further improvements with Beta 4 . Firefox 3 looks likely to have support for the Internet keys on multimedia keyboards and will have improved support for Gnome session management.
Overall, Firefox 3 is a critical component of the Linux desktop. In the future, the software will integrate almost seamlessly, at the same time adding a number of convenient functions. Users who prefer the KDE desktop will be disappointed – Firefox is yet another project that has decided in favor of Gtk.
- Firefox roadmap: http://wiki.mozilla.org/ReleaseRoadmap
- Firefox download: http://www.mozilla.com/en-US/firefox/all-beta.html
- Places system: http://wiki.mozilla.org/Places
- Places API: http://developer.mozilla.org/en/docs/Places
- Acid2 browser test: http://www.webstandards.org/action/acid2/
- Cairo (Wikipedia): http://en.wikipedia.org/wiki/Cairo_(graphics)#Mozilla
- Mozilla and Qt: https://bugzilla.mozilla.org/show_bug.cgi?id=297788
- Nightly builds: http://ftp.mozilla.org/pub/mozilla.org/firefox/nighly/latest-trunk/
- Firefox with Gtk pring dialog: http://ventorsblog.blogspot.com/2008/01/print-me-print-me-print-me-man-after.html
- CSS performance test: http://www.howtocreate.co.uk/csstest.html
- Load Time Analyzer: https://addons.mozilla.org/en-US/firefox/addon/3371
- Test table: http://howtocreate.co.uk/jslibs/oldindex.php
- JS performance test: http://webkit.org/perf/sunspider-0.9/sunspider.html
- Firefox Beta 4: http://ventnorsblog.blogspot.com/2008/02/beta-4-quickies.html