Hi, after a discussion with Jon, we decided that the usage of X-Device for
CentralNotice platform-specific banners is a dead end. It has the following
problems:
* X-Device was created for regulating frontend caching allowing some
device/browser specific CSS. It was not intended for anything else.
* It is not grouped by platform. Or browser type. It is grouped by
cacheable entities.
* X-Device usage is dictated by performance. So if CN needs to distinguish
between iPhone 4 and 5, for example, the answer will be "no can do", we
can't increase cache fragmentation for the sake of banners.
* We are working on decreasing the number of X-Devices: there's no
guarantee that we will not merge 'android' into 'webkit' one day.
* Android-based browsers can correspond to 'android', 'webkit',
'operamini'
and 'operamobile' X-Device strings, the latter 3 being shared with several
other platforms. We in general need to target all Android users with our
app banners, not users of a specific Android browser.
Thus, we decided to change it.
*
https://gerrit.wikimedia.org/r/#/c/61989/ removes wgMobileDeviceName
support from MobileFrontend.
*
https://gerrit.wikimedia.org/r/#/c/61988/ adds basic detection code to
CentralNotice.
Ideally, every mobile banner could specify a user-agent regex and a special
ResourceLoader module collect the regexes from all available banners.