Did standards sterilize or enrich the web?

I know, I know, it is not very nice even to ask this question, especially coming from a Microsoftee. But really, I'd like to know what you think. We have had many discussions on this subject in the team and many of us have very sharply defined opinions one way or another.

On the one hand, standards have enabled the adoption of some innovations by all important browsers so that you can actually use them and not limit your audience to users of a specific browser, without having to write the same application three times.

On the other hand, it is impossible for a web developer to use a new browser innovation because it needs first to be standardized, adopted, implemented by all and the implementations need to be installed by a majority of users. It usually takes about five years. That's why we have the Ajax boom only now whereas the technology has been available for a very long time.

Of course, standards are not really responsible for that. But there's worse: any browser innovation is likely to be severly criticized as not being standard. There's a chicken and egg problem here that's not trivial to solve.

Furthermore, if you look at some of the nicest things in Ajax applications, they are not part of any widely adopted standard. I'm thinking in particular about things like XmlHttp and online HTML editing for which standards may have been drafted but were not adopted: the browsers agreed on the APIs in the absence of standards.

So honestly, what do you think? Any bright ideas on how to have both standards and innovation in the Web browser space?

Update: some answers to your comments (by the way, thanks for their excellent quality)...

Michel, who was first to comment, pretty well sums it up.

Joakim made the very interesting point of accessibility. This is right on point. That's an area where the standard is absolutely necessary, but it falls short on a few things.
First, many web developers, if they know/care about the norm at all, tend to mark all the checkboxes and consider to be done. That's unfortunately not enough and experimentation is key to having a truly accessible site. Of course, that's a very expensive process.
Second, until very recently, browser support for essential accessibility features such as accessKey, tabIndex and focusability on all elements has been limited to IE (which has supported it for years). Firefox implemented it in 1.5 thanks to some code donated by IBM and I think Safari and Opera are still lagging behind on this (correct me if I'm wrong here). Screen readers are pretty much limited to Windows/IE.
I'm not even talking about JavaScript not being considered accessible: it does in fact create accessibility scenarios that would be impossible without it so that's a standard requirement that's safe to ignore if done properly, but you won't get to check that checkbox.
In Atlas, accessibility is a key goal. For example, if you set the tabIndex on a listView, it immediately becomes keyboard-accessible: you can tab to it, use arrow keys to navigate between items, select using the keyboard, etc. As we go, we're going to bake more out-of-the-box accessibility features into the controls. This is I think a great example of JavaScript enabling better accessibility.

Wesley comments about not implementing existing standards and about filters nicely extending them. Of course when the standard exists it should be implemented. Now there are quite a few cases where the implementation actually predates the standard and the standard deliberately decides to do things differently from the existing implementation. That's fine if there is a good reason and that's usually the case, but what is the existing implementation supposed to do? They can't break their existing customers (well, they can: it seems sometimes like Microsoft is the only software company to care about that of course this is not true but it's definitely not a nice thing to do and something your users will hate you for), so they need to have a standard mode based on doctype (which may have future breaking changes) and a quirks mode that focuses on backwards compatibility, which is *exactly* what both IE and Firefox did.
Now about filters. That is a *great* example of something extremely useful, entirely optional in the sense that if the browser doesn't know how to handle it it's fine to ignore and absolutely non-standard. The cursor style is another example. So everything looks nice and that's an innovation everybody should be happy about. Except that if you use this style and have the javascipt console open in Firefox (maybe strict mode is also necessary to see that), you'll see that it considers any non-standard CSS attribute as an error. Yes, as en error, not even a warning. Google's home page throws errors in the console because of that. So that's clearly a case of yeah, sure, standards, ok, but let's just not go crazy about restricting possible things to what the standard defined. There must always be an extensibility path. XHTML is great at that.

Steve makes the point that browser developers should work closer together, be it inside or outside standards bodies. Yep. It seems like this is starting to happen. He also asks what happened to JavaScript 2.0. Oh yes, I would also like to know. It would make our lives so much easier (in five years).

Joe gets constructive and proposes that vendors take on the task of providing better documentation for standards. That is a very good point: the W3C documentation is just horrible. But of course, this is due to their not being written to be reference documentation for Web developers. They were written to be a reference specification for browser implementers. There definitely is a need for a standard reference documentation for Web developers (yes, there are some efforts to do that here and there but nothing really comprehensive). Maybe that should even be a joint effort from browser vendors.

