CSS vendor prefixes threaten open web

Support for alien prefixes provokes standards advocate backlash

Minutes from a meeting of the W3C CSS working group have caused major concern in the web design industry, due to the suggestion browsers could start supporting alien CSS vendor prefixes, notably those for WebKit. Prefixes are commonly used in CSS to work with features that haven't yet been confirmed as part of the specifications, and are intended solely as a short-term measure. However, a combination of WebKit not dropping support for proprietary prefixes and some advocates teaching that they should be used (often neglecting to mention one should always include a range of prefixes and cascade to the vanilla property) has left a mess that's led to the new 'solution'.

Standards advocates were quick to react against the news, in broadly negative fashion. Articles appeared from Opera web evangelist Bruce Lawson, developer Remy Sharp, Mozilla developer evangelist Christian Heilmann, developer Lea Verou, WaSP member Rachel Andrew, Adaptive Web Design author Aaron Gustafson, and W3C CSS Working Group co-chair Daniel Glazman, whose post was framed as a call to action. Additionally, Pre-fix the web has asked people to find WebKit-only Github projects, fork and fix them.

Vendors at fault

Sharp told .net that WebKit could be considered the biggest culprit: "It doesn't drop support for prefixes once relevant properties are full-baked, and the result is hurting the industry to the point of us standing on the edge of insanity and seriously considering – or even already – implementing -webkit- support in the specifications." But the possibility of simply dropping prefixes isn't possible either, according to author, teacher and open web evangelist Molly E. Holzschlag: "They ideally prepend a property specified but not necessarily fully implemented. This allows for testing and also a form of progressive enhancement."

However, Holzschlag also lays some blame on vendors "not sticking to existing or proposed properties and making up their own, and not dropping the prefix on supported features when they are interoperable". Like Sharp, she argues WebKit has been especially troublesome in this regard, "to the point where developers are using only webkit-prefixed CSS, limiting that CSS to WebKit-only browsers such as Chrome, Safari, and iOS apps," thereby causing "a significant fragmentation point in the struggle to maintain an open web, as it forces vendor lock-in as well as developer lock-in, going against the power and vision that has always been at the web's heart".

Glazman suggested a solution could be: "[If] the CSS parser encounters a prefixed property for another browser, honour that property as if it were prefixed for us unless an unprefixed or prefixed for us valid declaration for that property was already set". Lawson says since browsers won't drop support for prefixes en masse "Daniel's solution makes the best of a bad situation," while Holzschlag thought it a stop-gap solution "it's better than trying to sniff by user agent strings and sending the WebKit stuff only to WebKit – that encourages fragmentation, whereas Daniel's solution would allow us to bypass that".

A wider problem

Holzschlag added that Glazman's solution also "still doesn't solve the inherent problem of the misunderstanding, misuse and misappropriation of prefix features," something mentioned by Sharp in his feature, when he says vendors aren't the only guilty parties in this standards trainwreck – he calls out Apple,Chrome, Firefox, Opera, Internet Explorer, the CSS Working Group, evangelists and developers.

Opera developer relations manager Chris Mills told us he had sympathy for this viewpoint: "People who already live by good practice will listen, but the ones who don't care won't be swayed. Really, it's a good thing that we can use features before they are officially finished. If not, we would be hanging around for ages waiting for them, ad nausea. But the trouble is that people are not as responsible as they could be, designing for their favourite browser/rendering engine rather than for the web."

He told us that anyone arguing it's too much trouble to work with more than a single prefix is talking rubbish. "I think Remy Sharp has it right when he says it is not just the developer's fault. We all need to take responsibility and help each other. Browsers need to drop prefixes as soon as possible, the W3C needs to be more prudent in getting specs to recommendation stage to facilitate this, and developers need to think about the bigger picture more. Also, people like myself need to educate people more effectively on why -webkit- only is wrong, and ways to deal with it in your code more effectively to minimise the pain. Furthermore, we need to get over more effectively the idea that it is an ideal. 100 per cent cross-browser support is not a mandatory expectation for every web project."