Friday, 9 December 2005

Web Standards, Mozilla Extensions And Other Ranting

I belatedly read a few blog comments complaining that Firefox is corrupting the Web by implementing nonstandard tags like <canvas> and prematurely implementing CSS3 columns.

Bollocks. You can't make good standards without implementation experience and you don't know you have a good implementation until a lot of people have used it. We take what safeguards we can to avoid poisoning the Web with a nonconformant implementation. In particular with CSS3 columns, we currently only honour -moz-column-* properties. When the standard is settled and we implement it well enough, then we'll start supporting the standard column-* properties. In the meantime anyone using -moz-column-* knows they're off the standards map. This approach will help us get a solid columns spec --- and conformant implementations --- faster.

With <canvas> the situation is a little different. It may not be blessed by the W3C (yet) but it has everything else going for it: a good spec developed in the open; interoperable, independent implementations from three vendors (two of which are open source); and it doesn't interfere with any existing standard. In short it's a fine quasi-standard.

A larger point is that work like CSS3 columns and <canvas> is required to move the Web forward. If the Web does not move forward --- if we spend all our energy refining existing specifications with fixed functionality, and developing perfect implementations of them --- then it will be replaced by something that is moving forward, which won't be based on standards, and then all our magnificent standards won't do us any good at all.

On another tack, Jim Ley writes:
I'm not convinced by canvas, IE has had 2D and 3D drawing API's and the ability to redirect HTML to an image since IE4, no-one used them, the use cases aren't really there, it's just gimicky effects, and single threaded javascript is way too slow, and bad an authoring environment for creating anything but toys.


That's an interesting suggestion. I could quibble with the facts (IE has a 3D drawing API?) but I'd rather counter with the observation that we've been able to do AJAX-style applications since before IE4, so why did it only explode over the last couple of years? I think for a long time we laboured under preconceived ideas about what Web apps could and should be. It took some adventurous coding from people like Google for everyone to raise their ambitions. I hope that with these new Web features people raise their ambitions some more.


11 comments:

  1. Daniel Glazman9 December 2005 04:49

    So it's not a "quasi-standard" with better spec quality, better implementations and better interoperability than a lot of real "standards". Drop that "quasi" :-)

    ReplyDelete
  2. Agreed. Why do they rant so much? Hell, you don't like canvas - don't frickin use it.
    You want to stay in 1999? Use IE, forget about Firefox. Why bother to follow its development if you hate progression? Stick with 1.0.7.
    Get with the plan, Stan.
    monk.e.boy

    ReplyDelete
  3. "You can't make good standards without implementation experience and you don't know you have a good implementation until a lot of people have used it."
    Congratulations, you just gave Microsoft a perfect excuse for all their 'innovation' which of course is aka disingenuous proprietary implementation of 'standards'.
    Required to move the web forward? Turn it up! How about simple, meaningful features like converting pathetic textarea's into genuine rich edit publishing tools!
    It's pathetic how those with the knowledge to code think they know it all. So far the web is nothing more than a medium for those who have the skills. It has taken almost 10 years of the web to get so-called 'blogs' (who the hell came up with such a strange term for what is simply accessible online publishing?). Will it take another 10 years to enable genuine publishing on the web for anyone and everyone?
    Forget canvas, a mere tag probably of limited interest to anyone except graphic designers, and make the whole web the damn canvas (or more to the point, notepad) and not merely a stone tablet.
    Google can see through the crap and come up with options like a save to blog widget for MS Word. Why force people to use Word, or Open Office for that matter? Give them a clean document sheet with rich editing facilities every time they see what is not a textarea box!

    ReplyDelete
  4. Always be careful about your wishes, the term �fine quasi-standard� is quite interesting, which shows that the world never changes that much. In that domain, I know a lot of "fine quasi-standard", some from microsoft, some from old netscape time with interoperable implementations, even if it started on one browser only at a point in time. We can remember "blink" and "font" for example.
    Do you think there are drawbacks to Canvas, and if yes, what are they?
    What are the rationale to sacrify certains options?
    You are saying, you made it safe for CSS3 by putting it in its own namespace "-moz" (yes this is a namespace), why it has not been done for canvas?
    Monkeyboy said: "Agreed. Why do they rant so much? Hell, you don't like canvas - don't frickin use it."
    It's not that simple. :) Interoperability has a cost, and a huge benefit, the community as large. For example, "object" element has still no interoperable implementations between safari, mozilla, firefox, opera and ie. It's not new, it's a very old element and yet to be implemented. How long will it take?

    ReplyDelete
  5. Robert O'Callahan12 December 2005 02:03

    IE-only or Netscape-only hacks never started life with a good spec developed in the open. They were just implemented based on some internal discussion, became popular and then were cloned (or not) and retroactively specified (or not).
    'canvas' was implemented by Apple first, sure, but before it's been really used on the Web we've already got a good spec worked out in the open which improves on Apple's implementation (e.g., by making a container so it can have fallback content, just like OBJECT), and we've got three independent implementations arriving at nearly the same time. So the situation is really quite different.
    Why wasn't canvas put in its own "namespace"? Because CSS makes it easy and HTML+Javascript doesn't.

    ReplyDelete
  6. so basically with an HTML 4.01 doctype, a conformant browser should not display canvas element at all. :) because unknown elements have to be ignored, only the CDATA rendered, which makes all these browsers finally not respecting the standards.

    ReplyDelete
  7. Karl, the html:object element has a very poorly written specification. Anyway, I'd love a pointer to some testsuite which shows that there are no interoperable implementations so they can be fixed.
    Regarding the HTML 4.01 doctype argument. Since when do browsers use validating parsers?

    ReplyDelete
  8. Wrong. A quote from the HTML 4.01 specification:
    Error conditions
    This specification does not define how conforming user agents handle general error conditions, including how user agents behave when they encounter elements, attributes, attribute values, or entities not specified in this document.
    However, for recommended error handling behavior, please consult the notes on invalid documents.
    http://www.w3.org/TR/html4/conform.html#h-4.1
    The notes on invalid documents specify, and I quote:
    Notes on invalid documents
    This specification does not define how conforming user agents handle general error conditions, including how user agents behave when they encounter elements, attributes, attribute values, or entities not specified in this document.
    However, to facilitate experimentation and interoperability between implementations of various versions of HTML, we recommend the following behavior:
    * If a user agent encounters an element it does not recognize, it should try to render the element's content.
    http://www.w3.org/TR/html4/appendix/notes.html#notes-invalid-docs

    ReplyDelete
  9. roc: Yeah, my understanding is that IE6 has a 3D API. Go figure. (Can't find any documentation right now though.)

    ReplyDelete
  10. Hi, I've been following specs like SVG, VML, etc for a very long time. I created one of the first SVG mailing lists (still active on yahoo groups for almost 6 years) and I wanted to say that I havent been this excited about a technology in years. I've read and re-read the SVG spec over and over with little progress. But when I went over the Canvas tutorial over on the mozilla twiki I "got it" in about 10 minutes, and was creating demos about 15 minutes later. I'm so enamoured of canvas that I've created a new mailing list here:
    http://groups.yahoo.com/group/canvas-developers/
    There are some amazing implementations of various canvas experiements, including games, math graphs, ajax server stat charts, and more. I've been working on the web since Mosaic, and I have a feel for things that have staying power, and canvas seems to have that "something".

    ReplyDelete
  11. > It sounds a bit rude, but maybe I'm missing parts of the story.
    Could be. Feel free to read the canvas threads in the whatwg.org archive (link at http://www.whatwg.org/mailing-list). The list is open to the public, unlike the w3.org lists that matter.
    /be

    ReplyDelete