Page MenuHomePhabricator

Consider dropping the '1.5x' size logos from srcsets
Closed, ResolvedPublic

Description

Do any devices still use these? It's quite a lot of bloat.

See also: FY2025-2026 WE5.4 (Meta-Wiki), specifically T414805 (WE5.4.10) and T414338 (WE5.4.12), which are about reducing multimedia load. And future ideas to merge cache_upload into cache_text cluster (T263291) or replace Swift for thumbnails with ATS (T345334), both benefit from there being fewer image variants in popular use.

Event Timeline

Brought this up in conversation with @Jdforrester-WMF when looking through core in connection with T245190
1.5x was at introduction addressing a very short episode in handheld device manufacturing, around 2012-2013 with devices like

See https://www.mydevice.io/#compare-devices for a list with 1.5x phones.

Nowadays there's just two types of more-less popular devices using 1.5x instead of higher ratios:

  • Most popular seems to be the Surface/Surface Pro laptops by Microsoft
  • Several watches use it as well

See https://material.io/resources/devices/ for a list of modern devices.

1.5x was brought in also to save some bytes down the line on those old devices. Surface Book should be able to be using 2x scaled down in a satisfying way due to rendering engines capability to scale down.
Watches are none of our interest for full web page browsing capabilities.

Therefore I'd suggest to remove 1.5x logos completely and use 2x logos already at 1.5 pixel ratio media queries.

Krinkle edited projects, added: Performance-Team (Radar); removed: Performance Issue.
Krinkle moved this task from Limbo to Watching on the Performance-Team (Radar) board.
Krinkle subscribed.

Sounds good to me. I'd recommend asking Reading whcih way they want to round this in terms of product cost/experience trade-off. The logic for it resides in ResourceLoader/SkinModule.

