I use Firefox as my primary browser, and have used it since Firefox 1. While I will sometimes use other browsers for pages with compatibility issues, I was very happy as Firefox gained more and more market share and the web left the state it was in the early 2000s, where Internet Explorer was the one true browser, and Firefox users were second-class citizens. It saddens me that the web seems to be moving back towards this direction, with the massive market share of Chrome and Google’s commanding share of much of the web.

The features

Google has traditionally been at the forefront of providing advanced features that worked across all platforms. I was surprised, then, when they apparently removed (without much obvious reason) two features that used to work in Firefox, and still do under the right circumstances.

HTML5 video

Flash was a necessary evil for delivering video on the web, and still is used for this on many sites. While it has improved significantly over time (often outperforming Gstreamer HTML5 in its current state), it still remains a security risk, prone to issues, and overall something I wouldn’t miss greatly. Since I primarily use Linux for my desktop computing, I was excited with the advent of HTML5 video, since Flash support on Linux has always been subpar, and Adobe does not appear particularly invested in Linux Flash, packaging all new updates to a plugin tied in to Chrome.

Youtube’s HTML5 beta worked wonderfully on Firefox—while codec issuses had long been a concern, this had recently become less the case with Gstreamer support for H.264, despite odd performance issues.

Reload without refresh

Youtube recently introduced the ability to load new videos without reloading the page, using a red Javascript loading bar. This improved new video load time significantly.

Discovering the issues

Recently, I noticed that Youtube would not provide the HTML5 player to Firefox even if requested. It will still use it, and it works perfectly fine, if Flash is not available at all. Later, the Javascript loading bar stopped working entirely, regardless of the player used. This appears to have happened sometime in the last month.

Speculation

There were legitimate possible causes for these issues. Linux has nowhere near Firefox’s market share, and usually has issues not present on other platforms, especially where video codecs are involved. It could have also been that a problematic extension, which is far from unheard of, or that I was using the beta channel (Aurora), or that it had been broken recently in stable, the latest release of which (28) was fairly new.

Investigation

I decided further testing was needed to confirm that this was not a quirk of my setup, and went to a Windows 8 machine running the current stable release, and observed the same, and the same on Windows 8.1, Windows 7, OS X 10.9, and FreeBSD.

Still not convinced that this was not Mozilla or my configuration’s fault, I ran through a battery of other tests, mostly on Windows 8 as it was on hand:

Since 28 was recently released, I installed, 27, which I knew supported both features.

To rule out problematic extensions, I started Firefox in safe mode. Most of the OS tests were performed on fresh installs also.

Similarly. I ruled out A/B testing, as most of the machines had never been associated with my account or one of my common IP addresses.

I thought it may be a change to Google’s code that didn’t play nice with Firefox’s JS engine. I checked the Firefox developer console for errors, and while I have very little knowledge of Javascript, only one minor error appeared, so I am confident this is not the cause.

While I did not run through all tests on all OSes/versions, I am fairly confident that no configuration of Firefox will not encounter these issues.

Other browsers

It’s possible Google broke these features on all browsers, though unlikely. I first tried Chrome, since it usually has the best support for Google products. Both features worked correctly, as they had previously on Firefox. I also tried IE11 and observed the same.

Trying to fool Youtube

While disabling Flash to force HTML5 video was easy enough, I wasn’t able to find any configuration that allowed refresh-free loading. Fortunately, it is easy to simply masquerade as a known working browser by changing Firefox’s user agent. While I thought Google might use more advanced browser fingerprinting, they do not, and having Firefox mimic Chrome or IE11 restores refresh-free loading without issue. It does not appear to load the HTML5 player properly though, as it does not load anything as IE11 and does not load video as Chrome.

By the reverse token, changing Chrome’s user agent to Firefox causes it to exhibit the same issues. I went further and saved the webpages without and with most masquerades and diffed them, but noticed nothing of immediate significance. Most likely there is something present, but again, my grasp of JS is limited, and Google’s code is not designed for clarity.

Conclusions

It is clear, then, that the removal of these features is intentional and specifically targeted at Firefox, even though those features continue to work if Youtube is coerced into transmitting the code for them.

Why would Google do this?

There are legitimate reasons these issues might occur. HTML5 video is still in beta (albeit a typical well-functioning Google beta) and should be expected to break sometimes. AJAX loading is not critical, although it is very nice to have.

However, it is not clear why it would be necessary or desirable to not deliver this code to Firefox when it is clearly still available and functional. It does make sense that Google would be making changes to the beta HTML5 player, but not to disable existing working code.

Do no evil?

It’s possible Google is breaking this functionality as a subversive means to encourage users to convert to Chrome. It’s a bit odd in that it does not reach out and grab users attention like the “Switch to Chrome for a better web!” banners shown on many Google sites, and it isn’t immediately clear to users that that the solution is using other browsers, but it would further the notion that “Firefox is broken” already held by many users.

It seems it would make sense for Google to break functionality on other non-webkit browsers with HTML5 video support, namely Internet Explorer. However, there’s already bad blood between Microsoft and Youtube over the Windows Phone app, and IE11 has considerable market share (more than Firefox, by some counts), money, lawyers familiar with antitrust law, and many other ways to damage Google. Mozilla is a non-profit that relies on Google for income dwindling market share, and only one major competing product currently. Mozilla cannot leverage Firefox to hurt Google, as they’d only succeed in driving their own users to other browsers.

I find it quite ironic that Google is a strong advocate for net neutrality when it comes to the actions of other content providers and ISPs, but does not extend this to its own products. Maybe not evil, but certainly hypocritical.

Motives

More Chrome users means driving users more to Google services—though they already have a strong hold on much of the Internet, Chrome uses Google’s search by default, and many users probably won’t bother to change that. While they don’t gather Chrome search data directly, this probably still gives the actual search page (as many AwesomeBar queries will go to it).

Flash?

Breaking HTML5 video is a strange decision—I have no statistics, but I doubt many users enable it, although Firefox users may be more likely to enable it than most. However, Flash isn’t Google’s product and Google has little control over its development—though possibly more now given the Chrome integration with Pepper Flash. I’d think they’d welcome more users on disparate browsers using HTML5 video, as it is a beta, and is still in user testing.

Closing thoughts

I have shown that Google is intentionally blocking working features from Firefox users. I cannot prove that this malicious, and can only speculate as to malicious intent, but technical failings seem both unlikely and not actually present. I don’t know if Google will respond to this, if they’d tell the truth, undo what they did, and focus on making products that are great for all users, not just users embedded in Google’s ecosystem, but I hope they will. An open web is necessary to continued innovation and freedom from vendor lock-in, and isn’t something we can afford to lose as a society.