Identifying the user's device by name is an anti-pattern on the web.
There are 2 reasons:
- Tracking/fingerprinting.
GPUAdapter.name is particularly insidious because it can indicate the user's socioeconomic status.
- Correctness: Consider the User-Agent string, and all the strife that has caused. For example, we don't want websites to say
if (adapter.name.indexOf("NVIDIA") != -1) { /* enable bells and whistles because we know we're on a fast device */ }. These kind of assumptions about device manufacturers always end up being wrong in the long term.
If an application needs to know whether or not they have to work around some bug on some driver, the way they should be doing that is by observing if the bug actually occurs, not by reading the device's name.
It is not sufficient to defend GPUAdapter.name by saying that browsers can just lie. Doing so is misleading the app developer; making them think they have access they don't actually have.
Identifying the user's device by name is an anti-pattern on the web.
There are 2 reasons:
GPUAdapter.nameis particularly insidious because it can indicate the user's socioeconomic status.if (adapter.name.indexOf("NVIDIA") != -1) { /* enable bells and whistles because we know we're on a fast device */ }. These kind of assumptions about device manufacturers always end up being wrong in the long term.If an application needs to know whether or not they have to work around some bug on some driver, the way they should be doing that is by observing if the bug actually occurs, not by reading the device's name.
It is not sufficient to defend
GPUAdapter.nameby saying that browsers can just lie. Doing so is misleading the app developer; making them think they have access they don't actually have.