Platform/Layout/CSS Compatibility

From MozillaWiki
Jump to: navigation, search

CSS vendor-prefix compatibility

This page is preserved to maintain history and not intended for current status of projects.

Problem: WebKit mobile web monoculture. There is currently (still) a WebKit mobile web monoculture, numerous sites that have WebKit-specific content and reduced content/style/functionality for everyone else, despite numerous evangelists at Mozilla, Opera, and Microsoft working with web developers to publish standards-based cross-browser content.

What is Mozilla doing about the problem?

  1. Studying the extent of -webkit- property dependence (Bugzilla 708406).
  2. Prioritizing standardization for such properties that have high levels of -webkit- prefix usage on the web (text-size-adjust, CSS3 Animations/Transitions/Transforms).
  3. Experimenting with some -webkit- prefix support to see if it fixes sites.

Is Firefox going to support WebKit prefixes?

  • Very UNLIKELY - per our study of -webkit- dependent sites and experiments with some -webkit- prefix support see if it fixes sites (answer: very few, and even breaks some).

If so, when is that happening?

  • We don't have a specific release or date yet. We are continuing to study which sites appear to require Webkit-prefixed properties, and if implementing them actually fixes those sites or not (WebKit-specific sites sometimes depend on other WebKit-specific features, e.g.: touch events, WebSQL, etc.)

For more details, read on, and see also

problem statement

Sites that have WebKit-specific content and back-up content for everyone else.

-webkit- properties are used so much on mobile content in particular that non-WebKit browsers face a Prisoner's Dilemma problem, analogous to past quirks battles (e.g. 2003-4 era innerHTML and undetected document.all).

data: https://bugzilla.mozilla.org/show_bug.cgi?id=708406

problematic sites

See http://people.mozilla.com/~atrain/mobile/Evangelism/chrome-compare/chrome-compare.html for a comparison of Chrome on Android vs. Mobile Firefox mobile/13.0a1 Nightly

Feel free to add specific problematic sites here so QA & Evangelism can investigate and follow-up:

  • ...

See the tracking bug 739832 for more.

goals

The underlying open web goal:

  • Open up the webkit-specific part of the web to other vendors in the same way that we had to be practical about what IE-proprietary or IE-only technologies to support.

straw proposal

  • Prioritize standards for commonly used -webkit- prefixed properties.
    • text-size-adjust
    • CSS3 Animations (Mozilla ships unprefixed support)
    • CSS3 Transitions (Mozilla ships unprefixed support)
    • CSS3 Transforms (Mozilla ships unprefixed support)
  • Consider implementing some -webkit- prefixed properties.
    • Experiment with implementation and see if that fixes sites (the efficacy test).
      • So far, efficacy is poor (very few sites are fixed), and there are negative side-effects (some sites got worse with -webkit- prefixes).

straw proposal downsides

  • Unfortunately for the open web, implementing a -webkit- prefixed property (outside of WebKit) will nearly legitimize (make people assume they'll work forever) the use of -webkit- prefixed properties.
  • ...

possible downside mitigation

  • In the short term we can at least remove pain for web authors and users.
  • In the long term we can ensure the unprefixed properties (in CR drafts) work and encourage authors to switch to them. Done for:
    • transforms
    • transitions
    • animations
    • border-image

See and try How you can help with removing -moz- prefixes.

questions and methodology

For sites in general:

  • What are the thresholds (even approximate) for supporting an other-vendor prefixed property vs. not?
  • How much of this is due to user-agent sniffing?
    • Is there an approximate % of top N sites that justifies it?
    • Is there a set of specific top sites that justifies it?
      • Could grab the Alexa 50 for mobile and compare side-by-side
  • How should we consider occurrence counts of -webkit- properties?
    • Weighted by PageRank or equivalent?
  • Severity of feature absence. Missing some properties breaks a lot more than missing others. Consider usability of page with/without the feature, not just how often it is used. E.g. tap-highlight-color does not affect the user's ability to use a website the same way text-size-adjust does.
  • ...

For specific sites:

  • *Which* sites will work *how much* better if we implement *which* properties?
    • The sites which are currently "broken" should be listed above in "problematic sites" and have a bug# for each one.
  • ...

parsing other vendor prefixes approaches

  • parse other vendor prefixed properties only in conjunction with parsing the equivalent unprefixed properties
  • only do it for environments where critically necessary, i.e. mobile not desktop, to encourage use of standard equivalents.

unprefixing principles

  • unprefixing things early (before CR) should be an exceptional case
    • what is the methodology for "exceptional" unprefixing?
  • unprefixing things must be evaluated carefully on case-by-case basis.
  • unprefixing is not something to do routinely just to "go faster" by a few months.
    • put the energy first into contributing and passing test suites instead.
  • ...

See also: Policy for experimental CSS features in Gecko.

meetings minutes discussions

2010:

2011:

2012:

FAQ

  • ...

Next Steps

  • Propose -webkit- properties to implement in Firefox Mobile, each based on specific data from bug 708406.
    • -webkit-... due to prevalence of usage in x% of sites ...
  • (none so far that are justified by the experiments done / data collected)

Data on vendor-specific prefixes

Here's a summary of the data collection and analysis that has been conducted regarding the use of various CSS vendor-specific prefixes.

The current datasets, collected by John Jensen, are:

Initial CSS properties dataset

Q and A

  • how many sites in your mobile Webkit browser crawl use at least one of 'transition', 'transition-timing-function', 'transition-duration', 'transition-property', 'transition-delay' (ignoring prefixes)?

1245 / 30087 = 4.13%

  • how many use them only with -webkit prefixes (no -moz or unprefixed versions of the properties)?

336 / 30087 = 1.12%

  • how many use them only with -webkit prefixes and unprefixed (no -moz versions of the properties)?

365 / 30087 = 1.21%

  • For each CSS prefix for which there are both -moz- and -webkit- prefixes, what percentage of domains host CSS that uses only the -webkit- version and not the -moz- or unprefixed version?
text-size-adjust 510 1.70%
box-shadow 428 1.42%
border-radius 412 1.37%
appearance 379 1.26%
font-smoothing 285 0.95%
tap-highlight-color 250 0.83%
transform 75 0.25%
border-top-left-radius 72 0.24%
border-top-right-radius 72 0.24%
transition-duration 61 0.20%
animation-duration 56 0.19%
animation-name 56 0.19%
border-bottom-left-radius 55 0.18%
border-bottom-right-radius 55 0.18%
transition-property 49 0.16%
animation-iteration-count 45 0.15%
padding-start 45 0.15%
background-size 43 0.14%
animation-timing-function 42 0.14%
box-sizing 42 0.14%

Larger, as-yet-unprocessed datasets

  • Raw data downloading completed in mid-January 2012, using these UAs:
  1. latest Android Native Browser from ICS
  2. latest Mobile Safari UA
  • Includes all HTML, Javascript, CSS files in compressed format
  • Roughly 1.1m files downloaded for each UA
Summary data is attached to bug 708406.