stumblelog
On Opera & Vendor Prefixes
Reacting to Opera’s announcement that their latest experimental builds of their browser software would be spoofing certain -webkit vendor prefixes, I somewhat antagonistically vented on Twitter:
Hey Opera: nobody uses your crappy browser. Thanks for dicking over the web by implementing -webkit prefixes anyway.
Okay, the first part is most certainly not true; a lot of people use Opera (and as it happens, they have just published their State of the Mobile Web report for March 2012, so we can see what the data looks like right now). But whilst what I wrote was undoubtedly confrontational, having now looked some more into the situation I’m convinced that Opera have made a terrible decision out of desperation that will permanently damage web standards for little gain.
Opera is actively involved in the development of two mobile-oriented browsers: the enormously popular but atypical Opera Mini which mostly runs on older and non-smartphone devices, and the more modern smartphone-oriented Opera Mobile. When I asked, I was told that separate figures for how many people use each browser are unavailable. Given how eager Opera are to boast about how many Opera Mini users they have, it’s pretty easy to conclude that the number of Opera Mobile users is a lot smaller. This is significant, as a major justification given for spoofing vendor prefixes is that it affects a lot of people; Opera currently only intend to make the change within Opera Desktop and Mobile.
Opera have tried to throw a feint by insinuating that this is to prevent their users from being locked out:
When people block access by certain browsers, whether by omitting CSS rules or actively blocking, we have a duty to our users to access that content.
This is an egregious straw man: the prefixes Opera are implementing are limited to transitions, transforms, border radius and box shadows. None of these are barriers to being able to access content; this is just how progressive enhancement works.
As it stands today, Opera Software is a profitable and growing business, as their latest quarterly report attests (PDF link). But this masks the underlying sea change that’s happening with mobile Internet-enabled devices. Opera (along with Mozilla and Microsoft, the other parties intending to make this vendor prefix change) know full well that they’re sitting on sand castles as the tide comes in. An increasingly large number of the mobile phone devices sold today are either iOS or Android-based, and as the technology matures and economies of scale improve, the share of the market that once belonged to feature phones will be swallowed up by cheaper iOS or Android devices.
Experienced web developers know that encouraging customers to install another browser is a difficult if not impossible task. It’s even less likely that smartphone users will feel any need to install a third-party browser on their device when the default browser is easily good enough to begin with. Opera are faced with the knowledge that within a few short years, their user base could be eroded to almost nothing. This move is reflective of this realisation, and is one made out of desperation, with little concern for the long term implications to web developers and the standards process.
Vendor prefixes are, to be sure, a mess. But the situation we find ourselves in is not the fault of vendors implementing features this way, but of the glacial pace of the CSS Working Group in ratifying features that are already in widespread use. That another browser vendor feels able to spoof them shows the feature is already mature. The danger now is that ‘bad’ web developers will treat -webkit as more than just a de facto standard, and the march towards a single dominant browser in the mobile space will gather pace.
Some advice for the Mozilla Corporation
Forget vendor prefixes; that’s like trying to apply the leeches; you’re doing the patient harm, and it’s not going to cure the problem. There will always be a web. So, if you want your software to remain relevant in the post-PC economy, your software needs to be on the devices that people use to browse the web. And if you are really serious about software, you should make your own hardware.
The W3C’s WebKit Problem
Once again we’re at a crossroads with the Open Web, with the not-so-hollow threat from browser makers that are not Apple or Google to implement the -webkit prefix for CSS extensions. WebKit has long led the field for CSS extensions, implementing features such as text-shadow as far back as 2003, but the browser landscape has radically altered since the introduction of the iPhone. CSS features once considered idealistic have rapidly become a standard part of the web developer toolkit. The transformative effects of this new era of mobile computing are still being felt, and we’ve yet to see just how the dust will settle, with major players such as Nokia and Microsoft yet to find their footing. What is for certain though is that they won’t give up without a fight.
I find it shocking that this incredibly strong business driver has yet to be recognised as the rationale behind this threat. Microsoft, Mozilla and Opera have all yet to properly assert themselves in the new mobile web economy, and all three are at massive risk of being left behind. The fact that Opera is a major player on a massive number of existing devices is next to irrelevant when you consider just how quickly phones are replaced in comparison to desktop computers. Mozilla also faces strong competition; for years the darling of open web advocates, Firefox has long had a reputation for being a slow, memory hog, but recently many in the technology community are finally switching to Chrome. When your previously biggest advocates are turning their back on you, it doesn’t bode well for how the more fickle majority will act.
Then there’s Microsoft. As I wrote two years ago, Microsoft needed to embrace the open web or risk irrelevance. To my surprise (but a pleasant surprise), this is exactly what they’ve done, and with Windows 8 they’re forging a path away from Silverlight and towards a new era of apps built for touch devices upon open web technologies. But it’s quite possible this is too little, too late. The iPad is utterly crushing the competition in the tablet market, and by the time Windows 8 is in the hands of consumers on a tablet device, the marketplace may have already decided that all they want is iPads. In turn, developers will be basing their technology decisions upon this. Finding no alternative, they will turn to the -webkit CSS extension wherever they want to make use of modern CSS features.
Which brings us back to the W3C. That there is no other choice but to use vendor prefixes in spite of the fact these target mature and reliable technologies is a massive indictment of the W3C’s CSS working group. These should be features by now. If there is still debate over syntax, that the development community uses them anyway should be a big pointer as to whether or not that’s an important debate (and before you assume this means that the -webkit syntax will always win, there are numerous examples of syntaxes that WebKit introduced that have been superceded; -webkit-gradient immediately springs to mind). Pointing the finger at the people who build websites when they have no reasonable alternative (other than to just not use the features!) is the worst kind of passing the buck, but when the remit of a working group is to be apolitical it’s too easy not to recognise when you’re being gamed. And that’s precisely what’s happening right now.
So, what needs to happen? Do authors need to change? Well, browser sniffing was always bad; good developers have known this for over a decade, and so a call to action on this is preaching to the crowd. Using all available vendor prefixes for a given feature is naturally better than only -webkit, but there are certain situations when it’s not desirable (although I doubt that’s why they’re absent in the majority of cases). But really what needs to happen now is for the popular attributes to be pushed through to proposed recommendation as soon as possible. Give developers a reason to use something other than -webkit. If you build it, they will come.
Spinner animation using CSS3 transitions
For those browsers that now support it (read: recent Firefox versions, Safari 5 and iOS 5 Mobile Safari) you can now use steps(x,y) as your transition-timing-function, permitting the creation of sprite frame-based animations. This example doesn’t even need that, as it just rotates the same image by 30° each frame.
Serve a static website on an arbitrary local domain under Mac OS with Pow
curl get.pow.cx | sh ; mkdir ~/Sites/foo ; mkdir ~/Sites/foo/public ; echo '<h1>hello world</h1>' > ~/Sites/foo/public/index.html ; ln -s ~/Sites/foo ~/.pow/foo ; curl http://foo.dev/
No need for a config.ru, just symlink it and you’re away.
Without Apple, I quite simply wouldn’t be the person I am today. I grew up with computers, but I only used them to play games (and very occasionally write letters) until I used a Mac. It was on a Mac I was first inspired to be creative and build things using computers. I designed magazine pages. I drew icons. I wrote my first software program on a Mac, and set in motion the wheels of my future career, and it was on a Mac I designed and built my first website.
Steve Jobs has died, but his vision and drive live on through millions of people like myself, who were captivated and inspired by the products that he and the many other brilliant people at Apple created. The world is a richer, better place for him having been in it. Whilst our first thoughts whenever we lose somebody may be of how much emptier life suddenly feels without them, the impact they’ve had on us all is still with us, and always will be.
Thank you, Steve.


