We’re getting closer and closer to releasing Australis with Firefox 29, and that gives me more time to write something that’s been on my mind the last couple of weeks/months. Extra impetus was provided by sentiment along the lines of “how did you possibly miss this / think fix X was a good idea?” from some people outside the core development team, responding to some of our changes.
In this post, I’d like to give you an idea of the number of combinations of options, configurations, themes, add-ons, fonts and styles. It is enormous. Firefox generally tries to fit in with your operating system as best it can, and that means we have to pay attention to lots of things. And yes, that means sometimes we miss things. Here’s a breakdown of some of the things I’ve seen fly by as we made Australis, all linked to bugs specific to particular scenarios (there are 54 individual bugs linked, the majority of which were fixed for 29).
Firefox is available on three main (tier-1) platforms: Windows, Linux, and OS X.
All three platforms support lightweight themes, of which we support light and dark text variants. On light text lightweight themes, we invert the text and icons to be bright (which usually means the theme itself has a dark background). Interactions between these themes and the OS are not always the same everywhere, which leads to bugs.
Different toolbars like the menubar and the bookmarks toolbar can be toggled on and off (which sometimes makes certain ideas more difficult), and the menubar has an autohide state, which is new on Linux and caused specific bugs there.
And although we normally always show the tabbar and the navbar, there are popup windows where we don’t (toolbar=no), which, you guessed it, causes bugs.
Then we have per-window private browsing, which has an indicator which makes things ‘fun’ (and soon private browsing will look even more different from normal browsing).
Of course, while we stick to English layout direction is more or less fixed, but we ship both LTR and RTL locales on all platforms, which changes the order of things, which frequently leads to bugs.
Then there’s the padding that we added for “customize mode”, which affects layout of the toolbars and the (‘fake’) titlebar, which had its own problems.
Some issues are specific to pinned or overflowing tabs (sometimes even particular tabs), as well as panorama/tab groups.
Beyond that, styling is somewhat platform-specific, each with their own quirks:
OS X
OS X is, in a certain sense, “easiest” because the OS doesn’t have a lot of options that mess with things (font size, for example, isn’t easily configurable). But there’s still some variation:
- Lion vs. pre-lion: 10.6, which we still support, has no fullscreen button in the titlebar (unlike 10.7-10.9) and has no concept of “Lion fullscreen”.
- Spaces: causes odd bugs with panels.
- HiDPI (“retina”): this causes bugs / missed cases. Add external displays which might not be hidpi, and you get even odder bugs (this one’s 10.9-only, too, it seems!).
- RTL. Coupled with retina –> more bugs.
- 10.9 broke more stuff.
- Titlebar can be turned on/off now: cue more bugs.
Linux
Linux really means “Unix that has GTK”, as far as theming is concerned. Unfortunately that ends up being a wide spectrum of cases:
- Configurable font-sizes. And unsurprisingly, even when we use font-size based sizing to avoid issues, that still causes bugs (because CSS rounds things. ouch.)
- Different GTK themes cause lots of bugs.
- The same GTK theme being different in different distros or shells (Gnome 3 vs. Unity) makes bugs difficult to reproduce/track down.
- Different versions of GTK and/or GTK with/without compositor cause issues.
Windows
Windows really means “Windows XP, Windows Vista, Windows 7, Windows 8(.1) and all the corresponding Windows Server versions”. Which then means:
- A large number of OS themes to worry about:
- Configurable colors, fonts and font-sizes for Windows classic themes (and I think pre-Windows-8 high contrast themes, too?)
- Different fonts ship as default in different Windows locales (!), and the default fonts change between Windows versions. The font is user-configurable under some themes and versions of Windows, but not others (e.g. Windows 8).
- Titlebar toggling and some Windows themes (but not others, and also, multiple windows and a non-default session restore pref, in the case of this bug)
- Toggling some about:config preferences has surprising results.
- HiDPI is increasingly common, and more complicated than on OS X because of the variety of scaling factors available. We improved the tabs, but there is plenty left to do.
- Custom Windows XP themes! (which don’t always seem to expose the right colors, making it practically impossible to work well)
- Significant differences between maximized and restored mode.
This list doesn’t include bugs caused or revealed by add-ons, but of course those also add interesting behaviour to the mix.
All in all, it’s been an interesting first year as an employee at Mozilla (I started April 1st, 2013), and I can’t wait to see all our changes ship: Firefox 29 is scheduled for release on April 29th.