(hopefully this doesn't already exist and i've just missed it?)
interacting directly with users as they are manipulating your gadget
in profile mode can be limiting due to width/location constraints in
your iframe. navigating them to a canvas page so you have more space
can be heavy-weight and irritating. users prefer direct manipulation.
on facebook we have a javascript dialog box apis (http://
wiki.developers.facebook.com/index.php/FBJS#Dialogs,
http://wiki.developers.facebook.com/index.php/FBJS/Examples/Dialogs)
which we can plumb to ajax-fill a dialog with remote content. it
creates standard OK (optionally CANCEL) dialogs styled to the
container (semi-transparent border shadow, centered on the viewport,
etc) and fires events back to us for OK or CANCEL.
in opensocial ideally the container would style a dialog and place it
in the viewport in an appropriate place (centered on the profile area
or over the whole page when in canvas mode?). at its most generic this
would be a pop-up iframe -- the container would simply construct a
dynamic iframe and we'd provide just perhaps a makeRequest parameter
block to and it would fills the content for us. but, there are many
ways this could be done differently.
in any case, i personally would put many things into these simple
dialogs modelessly to increase the direct-manipulation of our app --
inviting friends, picking which friends to message, or playing a video
a friend has sent you would all pop-up rather than navigate away.