Background

Drupal core officially declares support for Opera Mini. This setting is stored in core’s package.json (https://git.drupalcode.org/project/drupal/-/blob/9.2.x/core/package.json...), which is then read by core’s PostCSS and Babel processes to compile the CSS and JS.

To know what changes need to be made, these processes query the caniuse repository at https://github.com/Fyrd/caniuse. For more information on exactly how this process works, see https://github.com/browserslist/browserslist/issues/409.

What is Opera Mini?

Opera Mini is a mobile specific browser that was created to dramatically save bandwidth. It does so by pre-compiling the third-party HTML server-side, compressing it, and then sending it to the client.

However in later versions of Opera mini, this server-side compiling is only done when in “Extreme Data Savings” mode. This mode does not support modern browser technologies such as CSS Variables, CSS Grid, Logical Properties and more.

Note that Opera Mini also supports a "High Data Savings" mode (see https://blogs.opera.com/news/2015/09/new-high-saving-data-opera-mini/). This mode does not use server-side rendering, and works properly with modern features.

According to the tooltip on CanIUse,

Opera mini is primarily used on feature phones with processing done based on Opera 12.1 via Opera servers. To test on iOS/Android this mode can be enabled using “Extreme Data Savings”

Problem

Even though we declare we support this browser, we don't. See #2119299: Make sure Drupal 10 works with mobile proxy browsers.

There are further problems with our declaration of support:

  1. The caniuse repository doesn’t differentiate between Opera Mini versions. There is only one version called “all”.
  2. The caniuse repository doesn’t differentiate between using “Extreme Data Savings” mode and not. It assumes “Extreme Data Savings”.

This is very important because “regular mode” supports modern features like CSS Variables, and CSS Grid.

The summary of this is that CanIUse’s documentation of Opera Mini’s feature list is not the documentation for the browser, but for a non-default mode within the browser.

Continued support for Opera Mini in this manner will completely negate the use of modern browser features for the indefinite future (including any improvements from removing IE11 support)/

Proposed resolution

Remove Opera Mini from the list of supported browsers. Opera Mobile is not affected, that is based on Chromium’s rendering engine, Blink.

Release notes snippet

Drupal core previously declared support for Opera Mini in 'Extreme Data Savings' mode, due to an issue with how CanIUse documents the browser's features. Drupal never actually supported this mode, so the declaration has been removed. Opera Mini in 'High Data Savings' mode, as well as Opera Mobile (a different browser altogether), are unaffected.

CommentFileSizeAuthor
#15 3202818-9.3.patch5.61 KBspokje
opera mini tooltip.png211.26 KBmherchel

Comments

mherchel created an issue. See original summary.

droplet’s picture

Drop it. Drupal has never truly supported it.

mherchel’s picture

Issue summary: View changes

Added information about Opera Mini's "High Data Savings" mode.

nod_’s picture

What droplet said.

we can burry this one at the same time too: #2119299: Make sure Drupal 10 works with mobile proxy browsers

nod_’s picture

mherchel’s picture

Title: [policy, no patch] Drop Opera Mini support from Drupal 10.0.x » [policy, no patch] Drop Opera Mini (in reverse proxy mode) support from Drupal 10.0.x
wim leers’s picture

Joining @droplet and @nod_ in agreeing that dropping Opera Mini support is the sensible pragmatic choice here.

Especially when you consider that it’s been known to have issues for the entire Drupal 8 cycle: #2119299-5: Make sure Drupal 10 works with mobile proxy browsers, by @nod_, seven years ago.

gábor hojtsy’s picture

Parenting to the right META for Drupal 10. Do we have a reliable source of Opera Mini market share? I found Opera market share in general at 1 to 2%, don't know that would include Opera Mini or not. Looks like since we did not support it in the first place, it would only be honest to declare we don't support it.

shaal’s picture

I was able to find this stat, specifically for Mobile -
https://gs.statcounter.com/browser-market-share/mobile/worldwide
On April 2021, Opera Mini usage was 1.97%

in https://analytics.usa.gov
Opera browser is not even listed (very low usage)

mherchel’s picture

On April 2021, Opera Mini usage was 1.97%

Also keep in mind that Opera Mini by itself supports modern features. It's only when in “Extreme Data Savings” mode, where it does not support modern features.

So if the full Opera Mini market share is 1.97%, it can be assumed that less than half of that is in “Extreme Data Savings” mode.

catch’s picture

Opera has higher usage in the global south - i.e. stats for Africa show about 10% of mobile usage: https://gs.statcounter.com/browser-market-share/mobile/africa

However, this doesn't differentiate between opera mobile and opera mini, let alone reverse proxy mode. I think it's better to be honest and admit we don't support it, rather than pretending we do as currently.

gábor hojtsy’s picture

Category: Plan » Task

Recategorizing as Task like the other requirements issues.

gábor hojtsy’s picture

Title: [policy, no patch] Drop Opera Mini (in reverse proxy mode) support from Drupal 10.0.x » [policy] Be honest about lack of Opera Mini (in reverse proxy mode) support from Drupal 10.0.x

If this is just updating what we state to what we actually do, then do we need to wait until Drupal 10? Retitling for better accuracy for now.

spokje’s picture

Issue summary: View changes

(Updated IS to link to the correct line in core/package.json)

spokje’s picture

StatusFileSize
new5.61 KB

Out of curiosity, I removed the line for "last 1 OperaMini version", from core/package.json and did a:

$ yarn build
$ yarn prettier

on the 9.3.x-branch.

Attached are the resulting changes.

gábor hojtsy’s picture

Title: [policy] Be honest about lack of Opera Mini (in reverse proxy mode) support from Drupal 10.0.x » Be honest about lack of Opera Mini (in reverse proxy mode) support from Drupal 10.0.x
Status: Active » Needs review

If we want to jump right into cod updates here, then it is not a policy issue anymore. Are there also docs to update for Drupal 10?

spokje’s picture

  • Didn't mean to hijack the issue with a patch, was just curious what extras/changes/whatever would the removal of Opera Mini bring currently. If I did hijack the issue: Sorry about that!
  • On documentation, there's this for what's currently supported, and this for changes(?), also a CR seems to be used previously.
wim leers’s picture

I think it's better to be honest and admit we don't support it, rather than pretending we do as currently.

Thanks, @catch, for phrasing better what is really what I wanted to convey 😊

gábor hojtsy’s picture

I think its fine to jump into implementation here unless it would need multiple issues.

spokje’s picture

Thanks @Gábor Hojtsy for blessing my (non-intended) hijacking ;)

Since we're not "actually/really/fully" support opera mini, let alone reverse proxy mode currently, would it be OK to "drop" the "non-support" in D9.2 already, or is this a bridge too far and would this be D9.3 material, or am I way too over-enthusiastic and is this still D10 stuff?

gábor hojtsy’s picture

On that one I would refer to @lauriii and/or @justafish and/or @nod_.

spokje’s picture

Thanks afain @Gábor Hojtsy.

Let's await the verdict from The Council of The Front-End Elders. :)

justafish’s picture

Version: 10.0.x-dev » 9.2.x-dev
Status: Needs review » Reviewed & tested by the community

Patch looks good in #15

The code change is very minor so I'd happy for it to go into 9.2, but I'd defer to @catch and @xjm on how disruptive that would be.

andypost’s picture

Status: Reviewed & tested by the community » Needs work

It needs CR or release note snippet

spokje’s picture

Title: Be honest about lack of Opera Mini (in reverse proxy mode) support from Drupal 10.0.x » Be honest about lack of Opera Mini (in reverse proxy mode) support from Drupal 9.2/9.3
Issue tags: -Drupal 10, -JavaScript

Thanks @justafish and @andypost.

Let's first do a tag-clean-up and title change to reflect we're back in the land of "doing stuff" in 9.2.x/9.3.x instead of discussing 10.x policies

spokje’s picture

Assigned: Unassigned » spokje
spokje’s picture

Title: Be honest about lack of Opera Mini (in reverse proxy mode) support from Drupal 9.2/9.3 » Remove Opera Mini (in reverse proxy mode) support from Drupal 9.2/9.3
gábor hojtsy’s picture

@Spokje: what's the reason for the title change? As explained above support does not actually exist, so we are not removing it. This new title sounds alarming compared to what is actually happening.

spokje’s picture

@Gábor Hojtsy: They way I see it: We currently say we support it, that's technically done by the line in the IS (https://git.drupalcode.org/project/drupal/-/blob/9.2.x/core/package.json...). The patch removes that line and thus the support.

Now I'm not a man of subtleties, (nor a native speaker), so chances are I've made things worse with the title change.
That's certainly not what I intended. If you think the previous title is stating the thing we're doing with the patch. I'm more than happy to revert the title-change or let you revert it.

gábor hojtsy’s picture

Title: Remove Opera Mini (in reverse proxy mode) support from Drupal 9.2/9.3 » Remove untrue declaration of Opera Mini (in reverse proxy mode) support from Drupal 9.2/9.3
Issue summary: View changes

Removing actual support for a browser would not be possible in Drupal 9 for backwards compatibility reasons :) We are discussing removing our declaration of support because it is not true. Proposed yet another variant for the title.

