First look: Firefox 3.5 released, ready to "upgrade" the Web
Mozilla has announced the official release of Firefox 3.5, the next major version of its popular open source Web browser. The new version boosts performance, introduces useful new features, and delivers strong support for emerging Web standards.
Mozilla aims to "upgrade the Web" by improving the Firefox user experience and expanding the range of tools that are available to Web developers. The company boasts that Firefox 3.5 includes over 5,000 enhancements that span nearly every aspect of the browser's functionality and behavior. Among the most compelling advancements in this release is support for the HTML 5 video element, which enables native video playback in the browser without requiring proprietary plugins such as Flash.
We got our earliest insight into the roadmap for the new version shortly before the release of Firefox 3.0 last June. Mozilla was planning to adopt a more incremental development model and tentatively aimed to have a 3.1 release ready to ship in late 2008. As the roadmap increased in complexity and more sophisticated features began to land, they pushed the planned release date back into mid-2009 and changed the target version number to 3.5. That version arrived this morning, after 12 months of intensive development.
Although it is not as radical as the broad architectural overhaul that was undertaken for the 3.0 release, the development effort for 3.5 has brought many important changes to the browser. It includes a lot of features that leverage the 3.0 architectural enhancements and it also includes a lot of features that were originally planned for 3.0 but were deferred for various reasons.
Firefox 3.5 includes a new private browsing mode that allows users to traverse the Web without leaving behind a trail that can be recalled later in the browser's history, cache, and cookies. This feature is becoming nearly ubiquitous in mainstream browsers as it is already included in Safari, Chrome, and Internet Explorer 8. Mozilla's implementation is reasonably reliable and appears comparable to its competitors. We first looked at the private browsing feature when it landed in beta 2.
With a stroke at the keyboard, users can erect stiff privacy barriers that will prevent their Web surfing habits from penetrating the browser history and defiling the sensitive auto-completion system with incriminating data where it might arouse the suspicions of subsequent users. Thanks to Private Browsing in Firefox 3.5, your friends and coworkers will never discover your unwholesome obsession with the hot pussies in the Cats-n-Racks section at CuteOverload.com.
When the user enables private browsing mode from the browser's Tools menu, the browser will end the current session and start in private browsing mode. While it is in this mode, the browser will function normally but the data that it tracks will not persist. When the private browsing mode is disabled, the user's previous session will be reloaded and there will be no sign of the activity that transpired during private browsing. This feature is typically referred to as pr0n mode, but Mozilla points out that it has broader uses and can also function well as a "guest" mode in situations where users allow their friends to make use of their browser.
One downside is that the browser doesn't provide a convenient way to perform private browsing alongside a regular browsing session. Google's Incognito mode, which enforces privacy on a per-window basis, doesn't suffer that particular limitation. If you have a lot of tabs open, waiting for your regular session to reload at the end of private browsing in Firefox 3.5 can be a bit painful.
There are also several other features that give the user more control over privacy, such as support for clearing recent history and a "Forget This Site" capability that allow users to purge history and data pertaining to specific fetish porn websites.
User interface improvements
Mozilla was planning a few highly ambitious user interface changes for this release, but they were discarded as development progressed. Tab switching, activated with ctrl+tab, was going to be altered dramatically, both in behavior and appearance. The first alpha release included an experimental visual tab switcher that displayed thumbnails. It also changed the tab switching order so that it was based on last use. Both of these changes were dropped in later prereleases and are not included in the final 3.5 release.
Mozilla designer Atul Varma wrote a blog entry last year in which he described some of the usability failings of the experimental tab switcher and acknowledged that it was harder to use in many cases. It's possible that we could see some of the underlying concepts resurrected in future releases with a better approach.
The plans for major tab changes were dropped, but the new release does include a few subtle tab improvements. By default, the browser will now display the tab bar when there is only one tab. This change will improve the discoverability of tabbed browsing and will also be welcomed by users who find it jarring when the tab bar pops into view after the addition of a second tab. Another subtle change is the inclusion of a button in the tab bar that can be used to create a new tab.
Support for moving tabs between windows is better in this release. In Firefox 3.0, dragging a tab from one window to another would cause the associated page to reload itself upon arrival in the new window. In Firefox 3.5, you can now drag tabs between windows without disrupting page state or suffering a forced refresh. The 3.5 release also adds support for snapping tabs out of the browser to create a new window. Dragged tabs are accompanied by a translucent page thumbnail that makes it easier for those of us with short attention spans to remember exactly what they are dragging.
Session management is better in 3.5, too. The 3.0 release introduced support for reopening closed tabs. The developers have expanded on that in 3.5 by adding the ability to reopen a closed window. Crash recovery is also handled better now. When the browser is restarted after a crash, the user will be presented with a session restore screen that will show them the contents of their session and allow them to select which tabs should be restored.
It leverages Adobe's nanojit, the just-in-time (JIT) compiler and native code generator that Adobe built for Flash's ActionScript virtual machine and released as open source in 2006. To create TraceMonkey, Mozilla retrofitted its existing SpiderMonkey engine with Adobe's nanojit and then added support for tracing optimization, an approach pioneered by Dr. Michael Franz and Dr. Andreas Gal, research scientists at the University of California, Irvine.
Tracing optimization, which was originally demonstrated by researchers on top of the Lua runtime, has been found to be remarkably effective for boosting performance of dynamic programming languages. The tracing system analyzes the path of execution at runtime and generates compiled code that can be used when that path is reached again. This makes it possible to flatten loops and nested method calls into a linear stream of instructions that will be easier to accelerate with more conventional optimization methods.
Mozilla is aiming to empower Web developers and expand the scope of what can be accomplished with native Web technologies by adopting emerging standards. The HTML 5 specification is still in the draft process and has not yet been fully ratified by W3C, but some of its most significant features are already being widely adopted by browser vendors.
Mozilla first began seriously experimenting with HTML 5 video support in 2007. It was originally hoped that the feature would be included in Firefox 3, but it did not mature quickly enough and was pushed back to Firefox 3.5. The implementation is relatively good and performance is mostly acceptable.
Firefox 3.5 ships with built-in Ogg Theora and Vorbis codecs, which means that video in those formats will play out of the box without requiring any external software components. Ogg is an open format that is not encumbered by any known patents. Unlike other widely-used multimedia codecs, Ogg can be distributed freely and has no licensing fees. Mozilla hopes that Ogg will become the standard multimedia format of the Web because it can be used universally by everyone at no cost. In order to reduce the risk of fragmenting the Web and disenfranchising some users, Mozilla has refrained from supporting other video formats.
Ogg is beginning to gain considerable traction. Although its quality and performance is considered lacking compared to more advanced patent-encumbered formats like h264, there is growing consensus that free and open multimedia is the best path forward. Google has announced plans to support Ogg in its Chrome browser and has also demonstrated a prototype of the YouTube site that uses the HTML 5 video element. Google is still somewhat skeptical, however, that Ogg will meet YouTube's quality requirements. Popular video site DailyMotion is the first to go all the way and has already begun converting its video library to Ogg as part of its plan to support HTML 5 video.
The strengths and weaknesses of Ogg Theora are widely debated, but I think that the adequacy of the format is best demonstrated by video samples. Check out the Firefox 3.5 demo video at the Mozilla website. The video quality is crisp and clear. Despite current limitations in Theora's compression efficiency, it's arguably capable of delivering YouTube-quality videos without increasing bandwidth overhead.
The rendering engine has gained support for natively drawing CSS drop shadows behind text and boxes. Another nice rendering engine enhancement is support for downloadable fonts, making it possible to display text content with fonts that the user doesn't already have installed on their computer. Newly-added SVG filter support can be used to apply blurring and other visual effects to virtually any page element. CSS transforms are supported too, making it possible to rotate and skew page elements. This feature has been used experimentally to simulate isometric 3D rendering. In the following image, a playable video and selectable text are rendered on page elements that are skewed with CSS transforms to look like cube planes:
A new geolocation API has been introduced to support development of location-aware Web application development. This feature was initially introduced last year as an extension and is now a built-in part of the browser. When the geolocation API is used, the browser will prompt the user and ask permission to convey information about the user's location to the Web application. If the user agrees, the Web application can use the coordinates of the user to present content that is relevant to the region or to perform specialized action based on the user's position. This feature is supported by several backends. If a hardware GPS device is not available, it will attempt to detect nearby WiFi access points and match those against a location using a database that is maintained by Google. In cases where that is not possible, it will try to guess the user's location based on their IP address.