The fresh and furiously fast Firefox

29 April, 2014 § 4 Comments

One of the less covered parts of this week’s Firefox release is high attention that was placed on the performance of the redesign of the tab shape.

The new Firefox introduces a new tab shape that is consistent with Firefox for Android, FirefoxOS, Thunderbird, as well as the web properties of Mozilla.

Firefox for Android

Firefox for Android


Firefox on desktop PCs

Firefox

As the Firefox team was implementing this new design, performance was a key metric that was measured and focused on. We wanted to not only bring a beautiful design to users, but one that matched the new sleek shape with an equally speedy outcome.

Each time a change was made to our source control repository, a fresh build of the browser was created and run against a suite of automated tests that measure the performance of the build. These results are then compared against the results of prior builds, allowing the team to track improvements and regressions.

One such test that was used is called TART, short for Tab Animation Regression Test. The test works by opening and closing tabs and measuring the amount of time needed to paint each frame of the animation. Normally Firefox only attempts to paint one frame every 16ms (equivalent to 60fps) but during TART that limit is disabled.

Users of Firefox can have infinite variations of hardware setup, some of which are much slower than our testing infrastructure. By trying to paint as fast as possible, we can get a number that will represent the maximum bound for our graphics performance on our fixed-setup testing infrastructure. By tracking this number, we project that the full Firefox user-base will on average see proportional performance gains.

Now to the numbers

Tab OpeningTab closingIn the previous version of Firefox on Windows 7, Firefox took an average of 3.52ms to paint each frame of the tab opening animation [1]. With the new version of Firefox, we have gotten this number down to 2.81ms, which is a 20% speed up!

When it comes to closing tabs, we saw a shift from 2.72ms to 1.88ms [2], an amazing 31% speed up!

Gains like the above only happen when a solid testing framework is in place and an equally solid team keeps performance as a top priority. Cheers to everyone that has helped make the new release of Firefox the fastest yet.

If you’re already running Firefox, it will automatically update to the latest version. If not, you can download Firefox now, always free and always open.

[1] icon-open-DPI1.all.TART (Fx28 1b8f6597b67f vs Fx29 f1c211a4714d)
[2] icon-close-DPI1.all.TART (Fx28 1b8f6597b67f vs Fx29 f1c211a4714d)

Fast fox

[Update: Thank you to Benedikt who in the comments below corrected a math error that I made with the percentage of improvements]

Customization in the new Firefox

29 April, 2014 § 5 Comments

Customization has always been a strong point for Firefox. From installing add-ons and themes to rearranging the controls in the toolbars, Firefox leads the pack in providing the best customization capabilities of any browser out there.

Providing user choice is central to Mozilla, and that is reflected strongly in Firefox. With our new and improved customization mode, users can now change what widgets will appear in their Firefox toolbar as well as the Firefox menu.

For example, users that often click on the “Save Page” button now have the ability to move the button to their toolbar in only two clicks of the mouse.

Moving the Save Page button to the toolbar

Conversely, users who sparingly use the Search box can now move it to the Firefox menu or remove it entirely. If you used Ctrl+K (Cmd+K on Mac) as a shortcut to access the Search box before, Firefox will still react to the shortcut even if the Search box has been moved to the Firefox menu.

Search in the menu

Firefox offers two easy ways to customize the browser. Simple customizations such as moving an item between the toolbar and the menu can be made by right-clicking on the widget that you wish to move. Deeper customizations can be made by entering the customization mode, accessible through the Customization button in the Firefox menu.

Customize Firefox

Our new customization mode even supports touch-sensitive screens, bringing customization “to your fingertips”:

Touch-based customization

With the new Firefox, you can now customize your toolbar and menu to make Firefox yours. If you’re already running Firefox, it will automatically update to the latest version. If not, you can download Firefox now, always free and always open.

Bookmarking in the new Firefox

28 April, 2014 § 3 Comments

This week’s release of Firefox brings an improved bookmarking experience, tightening the relationship between adding a bookmark and retrieving it.

Bookmarks Button

The traditional bookmark star has been moved out of the location bar and in to a new Bookmark Star + Bookmarks Menu widget. When a bookmark is added, a new animation shows the Bookmark Star filling in and bouncing over to the Bookmarks Menu.

A second click on the Bookmark Star allows you to tweak the bookmark name, folder, and tags. By default, bookmarks are placed in the Unsorted Bookmarks folder, which can be viewed by clicking on the Bookmarks Menu.

Edit This Bookmark

This new bookmarking widget doesn’t have to stay on your Firefox toolbar either. Firefox offers the best customization capabilities of all browsers, and this means that you can quickly move the widget to the new Firefox menu or hide it entirely.

Bookmarks context menu

This can be done quickly and effortlessly, by right-clicking on the Bookmarks widget and selecting either “Move to Menu” or “Remove from Toolbar”. You can also reposition the widget through the all-new customization mode that is accessible by clicking on the “Customize” button in the Firefox menu.

Bookmarks in the new Firefox menu

Clicking on the Bookmarks button in the Firefox menu will show the following view:

Bookmarks subview in the new Firefox menu

If you’re already running Firefox, it will automatically update to the latest version. If not, you can download Firefox now, always free and always open.

Australis-Styled Widgets Presentation

4 December, 2013 § 3 Comments

I’ve been pretty quiet this semester about the work that a team of students have been focused on. However, don’t let my quietness be a representation of how hard they have worked.

We’re now reaching the end of the semester and the students have put together a video of their work throughout the semester. The students were tasked with creating three add-ons for the upcoming Australis version of Firefox.

The goal of the project was to get feedback on the new Australis add-on APIs before it became too late to make significant changes. Through the process some bugs were filed, but none that caused us to have to go back and rethink our initial direction.

The three add-ons that the students were asked to create were a weather add-on, music add-on, and Bugzilla add-on. Please watch the video below to get an overview of their capabilities.

Video

You can view the source code for the Weather widget and the Bugzilla widget online.

Download a Holly nightly today

4 December, 2013 § 1 Comment

Continuing with the Australis work that much of the Firefox front-end team has been laser-focused on recently, we now have automatically updating nightly builds of Holly (Windows, OS X, Linux).

Firefox Holly

Holly is the version of Nightly that doesn’t include the Australis changes. We are running this special “backout” branch of Nightly because Australis won’t be ready to make the move to Firefox Aurora by the December 9th merge date.

We will continue to work on Australis in the Nightly 29 train, with the goal of Australis merging to Firefox Aurora 29. In the meantime, the Holly branch is what will be merged to Firefox Aurora 28.

It is very important that we have nightly testers who use Holly to help the Firefox community make sure that we have good code coverage over the changes that will be making their way to our Aurora population.

If you’d like to help test out the Holly branch, you can now download an auto-updating nightly build of Holly (Windows, OS X, Linux). Again, these will be very similar to the official Firefox Nightly builds with the exception that they don’t include the Australis user interface changes.

Running a backout branch with Mercurial

21 November, 2013 § 3 Comments

As mentioned in an earlier post, we are running a special branch of Firefox that is made of the Nightly (mozilla-central) trunk minus the Australis changes. This branch will be the source of our Aurora (mozilla-aurora) builds in a few weeks.

As we were planning this work, we found that there weren’t many resources on the internet that described how to do what we wanted.

Basically, we have our trunk that will have a large and invasive feature being built on it. However, we also want to have a branch that doesn’t include this work.

To get started, we created a separate repository (holly) that was cloned from mozilla-central prior to the feature branch being merged in to mozilla-central. When the feature branch was merged in to mozilla-central, we merged over mozilla-central to holly again. At this point we ran a reverse diff of this merge (which only consisted of the feature branch changes). This reverse diff was then applied and committed to essentially back out all of the feature branch on this new holly repository.

Getting started was the easy part. Of course, software is never finished and we needed to figure out how to handle future changes to the feature.

We kicked around many ideas as we were trying to figure out how we wanted to run the backout branch, and I feel that we have settled on a pretty simple route that so far has worked smoothly.

Each time that we want to merge from mozilla-central to holly we do the following:

  1. cd /mozilla-central
  2. hg pull -u
  3. cd /holly
  4. hg pull -u
  5. hg pull /mozilla-central -r mozillaCentralChangeset
  6. if the set of changes between holly tip and mozillaCentralChangeset include changes that need to be backed out:
    1. hg up -r mozillaCentralChangeset
      • to switch heads to the mozilla-central-based head
    2. hg qbackout -r rev1+rev2+rev3
      • from oldest to newest, where rev* are the revisions that need to be backed out)
    3. hg qfin -a
    4. hg up -r hollyTipChangeset
      • to switch heads back to the holly-based head
  7. hg merge
  8. hg commit -m "merge mozilla-central to holly"
  9. hg push

qbackout is a Mercurial extension written by some Mozillians to make backing changesets out much easier. It uses Mercurial Queues and generates reverse diffs instead of creating a full backout branch like hg backout does. I highly recommend it.

I hope this post will help others who want to do something similar.

Australis landing plans

8 November, 2013 § 38 Comments

Australis

The team working on the new Australis version of Firefox (myself included) is starting to get close to merging to mozilla-central. We’re too far from being able to say exactly when this code will merge, but I want to go over our backout plan for Australis.

As you may or may not know, Australis is a project to provide an updated visual design, streamlined tab strip, new Firefox menu and improved customization capabilities.

Australis

Due to its large scope, Australis couldn’t be implemented with the ability to toggle its presence via an about:config preference. This unfortunately carries with it a more burdensome plan to undo the changes should there be issues that lead us to delay the release of Australis.

When Australis (currently located on the UX branch) merges to mozilla-central, the Australis team will manage a special project branch that mirrors mozilla-central but excludes the Australis changes. This branch is located in the temporary Holly project.

In the likely chance that we choose to hold Australis on the Nightly train for an extra release cycle, we will use Holly to merge to mozilla-aurora. This will allow the mozilla-central changes not related to Australis to continue moving along with the release trains.

This also presents an issue in that the code that reaches Aurora will have a tiny fraction of the testing hours on it compared to the Nightly builds. To work around this, I’m asking that users who aren’t interested in Australis use the Holly branch for their Nightly builds. This will help spread out some of the testing hours and make sure to catch any potential merge bustage faster. I’ll be posting a link to download Holly nightlies once we merge from UX to mozilla-central.

In the meantime, if you are looking to help test Australis you can download a build from the UX branch.

Where Am I?

You are currently browsing the Mozilla category at JAWS.

Follow

Get every new post delivered to your Inbox.

Join 1,015 other followers