The World-Wide Web is officially 25 years old... and it is in crisis.

You may not have noticed this, but the web as we know it is rapidly spinning out of control. And I don't mean the problems with net-neutrality, privacy fears and big data, walled gardens or even that apps may replace websites. All those are potential dangers as well.

I mean the technology implemented in your web browser is in crisis.

The last year has seen Opera switching to Webkit, because they couldn't keep up building their own browser technology. Firefox decided not to implement a browser for the Metro interface, since they couldn't spare the resources. Chrome forked Webkit, so that they could get rid of all kinds of Safari specific stuff. 

So we lost Opera, but we got another version of Webkit by Chrome. This means that there is enough competition left in the browser arena, doesn't it?

Perhaps. But there are signs that the current incarnation of the browser wars will have some more casualties in the not too distant future. And they may be us, lowly web developers.

There are now four major browsers: Chrome, Safari, Firefox and Internet Explorer, right? Wrong.

In fact there are at least these: Internet Explorer 8, 9, 11; Chrome for Windows, for Linux and for Android; Chromium; the Android 'Browser'; Safari for Mac OS, for iOS6 and iOS7; FireFox for Windows, Mac OS and Android. Then there are numerous lesser known browsers, like the Blackberry browser or the Baidu browser. If you are interested, here is a full list of browsers, on wikipedia of course. And I haven't even started with older versions of Android, which are still used in many, usually cheaper, tablets and phones. Or for that matter the wonderful browsers included in many 'smart' TV's.

Even if you do not have to support most of the list of browsers here, the latest round of the browser wars has started a new phenomenon: automatic browser updates. All major browser brands now offer automatic and often involuntary browser upgrades. So what you tested only a month ago, may suddenly no longer work in the latest browser versions. Your clients aren't aware they changed anything, so the blame is clearly yours.

But browsers wouldn't push incompatible updates, you say? Well think again. Microsoft, who is the most frugal with updates, recently pushed IE11 as an automatic update for IE10. In this latest and greatest release, they removed a microsoft-only feature called 'conditional comments'. IE10 aready deprecated it, by only using it in 'emulation mode'. This means that IE10 emulated an older version of IE, for those sites that used IE specific features. So not much of a problem, right? Except that almost al websites and applications had to use IE-only features up to not so very long ago, simply to make things work. Now suddenly, applications and sites that worked for years stopped working in IE11. 

Microsoft may have thought that IE11 was now fully standards compliant and therefor didn't need the old IE-only ways anymore. Except the standards today are far from what any sane person would call standard. In my case I needed a browser-sniff for IE, since IE is the only browser out of the main four, that has no support for live video streams. Unless you install an extra codec pack in Windows, that is. I should have used feature-detection, I hear you say. You are probably right. However, this is one of those features not trivially feature-detected. I'm working on it now though...

But there are many more examples of browser updates breaking websites and web applications. Firefox used to be the star of this. Whenever a new realization about the correct way to implement a feature would occur to these brave developers, they wasted no time in updating their code. To make it more correct, you see. I've wasted many hours on changing code to work with the new correct implementation of Firefox. 

These days Chrome is the new contender. But not because it changes browser behaviour to be more correct, but because it changes it to be more pretty.  Bugs be damned. Just last fall many Windows Chrome users were complaining of bugs in our web applications and websites. Chrome would regularly freeze and give warnings about slow scripts running in all your tabs. The problem was easily found... in the new pretty scrollbars Chrome now used instead of the windows version. You could change the color, the width, borders, etc. No doubt a very necessary feature. And well tested. In fact, it was so well tested by many who used the Chrome Canary browser - the beta testbed - that months before the release this bug was already mentioned - often - to Google. It still shipped and many millions of users suffered another few months before it was fixed.

I don't think this was deliberate by Google, but the reason behind it is. Google is concerned with giving users the best possible user experience and if it has too trample over a few developers in the proces, that isn't seen as a problem.

A final example of this behaviour is in the workings of the 'contenteditable' feature of modern browsers. This feature is copied from the much maligned Internet Explorer 6 ( or even 5.5, I'm not sure) and has made it into the new HTML 5 'standard' by the What-WG, even though they clearly didn't understand the concept. Since so many people were using it, it must be important so lets include it. I'm glad they did, even though as a standard or specification it really sucks. At least there is something there. But Google decided that the user experience wasn't good enough. Especially when pasting content from a website into, say an email in gmail, the markup would be pasted, but not the styling of that markup. Clearly a shame. So they decided that the default copy/paste behaviour would be to read all the applied styling from any CSS source and copy it inline on each affected element

This is so utterly incompetent that I cannot understand how a company like Google decided on this. I mean, Microsoft got a lot of flak because of the crazy stuff that got pasted in when you copied someting from a Word document. But this is much worse, you copy something which has a sensible HTML markup and Chrome turns it into unusable garbage. 

This is just one instance of browser makers messing up with contenteditable, Chrome has many more and I already mentioned Microsoft here, who originally authored this feature. Safari too has many ways in which it messes up html content in a contenteditable region. It is so bad that most WYSIWYG HTML editors that use contenteditable devote a large part of their codebase in trying to undo or cleanup the mess that browsers make of this stuff.

So what is the root cause of this? I cannot be sure, but it seems to me that the current crop of browser developers have a focus on out-building the competition by adding more and more features into the browser. This is partly because there are so many standards to implement that building a browser these days is of similar, if not larger, proportion than building an Operating System. But while OS designers have long ago gotten a handle on how to design and build such large and complex systems, it seems that browser builders are still trying to cram everything in one monolithic monstrosity. To be fair, the way the standards are written makes it extremely difficult to build a real modular and maintainable system. The CSS standard alone is so large and unwieldy that I don't think there is one web developer out there who really knows the entire thing. Let alone that you could implement a rendering engine for it that would implement all of it correctly.

So the standards are too large and there are too many of them. Browser builders have no experience designing software of such large scope. Except perhaps Microsoft. In fact over the last two years the only browser that keeps getting better, in the level of implementation of the standard as well as the quality of its implementation, is Internet Explorer. If things keep going the way they are going now, Microsoft may well be the winner of the current browser wars, just as they were the winner of the last one. But will we be better of if they win?

blog comments powered by Disqus