Stan: it's a little sad that you would think that we don't know/care/understand about web standards. I especially liked this sentence in your post: "If you understood CSS and Style Sheets and some of the unbelievable things that you can do once you understand what a selector is I think that your view of standards would change". It is really symptomatic that you would assume that we don't.
You raise very specific point so let me answer them.
Where did you see that our navigation controls do not have their scripts in separate js files? Menu and TreeView both have their logic encapsulated into their own files. The only javascript that we emit on the page is instance specific and thus can't be isolated into a separate file.
I'm with you on inline styles. This is a legacy of the time when not all browsers supported CSS. We now recommend that people use CssClass on their styles instead whenever possible. Visual Studio will make that a much more natural first choice in the Orcas timeframe.
On table tags, we've debated that a lot and it was just not possible to get consistent rendering across all supported browsers without them. I'm actually implementing a simpler menu control on my personal time (which is not a lot of time) that's based on list items, css and JavaScript. The thing is this does not conform to the same constraints as the ASP.NET menu. For example, it won't ensure consistent rendering across browsers, it will look funny out-of-the-box until you style it, the list goes on. My point is, that will certainly be a useful control, but it definitely is a different control and not the one we chose to implement, I think for good reasons.
It sure is really easy to implement a simple pure HTML+CSS menu. Now you tell me how to do the following with pure HTML+CSS and no JavaScript:
- delay the disappearance of a menu
- position the popouts so that they are always on the visible part of the page, including positioning it on the left or on the right of the previous one depending on the available space and the size of the new menu
- size the popouts so that they always fit in the visible part of the page and add scrollers if they don't
- keyboard accessibility (with arrow key navigation)
The list goes on. We did implement all that.
I agree that the master page ids are an annoyance but that is necessary as master pages are containers and we need to manage id collisions. That doesn't mean you can't put most of your javascript in a js file. You'll just need to initialize a data structure inline for your generic script to use, which should be a fairly small amount of script. I agree it's inconvenient and we're working on ways to make that simpler in Atlas.
The thing about the master page set in web.config not being handled well by the designer is a known limitation. It's one that I personally would have liked to see fixed in Whidbey but it was unfortunately cut. It's high on the list for Orcas.
Finally, the thing about XmlHttp is a little of a cheap shot. Let's put things in perspective here. XmlHttp was invented by Microsoft, which decided to implement it (way before anybody else) as an ActiveX control at a time when ActiveX was the big new thing. Several years later, Mozilla decides that it's not a bad idea and comes up with their own implementation (compatible at the API level, which is a nice gesture). They don't have ActiveX (good for them, yes) so they go for a built-in object. Cool. We can't recall all copies of IE and change the existing implementation, can we? So what we do instead is implement it also as a built-in object in IE7. What's wrong with that (except for the delay between IE6 and IE7)?
Update to this comment: Stan answers this and clarifies his initial comment. No hard feelings here but I think just an animated technical conversation.

Bob seems to be reasonably happy with IE. Wow!

Wilco makes the point that what we consider to be innovation on the web would hardly qualify as such in the desktop application space. Yup. I've had the occasion to say it before, if you can use truly rich client technology such as WPF, by all means do so. Ajax is about making the web better, not about making it better than your desktop.

Finally, I'd like to add a few things about other platforms that had different experiences with standards.
First, there's Java. In the Java world, which is a multi-vendor thing, a standard body is a necessary thing. Still, there is a fair amount of complaints in the community on how the whole JSR process is weighing on innovation and most of the innovation happens in open-source projects (again, correct me if I'm wrong on that: it's my perception). Some of that ends up in JSRs, some just die, some are never standardized but still live happily ever after.
Second, there's .NET. Being pretty much conceived as a single vendor thing, there was no absolute need for a standard. Microsoft decided to submit the essential parts of the framework to ISO and ECMA anyway, which enabled great innovations like Mono. But only the smallest working set is really standardized. It's working pretty well though and innovation is florishing.
And there's Flash. Until recently it's been a single-vendor, proprietary thing. Now that there's been some standardization and format opening, a lot of companies are innovating in this space (XAMLON is an amazing example).

Update 2: Rick has an excellent comment.