According to a list curated by Lea Verou (W3C and CSSWG member) at https://github.com/LeaVerou/dpi/blob/gh-pages/devices.json via https://dpi.lv/, only 5 device models were known to have 1.5x screens:

  • Amazon Fire HD 6" and 7", and Amazon Kindle Fire HD 6" and 7" (https://en.wikipedia.org/wiki/Fire_HD#Models). It seems most of the Fire lineup had the same 1280x800 resolution screens presented as 1.5x for 6" and 7", 1.3x for 8", and 1.0x for 10". So, the bigger your screen, the bigger your pixels? Interesting choice, Amazon. The HDX series feature 2dppx screens instead.
  • Samsung Galaxy S2 (2011, https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II). This officially runs upto Android 4 which we dropped from Basic support in 2022 (T290815). Unofficially it can run Android 13 via LineageOS which we support and would connect fine today with latest Chrome Mobile or Firefox Mobile.

I ran a 2-hour campaign on enwiki, fawiki, and bnwiki (Common.js, Mobile.js) with the following snippet:

// T246054: Verify hypothesis that 1.5x is unused
var dppx = window.devicePixelRatio;
if ( ![1, 1.5, 2, 3, 4].includes( dppx ) || (window.outerWidth / window.innerWidth) > 1.4 ) {
	// Ignore other values https://en.wikipedia.org/wiki/Pixel_density#Smartphones
	//
	// Ignore zoom levels that e.g. increase 1x to 1.5x, or 2x to 2.1x (Note: this doesn't work)
	// If 1.5x is in use, we'll find plenty.
	dppx = 'other';
}
mw.track( 'stats.mediawiki_gadget_dppx_usage_2026_total', 1, { source: 'enwiki_desktop', dppx: dppx } );

Results (Grafana query):

Screenshot 2026-02-17 at 03.16.06.png (2,250×1,338 px, 196 KB)

  • 43% "3" (8.9M)
  • 29% "other" (6.1M)
  • 15% "2" (3.2M)
  • 11% "1" (2.3M)
  • 0.4% "zoomed" (78K)
  • 0.2% "4" (32K)

The value 1.5 was not observed a single time. But, there's a suspiciously high proportion of "other", so I took a look via Turnilo what these are made of, limiting results to the highest confidence samples only (same-origin pageview referals, and high reputation clients only):

webrequest_sampled_live
Url Path = /beacon/statsv, Uri Query ~ "mediawiki_gadget_dppx_usage_2026_total.*dppx:other"

Total results: 48K samples (*128=6.1M)
webrequest_sampled_live
Url Path = /beacon/statsv, Uri Query ~ "mediawiki_gadget_dppx_usage_2026_total.*dppx:other", Referer ~ "/wiki/", X-Is-Browser score = 90, Edge unique days = 8+
  • Total samples: 18K (*128=2.3M)
  • By user agent, top two:
    • 72% Mozilla/5.0 (Linux; Android 10; K) … Chrome/144.0.0.0 Mobile …
    • 14% Mozilla/5.0 (Windows NT 10.0; …) … Chrome/144.0.0.0 …

These are the default UAs of recent Chrome on Android and Windows. Looks legit. By ISP, it looked legit as well, with mostly residential ISPs and cellular networks.

I ran another 1-hour campaign to get a better sense of what's here. This time separating out "undefined" and "2_or_higher", so that "other" represents only dppx values between 1 and 2, which is what we want to know. I've also added 1.33 and 1.75, which were common in the past.

var dppx = window.devicePixelRatio;
var ratios = {
	'1.0': '1',
	'1.3': '1.33',
	'1.5': '1.5',
	'1.8': '1.75'
}
if (dppx) {
	if (dppx >= 2) {
		dppx = '2_or_higher';
	} else {
		dppx = ratios[dppx.toFixed(1)] || 'other';
	}
} else {
	dppx = 'undefined';
}
mw.track('stats.mediawiki_gadget_dppx_usage_2026B_total', 1, { source: 'enwiki_mobile', dppx: dppx });

Results (Grafana query):

Screenshot 2026-02-17 at 03.31.08.png (2,260×1,342 px, 130 KB)

  • 87% "2_or_higher"
  • 10% "1" (561K)
  • 2.9% "other" (159K)

Turnilo breakdown of mediawiki_gadget_dppx_usage_2026B_total.*dppx:other beacons:

  • Total: 1277 samples (x128=163K)
  • By user agent, top two:
    • 21% Mozilla/5.0 (Linux; Android 10; K) … Chrome/144.0.0.0 Mobile …
    • 18% Mozilla/5.0 (Windows NT 10.0; …) … Chrome/144.0.0.0 …

Once again, the value 1.5x was not observed a single time, idem for 1.33x and 1.75x. This time, the "other" represents only values 1 and 2 and is 2.9% of pageviews. This means in the first campaign, the "other" values were mostly unlisted values above 2, such as fractions like 2.1x or 2.6x (e.g. due to page zoom).

Change #1239812 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] ResourceLoader: Remove 1.5x variant from logo CSS

https://gerrit.wikimedia.org/r/1239812

Change #1239816 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] Parser,Linker: Remove 1.5x thumbnail from wgResponsiveImages feature

https://gerrit.wikimedia.org/r/1239816

Change #1239818 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/extensions/Cite@master] tests: Sync citeParserTests.txt with 1.5x removal

https://gerrit.wikimedia.org/r/1239818

Krinkle triaged this task as Medium priority.
Krinkle moved this task from Inbox, needs triage to Kanban Board on the MediaWiki-Platform-Team board.

Change #1243058 had a related patch set uploaded (by Thiemo Kreuz (WMDE); author: Thiemo Kreuz (WMDE)):

[mediawiki/extensions/Cite@master] Temporarily disable parser tests for 1.5x removal

https://gerrit.wikimedia.org/r/1243058

Change #1243058 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Temporarily disable parser tests for 1.5x removal

https://gerrit.wikimedia.org/r/1243058

See also: FY2025-2026 WE5.4 (Meta-Wiki), specifically T414805 (WE5.4.10) and T414338 (WE5.4.12), which are about reducing multimedia load. And future ideas to merge cache_upload into cache_text cluster (T263291) or replace Swift for thumbnails with ATS (T345334), both benefit from there being fewer image variants in popular use.

Change #1239812 merged by jenkins-bot:

[mediawiki/core@master] ResourceLoader: Remove 1.5x variant from logo CSS

https://gerrit.wikimedia.org/r/1239812

Change #1249431 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] ResourceLoader: Fix release note about 1.5x logo

https://gerrit.wikimedia.org/r/1249431

Change #1249431 merged by jenkins-bot:

[mediawiki/core@master] ResourceLoader: Fix release note about 1.5x logo

https://gerrit.wikimedia.org/r/1249431

Change #1251388 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ImageMap@master] Temporarily disable parser tests for 1.5x removal

https://gerrit.wikimedia.org/r/1251388

Change #1251389 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ImageMap@master] Tests: Update mageMapParserTests.txt with 1.5x removal from MW Parser

https://gerrit.wikimedia.org/r/1251389

Change #1251388 merged by jenkins-bot:

[mediawiki/extensions/ImageMap@master] Temporarily disable parser tests for 1.5x removal

https://gerrit.wikimedia.org/r/1251388

Change #1264142 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/extensions/intersection@master] tests: Temporarily disable parser tests for 1.5x removal

https://gerrit.wikimedia.org/r/1264142

Change #1264143 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/extensions/intersection@master] tests: Sync citeParserTests.txt with 1.5x removal

https://gerrit.wikimedia.org/r/1264143

Change #1264142 merged by jenkins-bot:

[mediawiki/extensions/intersection@master] tests: Temporarily disable parser tests for 1.5x removal

https://gerrit.wikimedia.org/r/1264142

Change #1239816 merged by jenkins-bot:

[mediawiki/core@master] Parser,Linker: Remove 1.5x thumbnail from wgResponsiveImages srcset

https://gerrit.wikimedia.org/r/1239816

Change #1264573 had a related patch set uploaded (by Subramanya Sastry; author: Isabelle Hurbain-Palatin):

[mediawiki/services/parsoid@master] Sync parserTests with core

https://gerrit.wikimedia.org/r/1264573

Change #1264573 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Sync parserTests with core

https://gerrit.wikimedia.org/r/1264573

Change #1251389 merged by jenkins-bot:

[mediawiki/extensions/ImageMap@master] Tests: Update mageMapParserTests.txt with 1.5x removal from MW Parser

https://gerrit.wikimedia.org/r/1251389

Change #1239818 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] tests: Sync citeParserTests.txt with 1.5x removal

https://gerrit.wikimedia.org/r/1239818

Change #1264143 merged by jenkins-bot:

[mediawiki/extensions/intersection@master] tests: Sync citeParserTests.txt with 1.5x removal

https://gerrit.wikimedia.org/r/1264143

Change #1268237 had a related patch set uploaded (by Jgiannelos; author: Jgiannelos):

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.23.0-a25

https://gerrit.wikimedia.org/r/1268237

Change #1268237 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.23.0-a25

https://gerrit.wikimedia.org/r/1268237

Change #1268298 had a related patch set uploaded (by VolkerE; author: VolkerE):

[mediawiki/extensions/Kartographer@master] Remove 1.5x Wikivoyage Wikimedia logo

https://gerrit.wikimedia.org/r/1268298

Change #1268300 had a related patch set uploaded (by Pppery; author: Pppery):

[operations/mediawiki-config@master] Drop 1.5x logos

https://gerrit.wikimedia.org/r/1268300

Change #1268298 merged by jenkins-bot:

[mediawiki/extensions/Kartographer@master] Remove 1.5x Wikivoyage Wikimedia logo

https://gerrit.wikimedia.org/r/1268298

Change #1268300 had a related patch set uploaded (by Pppery; author: Pppery):

[operations/mediawiki-config@master] Drop 1.5x logos

https://gerrit.wikimedia.org/r/1268300

I've confirmed that ^/static/images/project-logos/.*-1.5x with has drained from the webrequest logs after 2026-03-13 (1.46.0-wmf.19 group2) and are no longer needed.

Prior to March 13th, there were about 1400 matching requests per day in webrequest_sampled_live. If we look at HTTP 200 responses (i.e. ignore 404 or 429), X-Is-Browser>=30, and Edge-unique-days>=8, there were 900 samples per day before March 13th. That amounts to 900x128/24/60 = estimated 80 pageviews per minute. The majority of these were from Chrome on Windows desktops in Russia.

Change #1268300 merged by jenkins-bot:

[operations/mediawiki-config@master] Drop 1.5x logos

https://gerrit.wikimedia.org/r/1268300

Mentioned in SAL (#wikimedia-operations) [2026-04-15T20:36:59Z] <jforrester@deploy1003> Started scap sync-world: Backport for [[gerrit:1268300|Drop 1.5x logos (T246054)]], [[gerrit:1271839|Enwikinews: disable lingering FlaggedRevs template processing (T423512)]], [[gerrit:1270583|Record file usage from TemplateStyles pages (T413707)]]

Mentioned in SAL (#wikimedia-operations) [2026-04-15T20:38:53Z] <jforrester@deploy1003> jforrester, bawolff, pppery: Backport for [[gerrit:1268300|Drop 1.5x logos (T246054)]], [[gerrit:1271839|Enwikinews: disable lingering FlaggedRevs template processing (T423512)]], [[gerrit:1270583|Record file usage from TemplateStyles pages (T413707)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-04-15T20:46:14Z] <jforrester@deploy1003> Finished scap sync-world: Backport for [[gerrit:1268300|Drop 1.5x logos (T246054)]], [[gerrit:1271839|Enwikinews: disable lingering FlaggedRevs template processing (T423512)]], [[gerrit:1270583|Record file usage from TemplateStyles pages (T413707)]] (duration: 09m 15s)

Change #1275063 had a related patch set uploaded (by VolkerE; author: VolkerE):

[wikimedia/portals@master] Remove 1.5x logos

https://gerrit.wikimedia.org/r/1275063

Change #1275063 merged by jenkins-bot:

[wikimedia/portals@master] Remove 1.5x logos

https://gerrit.wikimedia.org/r/1275063