Compatibility/Taxonomy

From MozillaWiki
Jump to: navigation, search

WebCompat Taxonomy

Explore the reasons why a site fails in a browser.

The Web site is…

Using a specific vendor technology

Examples

  • prefixed CSS and JavaScript (-webkit-*, webKit*).
  • Specific codec for video supported only in one browser, platform,

What can be done?

  • Outreach to the site. Long process and not always successful
  • Shim it inside Firefox while attempting to do outreach. (Site Interventions)
  • Fix it in Firefox if really widespread on too may sites. It becomes (unfortunately) part of the Web reality.


Sending a specific working version of the site

Often based on user agent sniffing both on the client side or/and the server side. These can be very difficult to solve. It's more business related than a technical issue.

Examples

  • Different tier version for different browsers (Google search, Baidu, etc.).

What can be done?

  • Outreach to the site, if we can demonstrate that the "fancier version" is working well in Firefox.
  • create a UA override in some circumstances. Drawback: we disappear from the statistics. (Site Interventions)


Sending to a specific interactions of the site through features detections

Basically the sites are doing the right thing here, but someone having a degraded UX behavior compared to someone using a different browser will report it as the browser not working.

Examples

  • Sending a video with a codec with lower definitions

What can be done?

  • Outreach to the site.
  • Shim it. (Site Interventions)


Using a standard technology not yet supported by Firefox

The Webcompat issues of today are sometimes created by the lack of support of technologies of yesterdays.

Examples

  • SpeechRecognition. This creates a load of secondary issues such as adding future code detection legacies.

What can be done?

  • Implement it in Firefox


Using a NON-standard technology not yet supported by Firefox

These are hard to fix. When we fix it in Firefox, we create secondary compatibility issues. Sites sometimes use these as signals for codepath selection to trigger different user experiences.

Examples

  • innerText (FIXED)
  • window.event (FIXED)
  • CSS Zoom

What can be done?

  • Implement it in Firefox, but we need to deal with the consequences too. Example: using window.event, to target the detection of keyCode.
  • Outreach if the problem is not widespread.


Relying on a bug of another browsers

There is a spec but specs are sometimes not implemented exactly the same. Not every corner cases and spec interactions are tested. But market shares have a strong influence on which bugs become de facto normative as developers rely and test on the main market share browsers of the moment.

Examples

  • Some sites were broken because Firefox implemented the flexbox spec and Chrome had a different way of doing things.

What can be done?

  • Outreach if the behavior/usage is not well-spread
  • File a bug on Blink and/or WebKit repos to help them fix the issue. (The decision will be adjusted depending on Counter stats)
  • Change the firefox behavior to match the other browser behavior and change the spec to reflect the reality of implementations.


breaking because of Mozilla technology choices

Examples

  • Enhanced Tracking Protection (ETP) will block resources online and hence will break websites in unexpected ways.

What can be done?

  • Outreach to the site but only in limited ways. We can't ask a website to not track users if it's part of their business models. It's their choice.
  • Explain people using firefox they made the choice to use ETP strict and that breakage is expected.
  • Shim it so the site doesn't break. This is borderline in some cases.