Mozilla Web Development

On Prefixing And Monobrowser Culture

I’ll say right off the bat that Daniel Glazman is right, and I fully support his message. The failure to alter the course of the web now will lead to headaches. Truthfully it’s already a headache, it’s just going to get worse. The IE Days were the dark ages of web development. I don’t want to go back to that.

In an ideal world, CSS prefixing wouldn’t be necessary. Browser vendors would spec things out, agree on a standard and implement it. That however is too rational, so CSS prefixing is an unfortunate reality. It outright won’t happen by the admission of Microsoft and Apple (pointed out by bz):

tantek (Mozilla): I think if you’re working on open standards, you should propose
your features before you implement them and discuss that here.
smfr (Apple): We can’t do that.
sylvaing (Microsoft): We can’t do that either.

Of course you can question if there’s really a legitimate need to work on standards in private. I’m personally skeptical a CSS property will leak the next iPhone.

It’s also worth noting Apple and Microsoft are both OS vendors and (cynically speaking) have interests that are explicitly contrary to the internet being a universal platform. Fragmenting the web and making it a more difficult platform to develop on is potentially in their interest. Not to different from their stance on h.264 of whom they are both licensors and thus haven’t implemented WebM.

I’m starting to second guess the permanence of prefixes. I personally think once there’s a standard the first release of a browser 12 months after standardization drops support for the prefix. Yes, this will break a few websites that never update. However it’s almost always an easy fix. I’d venture 95%+ of the time it could be done safely via a regex. Truth is you’re talking about 18-24 months from initial implementation in practice anyway. Possibly longer. A website that is so stale it can’t manage to deal with this in 1.5-2 years is in pretty poor shape to begin with. LESS and Sass can also be a big help in automating this. W3C CSS Validator already errors on prefixes. The tools to deal with this are in place today.

I should note dropping is unlikely to happen and thus wishful thinking.

A large part of this issue is how many websites are built these days, especially “mobile sites” which are typically separate sites bolted onto an API or even the backend database of a website. Often built by 3rd party vendors getting things passable and out the door is key. As a result every shortcut in the book is taken, including the absolute minimum in testing and compatibility.

For what it’s worth, this blog has only one prefix in use, and it’s coded as:

-moz-border-radius: 3px;
-khtml-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;

Which catches everyone. That takes all of 30 seconds at most to do.

7 replies on “On Prefixing And Monobrowser Culture”

Out of curiosity, how many of those “border-radius” prefixes are actually needed if you assume the latest released versions for all browsers?

At least Opera drops the prefixes quite fast. In case Mozilla is against this prefix mission, why do we still need -moz-border-radius: 3px; instead of border-radius: 3px;?

It took ages until Mozilla dropped the opacity prefix.

IMHO Mozilla does not behave different then MS or Apple at the moment.

Of course Mozilla behaves differently from Apple. We implement prefixed features, we propose those features for standardization, and we help edit those proposals until they’re real standards. We pay many people to spend much or all of their time on standards work. Apple does a lot of implementing, less standarization, and very little editing, at least for CSS/HTML.

Also, we do drop support for prefixed stuff. Webkit never does, as a matter of policy. That is indeed a large difference.

> Also, we do drop support for prefixed stuff. Webkit never does, as a matter of policy. That is indeed a large difference.

Maybe you can give me some examples where you dropped the prefix and Webkit didn’t.

Can we get testsuites like to punish browsers for properties that shouldn’t be prefixed anymore? 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *