Screwed

Web standards promised that we could develop once, deploy everywhere. I can’t help but wonder about that premise after reading @bradfrost’s post, Device Fatigue.

I believe in web standards. I have spent a good part of my last decade working to write standards-based code that validates.

But if we have to test sites on hundreds of devices, it’s hard to argue that web apps are better than native apps because they just need to be developed once to be available everywhere.

Sure, in theory a web app can function on any device. But why test if we aren’t going to deploy changes based on those tests?

I also believe in progressive enhancement. Start with the basics, and use CSS and JS to enhance the design and behavior of the site for those who can take advantage it.

It just makes me sad thinking about how ten years of work on web standards means that we have more testing to do than ever.

The problem is that our definition of a standard differs from most other types of standards. When there’s a standard for screw sizes, manufacturers build screws that meet those standards as well as holes that can be screwed in a standard way, and consumers can buy screws that fit in those holes every time.

On the other hand, the way web standards work is screwed up.

We have an inbalance on the web. Our standards are just guidelines. Somehow, web developers are supposed to take the time to follow standards, but browser manufacturers? Heck, they can put out whatever kind of cruddy browser they like, and developers are just supposed to go test their designs against hundreds of devices. Bugs in browsers? That’s something developers have to work around.

If web standards worked well, then browsers would display web pages based on standards, developers would write code that meets standards (knowing it would display the same everywhere), and users could pick the browser they liked best, based on UI, processing speed, etc., knowing that their favorite sites would work the same no matter which browser they picked.

That’s not how things work with standards today. While there is a lot more convergence between deskop browsers than a decade ago, Brad Frost is testing hundreds of mobile device browsers. That’s just nuts.

The lack of balance in the web standards process is all too clear in how standards are developed in the first place. Because of the slow progress of the W3C, the browsers put the development of standards in the hands of a benevolent dictator, Hixie, who works for one of the browser manufacturers. If the browser makers don’t want to make something happen, tough. Developers don’t like something? Or users? Well, if Hixie deliberately tries not to understand your point, you’re arguing against a brick wall. Screwed.

That’s why the picture element gives me such hope. Developers are actually working together to make their concerns known, and the W3C is listening.

Standards are a three-legged stool: browsers, developers and users. We’ve been told for years that while all three legs supposedly matter, one leg has the final say.

Maybe that can change.

Today, if one browser says, hey, I know the standard says this, but I can’t be bothered about that right now, we all jump. We all scramble. We rush out to test our sites on this browser. That browser. This device. That device. A dozen devices. A hundred devices. And then we try to figure out what to do next. How to best handle all the discrepancies, small and large

I dream of a day where web standards work as they should. Where if a browser screws up in how they display a site, it’s just as much their duty to fix the issue as it is developers.

Until then, we developers slog on, testing as we go, because we care that users have a good experience. Because we know it’s not their fault. They don’t understand that a browser screwed up. They just want their favorite site to work.

And so we continue, our patience quite literally tested, hoping that progressive enhancement and responsive design helps us meet the challenge, with the hope that one day our web standards won’t leave developers so screwed.


Update: Brad passed on an article from Lyza Gardner that does a great job of addressing this: Laying Down our Burdens: Steps towards simplifying the mobile Web. The short version: we need to learn to let go of control, and if browsers don’t handle a particular feature, keep calm and trust that progressive enhancement will still offer a functional, if not as fancy, solution. Spot on. The more we can do of that, the more we ensure the three-legged stool is more balanced.