Why "no vendor prefixes" is good

A few months ago I started playing with WebRTC and getUserMedia. At that point it just worked on Chrome, but since it was an experiment, that was fine, I thought. Later, support for WebRTC was added to Firefox and I was supereager to test my experiment there... but then I found out that I had to manually enable the flag in my settings! What? The idea was simple: once I enabled the feature, it would be available, and without having to use prefixes! Wasn't it nice? Well, yes, but it just stroke me as counterintuitive and generally going backwards with regards to web development. How were we going to get widespread adoption of new features if they had to be manually enabled in each browser? That just seemed silly!

But then I put my complaints to rest and went on with my life... And casually I was just reading this article on Blink by the mighty PPK, and suddenly everything made sense: vendor prefixes are not good because they create fragmentation. Bad fragmentation, at that. They create the sort of situation that Henri Sivonen warned us about a year ago, where people eager to use new and shiny features start writing code with such prefixes because their favourite browser implements them, and don't care that it doesn't work in other browsers. This is bad for everyone: users and developers.

And now I'm going to experience it myself since most of my experiments using "cutting edge, incredibly mind-blowing tech" do use vendor prefixes and I'll have to manually update each one of them in order to make them work without unprefixed stuff.

But if the features had been available, unprefixed, since the very beginning, I would have developed them while running a manually-enabled feature, not using prefixes, and they would now work in any browser that implemented them, without me having to lift a finger.

I erred, but that's OK--erring is learning. So now that I finally understand this, I'm really delighted to hear that Blink will follow Mozilla's example and won't introduce any more prefixed stuff (plus will remove existing prefixed features in the future).

There's still a remaining issue and that is the adoption rate: how fast can we get users to try out something that uses experimental technology? But with nowadays ~6 weeks release cycles and (almost) automatic updates I think we shouldn't worry about that anymore.

Seems like the future is shaping up nicely!