Firefox 3: rocking on Linux

by Christopher Blizzard

A few people have been noticing how good our support on Linux has gotten during the Firefox 3 development cycle and I thought I would post to try and point out some of the good stuff that we have coming down the pipe.

Native Widget Support

Thanks to the awesome work of a pile of contributors, the native theme support on Linux has gotten much better. The guys doing this work include Ian Spence, Julien Rivaud, Michael Ventnor, Matthew Gregan, Teune van Steeg and Ian McKellar.

Mixed with the new native form controls that we have for all platforms coming up for Firefox 3, the results make the web so much more pleasant to use. Here’s an example of how much nicer forms will look with Firefox 3 on Linux:

Firefox 2 Firefox 3



Desktop and Icon Integration

The Tango guys have been doing a lot of work on building an icon set for Firefox 3. But they aren’t just making new icons. It’s more than that. It’s also making sure that we use the native icons wherever we can. You can see screenshots of the various themes in this arstechnica article and in an Icon sheet that Alex put together. The guys doing the heavy lifting for the Tango icons are Andreas Nilsson, Kalle Persson, Ulisse Perusin, Jakub Steiner, and Lapo Calamandrei. Michael Ventnor and Michael Monreal have been doing work to make sure that native Icons are used whenever it’s possible.

I made some images that show some differences between Firefox 2 and Firefox 3. I suggest that you look at the full image with notes for the Firefox 3 image. It will show you some of the more subtle things that the native theme code does today to create a really good experience.

Firefox 2

Firefox 3

We’ve started to explore deeper desktop integration as well. For example, we have a service that can connect to DBus and we listen for NetworkManager changes to determine when we should be online or offline. Since this is a service I’m pretty sure we can extend this to other places as well, including from XUL chrome and Firefox Extensions. (Maybe it’s time to move away from the horror of XRemote and move to a DBus service for activating a browser instance at last?) Robert also landed patches that he did when he was still at Novell to do proper startup notification.

Cairo and Pango are first class citizens (and then some!)

Way back in the day I did the original patches to start using Pango in Firefox as another font backend. Since then that work has been migrated into the core of the rendering engine and is used as the native font backend for Linux.

Cairo has gotten an even deeper integration into our engine. Vlad did a great post on the rendering infrastructure that’s coming in Firefox 3 and if you look you’ll notice that Cairo is our base rendering engine for all of our platforms. Vlad and other contributors did a lot of work to improve Cairo for Linux, Windows and the Mac. This is a great example of where we needed a library for all of our platforms and our investment to make sure it worked everywhere really benefitted Linux.

Other Platform Improvements

There are a staggering number of platform improvements coming in Firefox 3. In the area of memory use and performance we’re making good strides. One example that affects Linux is the use of Pixmap memory by Firefox. Federico originally wrote a patch that ditched pixmap memory from the image decoders. Stuart did a lot of work to get that into our tree and we now throw away pixmaps after 60 seconds or so. This should keep a good balance between performance and memory use and will improve the perceived memory consumption of the browser. (Note: this still needs to be ported to the GIF decoder – looking for someone awesome to volunteer to do it!)

Stuart has been doing a huge number of blog posts about the work that he’s been doing in looking at memory fragmentation. Part of mitigating fragmentation as an issue (we can’t eliminate it completely) is removing allocations entirely or moving allocations into their own pools. Stuart posted the results (including a pretty graph) of what it looks like when we remove 100,000 allocations from the startup path of the browser. We’ve also been looking at using per-document memory pools as a way to mitigate some of the effects of fragmentation. Connecting allocation pools to the lifetime of objects seems to be the right way to think about the problem, and documents have a well-known lifetime.

That’s just one area in which we’ve invested in Firefox 3’s platform. You should take the time to walk over and look at the list of new features we’ve got coming up in Firefox 3. You should go look at it. Right now. No, really, I’ll wait.

Did you look yet? No? No, really. I’m fine. I can wait. I have the time. Go look.

It’s an impressive list, isn’t it? I certainly thought so the first time that I looked at it.

Investing in GNOME

I thought it would be worth it to talk about some of the more general investments that the Mozilla Foundation has been making in GNOME. Mozilla has joined the GNOME Advisory Board (although we’re not listed on the web page for some reason) and we’ve been funding a fair bit of work on Accessibility. Behdad posted about it and it was mentioned in Frank’s overview of 2007 grants that were done. It amounts to around $150k in investments to date and we’re trying to figure out how to direct money along with GNOME on some more accessibility efforts as well. So we’ll continue to see investments from Mozilla to GNOME and hopefully see a closer relationship come together as we continue to work together on open source, open format issues and continue sharing technology.

Overall I think that things on Linux are pretty healthy. We’re going to be able to deliver a top-notch product on top of Linux, we’re working well with other projects and our technology works really well on the platform. What we’re going to deliver is better integrated, faster and smaller and brings all the work that we’re doing to improve the web to Linux and we’re doing it at parity with the other two major platforms. I’m very excited to see how people react to the new browser on Linux. I think they will be very happy with it.