4 ms·
> [...] rendering to canvas allows programmers to have pixel perfect control over the look of their applications across all devices. Canvas-based fingerprintin
by kroltan 5y ago
> [...] rendering to canvas allows programmers to have pixel perfect control over the look of their applications across all devices.
Canvas-based fingerprinting due to rendering differences is a thing, so using the canvas is not pixel-perfect either.
Creating an UI library atop of that is a lot of work, though to be fair certainly manageable by Google. Remember, a UI library is not just about putting things on the screen, but sanely defining layouts, interactions, accessibility...
> Specifically, lots of specialized applications have UI components which do not have a corresponding HTML standard
I think that is the entire point behind Web Components [0], and if one really really don't want more DOM elements for their visuals, then the CSS Paint API and in fact the whole Houdini initiative [1] should be pursued instead, at least at the Google scale.
Besides these technical points, interoperability should be considered. Web browsers do a lot of work to match user expectations in behaviour to their native operating systems, as well as web conventions. (The classic example infractions being: links that cannot be control-clicked or middle-clicked to open on new tabs because they are not actual links but elements with click handlers; or not being able to scroll with page up/down, arrows, or middle-click, because the page reimplements scrolling in an unsemantic way)
Making your own UI toolkit is bound to all those problems, and those are user-facing problems that will affect the often-ignored long tail of users with unconventional setups.
Look at Flutter for Web, for example [2], it definitely feels entirely different from a regular website, even if it were to look the same. The scrolling does not respect my system settings, interaction is limited to only the most-common method, image scaling is subtly different.
And as Google observed themselves, extensibility and the user-agent should be considered before making such a decision, but it appears they consider it a liability in detriment of the user.
[0]: https://developer.mozilla.org/en-US/docs/Web/Web_Components https://developer.mozilla.org/en-US/docs/Web/Web_Components
[1]: https://developer.mozilla.org/en-US/docs/Web/Houdini https://developer.mozilla.org/en-US/docs/Web/Houdini
[2]: https://gallery.flutter.dev/ https://gallery.flutter.dev/
- ______- 5y ago> Canvas-based fingerprinting due to rendering differences is a thing, so using the canvas is not pixel-perfect either Luckily Firefox asks you if you want to use the HTML5 canvas API. You can specifically whitelist some pages to use the canvas API and stop it from running by default on all your other browsing. Also: you may want a dedicated browser just for Google's whole ecosystem so they can't track you across the web. I have a Chromebook just for that, which has its own unique canvas fingerprint completely separated from my main workstation PC's fingerprint.
- kroltan 5y ago> Luckily Firefox asks you if you want to use the HTML5 canvas API. Really? Where? I know you can disable it in about:config, but not that it was asked of the user. I have used Nightly for years and never seen such a dialog. Unless you did mean about:config, but I don't know how that works with a whitelist either.
- ______- 5y ago> Really? Where? https://www.ghacks.net/2017/10/28/firefox-58-warns-you-if-sites-use-canvas-image-data/ https://www.ghacks.net/2017/10/28/firefox-58-warns-you-if-si... It says 'HTML5 canvas image data' which is probably different than what I said (HTML5 canvas API). Sorry for any confusion.