Thursday 8 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:
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.
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.
Comments
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
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!
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?
'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.
Regarding the HTML 4.01 doctype argument. Since when do browsers use validating parsers?
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
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".
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