Update 3: Colin makes the point of standard extensibility, to which John answers that browser vendors should form comittees to decide which features to implement. While it looks like a good idea, there are several problems with that. First, isn't that exactly what the standards bodies are supposed to be? And second, doesn't that just prevent any form of competition between browsers? If they are all the same, why not just group our efforts and have a single browser? Wait, that would be a monopoly and would probably be even worse.

12 Comments

  • The answer is in your post.

    - With standards we don't have to write the same application several times => standards enrich the web.

    - There is an Ajax boom although Ajax is not a standard => standards don't sterilize the web.

    The fact that IE5/IE6 were much better than Netscape 4.x and that Netscape didn't improve sterilize the web.

    The fact that IE6 had been put in sleep until Firefox was much better sterilize the web.

    When standards (HTML, XHTML, CSS...) will be correctly implemented, we can say : that it's done. And then we can make still better things.

  • I think your asking the wrong question.



    If browsers fully support the standards... they can add as many extra's as they please! Nobody will be againts that! If browsers don't support the standards and bring in there own implementation and interpretation of standards... THAT'S a nasty thing. Two examples:



    1) The boxmodel: Microsofts IE 5(I believe) did some strange thing in not implementing the boxmodel in the correct way. This resulted in a messed-up website if I built my website according to the standards. So I had to built one website for IE and one for all the standards compliant browsers. That's a nasty thing!



    2) Filters: Microsofts IE has some very nice filter which can greatly enhance a javascript slideshow. This gives me the change to produce nice looking slideshows for IE and lesser looking slideshows for the other browsers by simply checking for the filter property. So this is a nice extra feature. (have a look at my site)



    To my opinion it's good to EXTEND the standards in order to grow to a higher level and to give a feed for new standards. Unfortunately it takes a long time for a feature to become a standard. That's more of a problem that's caused by the stadardization authorities and definately not by the browsers or developers. Developers would be more than please to have a standard for AJAX. As of right now the have to implement 15 hacks to make it work on every browser!



    And it's a very bad thing to simply not obey the standards.



    Cheers,

    Wes

  • Honestly? I think the teams of IE, Firefox, Netscape, Opera need to work closer together.



    As far as XmlHttp - Isn't IE the only 'odd man out' since it uses ActiveX whereas with Firefox/Netscape it is not an ActiveX control?



    I think you are better off to create good models for programming against the standards than to try to change the standards without all the members onboard.



    It creates a nightmare for developers who have to create public facing webpages for 3-4 different browser standards.



    Compliance and a common underlying browser model benefit the community.



    Does it mean some cool things are left out? Yes. ie. I would like to also learn XUL for Mozilla - but it seems a waste of my time since I'll never be able to use it.



    In summary of my opinion: if more work was done to to work together on standards with other browsers rather than just to try to extend their own, we'd be in a better place.



    by the way: What ever happened to Javascript 2.0 ?

  • I don't think the problem is new features - the problem is when there IS a standard on the implementation of a feature, this standard should be followed.



    Any browser innovations are, by definition, not anything other people have done before - so you would in reality be setting the standard.

  • Loose standards seem fine. But the current trend of "one size fits all" (ODF) is BS. There is a time and a place and a way to develop standards, ODF does not fit any of the criteria in my view. And I think strict aherence to standards in general stiffles innovation...especially in technology.



    I think a good example of something that has not always followed standards but has proved to be an exceptional value on the web is none other then good old IE. Yes...I mean that. I have used IE since 4.1 and despite its shortcomings, it has stood up very well. And it has been the same in every company I've worked for... where would AJAX be if IE had strictly adhered to the standard du jour?

  • Excellent feedback guys, thanks all! I expected some to fail to notice the tongue in cheek, provocative quality of the title and I wasn't disappointed ;)

    I also expected some interesting ideas and I got them too.

    I'm updating the post with the most interesting feedback and my own comments in a moment.

  • I totally agree with this being a chicken and egg problem. Sometimes it’s almost frustrating to see what kind of fancy things you can do on the desktop, especially with WPF (Windows Presentation Foundation). When I compare this to how the web seems to be evolving, it sometimes feels that web developers are stuck in the past. I see a lot of cool things going on in for example WPF ranging from a high level of flexibility/extensibility to interesting concepts such as timelines which enable you to do visually interesting things. On the web, we only just had a hype about incremental updates using “AJAX”.



    Ideally, the progress that we make on the desktop would be available on the web as well. It’s just much harder to push new technologies on the web, because people will generally avoid technologies that don’t work in the major browsers (even if it requires a download of some dependency). When people however target the desktop, they seem to care less about dependencies. Both the deployment options and (relatively often a specific) audience play an important role in this.



    To embrace innovations on the web, I think at least the companies behind the modern browsers need to work close(r) together to work on providing 'universal technologies'. As long as that’s not going to happen, we’ll probably have to wait endlessly for new technologies to see the light in the world that is the web.

  • "If browsers fully support the standards... they can add as many extra's as they please! Nobody will be againts that!"



    I'm not sure I agree with this. The problem I see with this approach is that this makes innovations harder. When different browsers each decide to add non-standard features, there's a chance that at some point things start to collide. I think it would be more effective if there was a roadmap that was shared by all modern browsers.

  • @Wilco Bauwer: first of all... Great weblog you have!



    Second: Off course I don't want to encourage browser vendors to all invent a different approach for the same thing. Once something is invented and proves it value... let there be built a standard in a short timespan. Once there's a standard, other browsers can implement the same thing in a consistent manner.



    And I - as a spare time developer - can built one website working on all browsers and wil have some extra's in other browsers. If slowly all other browsers would implement 'the extra' according to the standard being set... my extra's would work on all other browsers.



    And sure you're right... if there was a roadmap, shared by all modern browsers... life would be much easier for us. And more boring perhaps;-)

  • A lot of people show their respective opinions in light of browser favorites here. I personally think that this isn't about browsers in general although they have their part to play. A lot of the difficulty of client side development would go away if browsers supported the standards correctly. While it's not easy to do this I'm sure, it shouldn't be a technological hurdle and it should get fixed, but I don't see this as likely. Instead the browser vendors point fingers at each other's implementation.



    But the real issue I think that Bertrand is getting at is this: HTML and JavaScript standards have been stale for many, many years. Standards body or not there's been zero innovation in this space that reflects of what applications are actually being built ontop of the HTML platform. Think of the lack of more powerful controls like a decent scrollable multi-column list object (ie. like a ListView) or Tree control, or a better inline editing API. These are things that get re-invented over and over and over again by you and me as developers or by tool vendors in non-standard ways, resulting in much less uniformity and countless wasted hours on re-inventing the wheel.



    It's clear that that sort of thing belongs in the platform (ie. the DOM) not the tools that ride ontop of it. Yet nobody bothers. These sort of things would be fairly easy to do, to extend the existing standard without breaking any existing functionality - there's no reason not to do this, yet nothing in this respect has happened.



    So from that aspect I can certainly agree with Bertrand that stodgy standards are hurting any sort of forward momentum.



    Every few years we some some other sort of 'exciting' UI technology come out that has a lot of this functionality, but it never gets off the ground because one or another big vendor is not going to support it and well, frankly, because it's not HTML. The only sizable contender to HTML at all is Flash and even Flash is completely dismissable in terms of mind-share for Web application development (not counting pure UI Glitz).



    It's clear that HTML is going to continue to be the way to build Web uis for some time to come, even though richer UIs are available.



    The question is: How do we drive some action into this direction? I admit - i have no anwers. But I can't imagine that there's a seasoned Web developer out there who's happy with what's available 'out of the box'.



  • You can't always follow standards. I suggest you follow as many as possible but then decide if some neat new feature is great enough to justify dropping a percentage of users of a browser that may not have picked up that new method or way of doing things. Cross browser/cross platform is important but it's more important to look at the big picture.



    Standards in no way have stopped innovation, it's just a matter of choosing which innovations are more important then 100% standards compliance.

  • In response to Colin McGraw. Instead of adding extensibility options like your suggesting, why don't the browser manufacturers work on creating a joint coalition under which a new engine is produced. One that conforms to a set of standards that both companies can use and build around. Then as new features come into play they can decide what makes it and what doesn't, but in either case if it is approved, it will be approved across the board.



    I don't think that we, as developers and designers, should be hampered by the vehicle we display our work in. The browser application should be the focus of the manufacturer. I don't think that this question is answerable in the current lack of compliance with any one solid set of standards.

Comments have been disabled for this content.