Page MenuHomePhabricator

Restate Basic (Grade C) browser support to last 7 years' versions
Open, Needs TriagePublic

Description

https://mediawiki.org/wiki/Compatibility#Browser_support_matrix

Summary
This proposal is to restate Basic (Grade C) browser support except Edge and Android to last 7 years' versions. Edge will be unaffected and remain at 79. Android is also unaffected, as the last version of Chrome WebView for Android 5 is 95.

Differences
Before

  • Chrome: 49
  • Firefox: 49
  • Edge: 79
  • Safari (macOS, iOS): 10
  • Android: 5 (Chrome WebView 49)

After

  • Chrome: 62 [previous 7 years' versions]
  • Firefox: 57 [previous 7 years' versions]
  • Edge: 79 (first Chromium version of Edge, 2020)
  • Safari (macOS, iOS): 11 [previous 7 years' versions]
  • Android: 5 (Chrome WebView 62 [previous 7 years' versions])

Statistics
CanIUse

  • Chrome 49: 0.02%
  • Chrome 50: 0.01%
  • Chrome 53: 0.01%
  • Chrome 56: 0.02%
  • Firefox 52: 0.04%
  • Firefox 56: 0.01%
  • Safari iOS 10.2: 0.01%
  • Safari iOS 10.3: 0.04%

Negligible amounts: Chrome 51, 52, 54, 55, 57-61, Firefox 49-51, 53-55, Safari macOS 10.x.

Total Chrome 49-61, Firefox 49-56 and Safari 10.x: 0.16%

HTML/CSS additions
Unprefixed

  • CSS writing-mode property
  • CSS :any-link selector (-moz- no longer needed, -webkit- still needed)
  • CSS Filter Effects
  • Intrinsic & Extrinsic Sizing (partial, only -webkit- unprefixed only, -moz- still needed)
  • CSS3 Multiple column layout (partial)

Full support

  • :placeholder-shown CSS pseudo-class (unprefixed)
  • CSS text-orientation (-webkit- prefix for Safari)
  • ::placeholder CSS pseudo-element (unprefixed)
  • CSS background-blend-mode
  • Pattern attribute for input fields
  • Form validation
  • HTTP/2 protocol
  • :indeterminate CSS pseudo-class
  • CSS3 Border images
  • CSS.supports() API
  • :default CSS pseudo-class
  • :in-range and :out-of-range CSS pseudo-classes
  • focusin & focusout events
  • CSS font-stretch
  • Download attribute
  • Subresource Integrity
  • Fetch
  • Upgrade Insecure Requests
  • CSS font-variant-numeric (useful for tables)
  • #rrggbbaa hex color notation (very useful)
  • Animated PNG (APNG)
  • Minimum length attribute for input fields
  • rel=noopener
  • SPDY protocol
  • "once" event listener option
  • KeyboardEvent.key
  • CSS justify-content: space-evenly
  • CSS Grid Layout (level 1) (very useful)
  • :focus-within CSS pseudo-class

Partial support

  • Resource Timing (basic support)
  • Opus audio format
  • relList (DOMTokenList)
  • Scroll methods on elements (scroll, scrollTo, scrollBy)
  • system-ui value for font-family
  • FLAC audio format

Event Timeline

Here are the new HTML/CSS properties when going from Chrome 49/Safari 10/Firefox 49 to last 7 years' versions.

Unprefixed

  • CSS writing-mode property
  • CSS :any-link selector (-moz- no longer needed, -webkit- still needed)
  • CSS Filter Effects
  • Intrinsic & Extrinsic Sizing (partial, only -webkit- unprefixed only, -moz- still needed)
  • CSS3 Multiple column layout (partial)

Full support

  • :placeholder-shown CSS pseudo-class (unprefixed)
  • CSS text-orientation (-webkit- prefix for Safari)
  • ::placeholder CSS pseudo-element (unprefixed)
  • CSS background-blend-mode
  • Pattern attribute for input fields
  • Form validation
  • HTTP/2 protocol
  • :indeterminate CSS pseudo-class
  • CSS3 Border images
  • CSS.supports() API
  • :default CSS pseudo-class
  • :in-range and :out-of-range CSS pseudo-classes
  • focusin & focusout events
  • CSS font-stretch
  • Download attribute
  • Subresource Integrity
  • Fetch
  • Upgrade Insecure Requests
  • CSS font-variant-numeric
  • #rrggbbaa hex color notation
  • Animated PNG (APNG)
  • Minimum length attribute for input fields
  • rel=noopener
  • SPDY protocol
  • "once" event listener option
  • KeyboardEvent.key
  • CSS justify-content: space-evenly
  • CSS Grid Layout (level 1)
  • :focus-within CSS pseudo-class

Partial support

  • Resource Timing (basic support)
  • Opus audio format
  • relList (DOMTokenList)
  • Scroll methods on elements (scroll, scrollTo, scrollBy)
  • system-ui value for font-family
  • FLAC audio format
Xeverything11 renamed this task from Restate Grade C browser support to last 7 years' versions to Restate Basic (Grade C) browser support to last 7 years' versions.Fri, Nov 22, 11:20 AM
Xeverything11 updated the task description. (Show Details)

#rrggbbaa hex color notation is very useful as it is easier to create translucent colors which having to resort to rgba(). Let's say if you want to create green color with 60% opacity, you only need to type #00800099 instead of rgba(0, 128, 0, 0.6). It uses nine bytes instead of 20, so it can use less data. Additionally #RGBA is even smaller, at only 5 bytes.

CSS Grid Layout (level 1) is very useful as it is easier for designers to layout the user interface and make it responsive for mobile devices.

CSS font-variant-numeric could be useful as it is easier to read numeric tables with tabular numerics.

Why 7 years and not 6 or 8? Why introduce a timeframe?

Timeframe is useful as market share for older versions of browsers drop as time progress.

7 years is a magic timeframe for companies, such that Google supports "7 years of software updates" for Pixel 8 series phones.

Last year, Grade A support for browsers except Safari and Android have restated to last 3 years' versions.

Additionally, MediaWiki would feature new CSS features as time progresses.

I agree it would be ideal to move to a rolling window like Grade A for simplicity, but in practice Grade C is meant to capture a much wider net of readers which doesn't always correspond to a specific timeframe. Like I suggested in T380344#10349484, if there's no specific product/feature that needs this version bump we should probably wait to see how T367821 develops because it might make 7 years not even applicable.

I clarified that TLS 1.3 supports Safari macOS 12.1+ (on macOS Mojave and later) and Safari iOS 12.2+.

https://caniuse.com/tls1-3

I mentioned that CSS Grid Layout and #rrggbbaa/#rgba hex notation need this version bump. Both are very useful.