[webkit-dev] User agent woes

Saam Barati sbarati at apple.com
Sun May 7 10:43:36 PDT 2017



> On May 6, 2017, at 5:19 PM, Michael Catanzaro <mcatanzaro at igalia.com> wrote:
> 
> Hi,
> 
> You're probably aware that WebKitGTK+ has user agent quirks to make various popular websites work, most notably google.com.  For our list of quirks, see:
> 
> https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/UserAgentQuirks.cpp
> 
> Recently we had two major bugs caused by these quirks:
> 
> https://bugs.webkit.org/show_bug.cgi?id=171603 (New YouTube displays only white page)
> https://bugs.webkit.org/show_bug.cgi?id=171770 (Google login fails on white page)
> 
> In the case of the YouTube bug, I decided to just remove the quirk. This case was pretty much a nightmare scenario, because Google decided that a random subset of users would receive the new version of YouTube long in advance of the rest of us. This means that we had a portion of our users complaining that YouTube was "broken" for weeks when we were unable to reproduce the issue (and had no way to do so; how could we have guessed it was some trial program?).
> 
> Anyway, removing the quirk is not a good option for the generic google.com quirk in the second bug. If we use a standard user agent, we receive a crap unusable 1990s version of Google Calendar, a high source of user complaints, and also the awesome 3D earth mode in Google Maps that our users expect is unavailable. This makes users think that WebKit is bad. I found a solution, but I know it's temporary; give it a few more months and Google will break us again, no doubt.
> 
> User agent is an extremely demotivating, never-ending game, and it's by far our biggest web compatibility problem. It almost feels as if Google is deliberately trying to break WebKit, which I know is not true as they don't care either way about us... but they do know full well that basing logic off of user agent checks serves to harm less-popular browsers, so it's hardly unintentional. I cannot think of any aspect of WebKit development less gratifying than maintaining our user agent quirk list, nor any bigger user agent offender than Google.
> 
> For a while I thought there was nothing we could do, but now I have an idea: Safari could adopt the same (or lightly-adapted) user agent quirks that we use for WebKitGTK+. Of course, only the small handful of websites to which we currently need to send user agent quirks would be affected by this change: Google, Yahoo, Slack, Whatsapp, Typekit, and some Chinese site Taobao. Now, this would do no good for Safari, but it would be a huge help to us as it would ensure that if these user agent offenders attempt to degrade functionality for browsers not on their lists, they will have to at least treat all WebKit browsers equally. Presumably they test to make sure their websites work in Safari, so that should make this situation much better for other ports. And if we run into problems, we at least know the change is limited to this small set of websites.
> 
> I think the existing quirks would be fine for Safari with minimal changes. We would definitely need to add some #if OS(UNIX) && !PLATFORM(COCOA) guards inside urlRequiresLinuxDesktopPlatform(), and put if !PLATFORM(IOS) around the quirks that are designed to turn off mobile versions of websites. This would only be a small amount of work to set up, and it would only affect the handful of websites that we have identified as problematic. Would Apple be willing to allow this?
> 
> Alternatively, we could use the nuclear option and add a Chrome version component, similar to how Chrome includes a Safari version in its user agent. (Bonus: that will shut up Google's "switch to Chrome" ads for a couple weeks until they figure it out.) Edge already includes a Chrome version. This would undoubtedly be better for the web as a whole, but it would surely also introduce serious short-term compatibility problems, as an unknown number of websites would likely break horribly in Safari (and some known websites, e.g. YouTube and Google Hangouts), so that's a pretty tough ask. Making it more difficult for websites to send us crap versions of web pages would be good for WebKit in the long term, but it's way safer to start only on quirks for specific sites.
> 
> What do you think?
This is not my area of expertise, but why can't you just adopt Safari's user agent instead of the other way around?

- Saam

> 
> Michael
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev


More information about the webkit-dev mailing list