There's an interesting discussion going on in Bertrand's Weblog about browser standards and whether they are helping or hurting us in terms of progress in the Web Development world.

 

This is a topic I've touched on a few times, and it's something that really gets to me, because if you really think about the state of the HTML Web platform is indeed in a pretty sorry state. The 'platform' from a presentation layer perspective is in near stasis.

 

Aha, now I got your attention. <g> Bertrand's inciting point was to try and consolidate the need for standards and the need to move forward and provide new functionality. The HTML platform – the HTML DOM, CSS and  JavaScript – really have been in dead in the water for 5 or more years. If you look at the standards, things have moved on slightly by incremental version numbers and some improvements such as XHTML and CSS 3 that supposedly bring more standardization. They do bring better standardization and small incremental design and layout changes, but these are more abstract changes than really practical enhancements.

 

If you look at this from a perspective of functional enhancements– nothing has changed in a loooooooooong time. It's a shame that HTML can't evolve at least a little bit to support better display controls. Why for example, isn’t there a richer list control that can handle multiple columns like say a ListView? Or a treeview?  

 

Built into the DOM. Sure you can hack one together in HTML format, but why should you have to? Instead you and me as developers or a third party vendor or even a Browser vendor has to build something like this in a non-standard. semi-proprietary way. Over and over and over again we go and re-invent the wheel.

 

And it's not like improvements in the control model would break existing functionality – this could be a controlled and backwards compatible mechanism of enhancing the platform without breaking existing HTML code. Building this sort of functionality from the browser vendor's point of view can't be difficult either. Any reasonable OS includes this sort of functionality already, so building the controls is primarily a wrapping exercise especially since the control hosting is already there.

 

So what controls do you think we keep inventing over and over again: Here are a few I can think of: ListView, TreeView, Html Editing, Date Time selection (ok I can see that as being very personal), Tab Control, Menus. Html Editing. How about a standard model to host HTML inside of the page a la the non-standard Xml Islands? I'm sure many of you can think of more.

 

It's interesting that Mozilla has actually taken a step in the unifying direction and AWAY from standards by going out and supporting some useful IE standards like XmlHttp, which brought on the whole AJAX hype we're seeing now. This is promising, if we could just the rest of the browser vendors and especially Microsoft make some effort on part of consolidation. For Microsoft step one would be to provide much better CSS compliance out of the box. IE 7 does some but it doesn't go nearly far enough.

 

The HTML platform is made up of HTML DOM, CSS and JavaScript. Of the three JavaScript is actually the most stable and workable piece of the puzzle. It works fairly consistently across most browser platforms and although it's a very hacky language, you can get just about everything done with it. It's workable. Still it sure would be nice if the OO features were a little better organized than the funky function as an object prototype syntax that's oh so unnatural.

 

On the other end is CSS implementation, which is fairly out of whack between the various vendors. This isn't really about finger pointing about who's right and who's wrong. At the end of the day most vendors are not following the standards on many things or interpreting the standards in uh, non-standard ways. We've surely all done this: You work on a piece of code in browser and then you go back to another browser and find the behavior is completely different. And usually it turns out that both browsers are not doing the right thing as per spec but interpret somewhere in the middle.

 

The first thing that should happen is that all vendors should implement a common set of default values as specified per spec. So many of the formatting options start with different defaults that it's often difficult to get consistent designs without setting every possible obscure CSS style to get a consistent default. It shouldn't be this difficult.

 

The DOM is similar. Implementations of unit measuring, the containership model works differently with many browsers and it's probably the one thing I spent most of my wasted time on.

 

From a developer perspective this is really disastrous. The worst part about it is that it's really difficult to figure out what does and doesn't work and realistically the only solution to this mess is a framework that abstracts many common things. A big framework, a framework you have to learn to use etc. In short, reinvent what the browser/DOM is already supposed to be: a Framework.

 

There's no doubt that creating a conformant browser is no trivial task, I'm pretty sure that the browser vendors easily have the resources to make true compliance and a possible review happen without too much hardship.

 

But the first step is getting the browser vendors to agree and make some effort to come to a baseline. It seems to me that it would be in everybody's best interest to have compliant browsers. Although I don't think this will ever happen, all the browser vendors should get together and look at the models and come up with standard rules for the functionality and consolidate it.

 

Changes are not as big an issue as they once were
And where consolidation isn't possible add new functionality. There's always that option. Things have changed a lot since the early days of the Web when old versions of browsers where a humongous issue. Nowadays, with fast connections and the ability to update software quickly and easily over the Web browsers are much more up to date than they once were in the general population of Web browsers.

 

So if some new enhancements come down the pike chances are older browsers would be crowded much more quickly than they once were.

 

Here are a few off the wall ideas to maybe incite some action on part of the browser vendors:

 

Egg On the Face Syndrome

Let's have the same folks that come up with the standards provide some more official mechanism of browser testing or a sort of certification of browser compatibility testing.

 

Better yet, have the results of testing publicly and very visibly posted so it's easy to point to. This would provide two benefits – a way to see potential differences in browsers, as well putting a bad face on the vendor who's 'breaking the rules'.

 

Microsoft – a change about coming?

Then there's Microsoft. Ah yes, the lazy contender at the top of the heap resting on its laurels. But that may finally be changing. While Microsoft is eager to move on and get people to use and be jazzed about Windows Presentation Framework, it's pretty clear Microsoft is not willing to bet the farm on that alone. All the recent announcements about Windows Live seem to point at a renewed interest at Microsoft to provide some leading edge technology in the Web space. Given that Microsoft developers have to fight the same battle everybody else battles in creating usable and interactive HTML interfaces, maybe somebody will realize that it makes sense to provide a) a more stanards compliant browser and b) drive some innovation.

 

For Microsoft and all the other vendors innovation is a chicken and egg situation. If they innovate there's a good chance that either the innovations are looked upon as 'proprietary' and will be shunned, or if there's actual virtue there, they get picked up in the standards process and twisted around into something else.

 

But if everybody looks at standards as the only solution and nobody bothers to innovate in any direction nothing ever happens and we can continue on this path of brain dead Web applications that require developers or tool vendors to keep reinventing the wheel in completely non-standard ways.

 

You might recall that it is possible to get competing vendors to drive standards forward. Remember SOAP in the early days, when Microsoft and IBM and a handful of other smaller companies had this idea that remote communication required a standard protocol. Gee what a concept, but it brought together disparate parties and within a relatively short time standards got hammered out. Standards that were actually workable and even more surprisingly universally adopted.

 

Now I would argue that HTML based standards affect a heck of a lot more people than Web Service standards, so why is there so little interest in moving these standards forward???

 

These browser vendors all need a good kick in the ass. Adding tabs to the browser isn't my idea of innovation <g>…