Also updated the summary a bit.

spokje’s picture

@Gábor Hojtsy: You're a well spoken man, thanks :)
tips hat

catch’s picture

Issue summary: View changes
Status: Needs work » Reviewed & tested by the community

Adding a release notes snippet and CR.

catch’s picture

Title: Remove untrue declaration of Opera Mini (in reverse proxy mode) support from Drupal 9.2/9.3 » Remove untrue declaration of Opera Mini (in reverse proxy mode) support from Drupal 9.3
Issue tags: -Needs change record +9.3.0 release notes

We've missed the window for the release candidate, so I think we should do this in 9.3.0.

spokje’s picture

Version: 9.2.x-dev » 9.3.x-dev

Changed Version of issue to 9.3.x-dev.

spokje’s picture

Assigned: spokje » Unassigned

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 15: 3202818-9.3.patch, failed testing. View results

ravi.shankar’s picture

Status: Needs work » Reviewed & tested by the community

Re-tested patch #15 on Drupal 9.3.x and it's green.

Moving back to RTBC as per comment #32.

catch’s picture

Status: Reviewed & tested by the community » Fixed

Committed/pushed to 9.3.x, thanks!

  • catch committed 23dcd9d on 9.3.x
    Issue #3202818 by Spokje, mherchel, Gábor Hojtsy, catch, Wim Leers,...
catch’s picture

catch’s picture

droplet’s picture

Missing a credit for @nod_ and @justafish I think.

catch’s picture

Oof, added.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.