This is a posting I made on the shindig-dev list - this post is to
bring the issue to a wider audience. Gadget run in quirks mode (with
no DOCTYPE) due to historical reasons. This is to raise awareness that
we need to migrate to standards mode, what's driving that decision and
how we could go about it.

Currently the gadget specification defines gadgets as running in
quirks mode:
   http://code.google.com/apis/gadgets/docs/spec.html


CAJA INLINING

Inlining cajoled gadgets is going to force us to switch to standards
mode. As the inlined gadget will have to the same DOCTYPE as the
container page. All the major OpenSocial partners use standards mode
with the exception for Orkut. Complete list of container DOCTYPEs is
at the end.

If an author has to modify their gadget for caja, it makes sense to
convert to standards mode too. This avoids hitting developers with
repeated requests for changes or suffering the long term problems of
adopting quirks mode.


BACKWARDS COMPATIBILITY

This was the problem that Kevin raised. A gadget should be able to
elect to be rendered in standards mode. If a gadget doesn't request
standards mode, then like a page without a DOCTYPE, it's shown in
quirks mode - just the same as how gadgets are rendered at the moment.
Mix and match of modes is possible since it's inside an iframe:
   http://brunobowden.dreamhosters.com/gadgets/examples/strict.html

Inlined Caja would use the DOCTYPE of the container. If a container
wants to do inlining, then I believe it MUST use standards mode.


SYNTAX

We should not let gadgets specify the full doctype due - that would be
ok for iframes but it's impossible with inlining. Instead use a
generic boolean:

<Content standardsMode="true">
 ...
</Content>

If standardsMode is specified, then the DOCTYPE as added. If the
attribute is missing, then the container can do what it likes. This
allows it to be opt-in at first but still gives the container
flexibility to migrate later. If a gadget developer opts out by using
standardsMode="false", then it's always rendered in an iframe with no
DOCTYPE. We're discussing a similar syntax for Caja.


QUESTIONS

How constrained should containers on selecting a DOCTYPE?
Obviously it should be standards mode but since gadget developers are
going to have a hard time coding to different DOCTYPEs, it would be
easier for the container to standardize. I'm not familiar enough with
the differences between DOCTYPEs to evaluate this.

For standards mode rewriting, should we be stricter again and specify
XHTML too?
I need to check whether the output from Caja will be XHTML compliant,
it may be a requirement for the input too.


CONTAINER DOCTYPES

Wikipedia documents the browser support for all DOCTYPEs
http://en.wikipedia.org/wiki/Quirks_mode. I'm glossing over the
"almost standards" mode for IE. The "html" has been lowercased in all
DOCTYPEs to make it easier to read. Complete list of DOCTYPEs by
container:


HTML:
Plaxo Profile - Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
Friendster Profile: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://
www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
LinkedIn Profile: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://
www.w3.org/TR/html4/loose.dtd">
Orkut Profile: Quirks
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Blogger blog: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/
TR/html4/strict.dtd">
iGoogle: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/
TR/html4/strict.dtd">

XHTML:
Facebook Profile & Canvas chrome: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Hi5 Sandbox Profile: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
MySpace Profile: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Salesforce.com: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Ning OpenSocialDemo: Standards
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/
TR/xhtml11/DTD/xhtml11.dtd">
- Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Implementing OpenSocial Containers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/opensocial-container?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to