A rant (contains some immoderate language)
Software companies large enough to have responsibilities of stewardship over common aspects of the Web often make inferior technical decisions for no reason than their short-term gain at the expense of long-term benefit to everyone. Usually I let this wash past, I’m acutely aware it’s happening, but I don’t let it derail my thinking or my work. But sometimes — I just can’t help it — something will just piss me right off. Invariably it’s something modest, something that would simplify my life as a software developer, or open a small pocket of creative possibilities; invariably something that’s put to death as part of the collateral damage of a corporate business plan somewhere.
This time it’s the handheld media type for CSS. This harmlessly enumerated value promised to give developers a way to tailor websites for display on handheld devices. It was introduced in the CSS2 specification 13 years ago, with the following straightforward description:
Intended for handheld devices (typically small screen, monochrome, limited bandwidth).
Technology moves quickly and this was subsequently amended to:
Intended for handheld devices (typically small screen, limited bandwidth).
Any rationally minded individual would, I think, agree that any iPhone is by definition a handheld device. One that, whether it’s typical or not, has a small screen and limited bandwidth compared say a desktop or laptop computer, two other device classes that are frequently used to browse the Web.
So why does the Apple iPhone not classify itself as a handheld device? Here’s Apple’s justification:
CSS3 recognizes several media types, including print, handheld, and screen. iOS ignores print and handheld media queries because these types do not supply high-end web content. Therefore, use the screen media type query for iOS.
This is dross: superficially intelligible, but still drivel. It’s the sort of thing we pay our politicians to say because no other people of equal intelligence can bear to, except this is embedded in a technical document describing how to develop webpages for the iPhone.
CSS rules control the presentation of content, they have nothing to do with its “supply”. The most you could say is that CSS rules might be used hide “high-end web content” though I really struggle to see how this could ever be a real problem because a developer would never want to serve “high-end web content” to a device that doesn’t have the bandwidth to usefully download it or the screen to usefully display it only to finally hide it from the user when it had; and a strategy based on the assumption that content which is never visible is never downloaded is very risky.
This appears to be a manufactured justification. Apple is full of smart people, the only rationalization I can find which makes sense is that Apple didn’t want customers opening their stylish cardboard boxes and turning-on their expensive new gadgetry and launching their petite new browser to see monochrome pages filled with undersized text, if even from a handful of websites. Fair enough. It may have increased their bottom-line, but it’s paid for by every web developer who wants to reliably style their web pages for mobile phones, and it’s really biting us in the backside now that the screen resolutions of high-end phones overlap with those of low-end computers. It was a problem for Apple, but they side-stepped it, and exported it as a problem for (potentially) every web developer in the world.
That Android followed the iPhone down this dead-end just increases my frustration because it means that support for the handheld media type will never improve. Grrr…
I’ve made some minor edits for accuracy