If we do os:Flash, we should probably handle os:Silverlight too. Do we want to tackle these as a pair or separate?
Looking at the markup, I think our earlier resolution to the discussion of extension methods is flawed. I don’t know that the mechanism we discussed is the cleanest way to say “this feature is non-portable”. Consider the markup for the Flash example:
<os:xFlash swf="<swf>"
flashvars="me=${os:UrlEncode(me)}">
<b><p>alternate content. Click
me!</p></b>
</os:xFlash>
It reads as though it is an optional feature in the OpenSocial spec (like gadgets and MiniMessage). It isn’t—instead, it is a container specific extension to OSML and is not portable between containers. I would expect some other things in place:
1. An imported template library (I understand that this was not chosen due to other concerns in rendering Flash content).
2. A <Require feature="shindig-opensocial-extensions" /> marker to indicate that this gadget uses extensions known to Shindig.
(Or a <Require feature="myspace-opensocial-extensions" /> marker to indicate that this gadget uses extensions known to MySpace.)
Does this make sense? Otherwise, a gadget would fail because an unsupported feature was attempted to enter the container.
Oh—what in the world is os:UrlEncode? There were other typos in the markup (your markup tries to balance <os:xFlash> with </os:Flash>), so this might be a goof.
From: opensocial-an...@googlegroups.com [mailto:opensocial-an...@googlegroups.com] On Behalf Of Louis Ryan
Sent: Thursday, April 02, 2009 12:53 AM
To: OpenSocial - OpenSocial and Gadgets Specification Discussion
Behavior for unrecognized tags is undefined: http://opensocial-resources.googlecode.com/svn/spec/draft/OpenSocial-Data-Pipelining.xml#rfc.section.12.
My concern is with the tag being in the os: xmlns. That makes it look like a standardized tag, though it isn’t. This will cause support issues for any container that doesn’t implement the tag as the other containers have to explain that “No, it isn’t standardized—[Container X] just implemented the tag and improperly inserted it into the namespace of standardized tags.” These proposed features should have a different namespace until we come to an agreement. For the time being, I’d expect extension tags that containers create to exist in the container namespace. This is what MySpace is doing for tags that we want which aren’t in the spec but are handled by our container.
As an aside, when we come around to standardizing in v.Next, I think we’ll want to consider making flashvars UrlEncoded as part of the default behavior instead of forcing the dev to think about it.
Behavior for unrecognized tags is undefined: http://opensocial-resources.googlecode.com/svn/spec/draft/OpenSocial-Data-Pipelining.xml#rfc.section.12.
My concern is with the tag being in the os: xmlns. That makes it look like a standardized tag, though it isn’t. This will cause support issues for any container that doesn’t implement the tag as the other containers have to explain that “No, it isn’t standardized—[Container X] just implemented the tag and improperly inserted it into the namespace of standardized tags.” These proposed features should have a different namespace until we come to an agreement. For the time being, I’d expect extension tags that containers create to exist in the container namespace. This is what MySpace is doing for tags that we want which aren’t in the spec but are handled by our container.
Hi Louis,
How can we show a different version of the flash swf files depending on the version of the Flash player? We have a different build of BuddyPoke for Flash 9 and Flash 10. The Flash 10 version has more functionality. The percentage of users with Flash 10 is not yet high enough for us to simply switch to a single Flash 10 build.
For a sanitized view, with allownetworking set to internal how can we do things like Flash-based Google Analytic Events? I expect analytics uses different domains, which means it wont work. (And I think Google Analytics might also use the external interface?) Analytics is particularly important for developers. We've started to do branded content (Wolverine on Orkut) and it's important for the client to know how often their pokes are used etc.
Will a sanitized canvas view still allow banner ads + virtual payments? Companies like PeanutLabs have *Flex* based payment solutions that can be used on the Canvas view. With a sanitized canvas view and allownetworking=internal I expect this will break their implementation. The canvas view on most apps can contain flash-based banner ads on the same page. How would these be sanitized? Wouldn't banner ads pose a bigger risk than the actual app?
notes inlined...On Thu, Apr 2, 2009 at 10:30 AM, Dave Westwood <dave.w...@gmail.com> wrote:
Hi Louis,
How can we show a different version of the flash swf files depending on the version of the Flash player? We have a different build of BuddyPoke for Flash 9 and Flash 10. The Flash 10 version has more functionality. The percentage of users with Flash 10 is not yet high enough for us to simply switch to a single Flash 10 build.
Sounds reasonable. Possible alternatives would be either a substitution pattern in the URL itself e.g. swf="http://www.example.org/myflashv%majorFlashVersion%.swf" or to have different attributes in the tag for each version to support e.g
<os:Flash swf_9="..." swf_10="..." ...>
For a sanitized view, with allownetworking set to internal how can we do things like Flash-based Google Analytic Events? I expect analytics uses different domains, which means it wont work. (And I think Google Analytics might also use the external interface?) Analytics is particularly important for developers. We've started to do branded content (Wolverine on Orkut) and it's important for the client to know how often their pokes are used etc.
I think you would need a separate tag for this, I don't have any objection to supporting one
Will a sanitized canvas view still allow banner ads + virtual payments? Companies like PeanutLabs have *Flex* based payment solutions that can be used on the Canvas view. With a sanitized canvas view and allownetworking=internal I expect this will break their implementation. The canvas view on most apps can contain flash-based banner ads on the same page. How would these be sanitized? Wouldn't banner ads pose a bigger risk than the actual app?
Up to the container, I expect many containers will prefer Caja on canvas views over content sanitization. What is the reason you think allownetworking=internal is breaking their implementation?
The colon comes from the J2EE spec. ":" is for namespacing. "." is
reserved for the possibility of invoking functions on objects, which
is not supported at all in current versions of JavaEE (for good
reason).
-- Adam
notes inlined...On Thu, Apr 2, 2009 at 1:33 PM, Louis Ryan <lr...@google.com> wrote:notes inlined...On Thu, Apr 2, 2009 at 10:30 AM, Dave Westwood <dave.w...@gmail.com> wrote:
Hi Louis,
How can we show a different version of the flash swf files depending on the version of the Flash player? We have a different build of BuddyPoke for Flash 9 and Flash 10. The Flash 10 version has more functionality. The percentage of users with Flash 10 is not yet high enough for us to simply switch to a single Flash 10 build.
Sounds reasonable. Possible alternatives would be either a substitution pattern in the URL itself e.g. swf="http://www.example.org/myflashv%majorFlashVersion%.swf" or to have different attributes in the tag for each version to support e.g
<os:Flash swf_9="..." swf_10="..." ...>Either works - I'd lean towards the first version because I expect I'm one of the few that has multiple builds of swf files to take advantage of Flash 10 features. So most developers would just want swf="..."
For a sanitized view, with allownetworking set to internal how can we do things like Flash-based Google Analytic Events? I expect analytics uses different domains, which means it wont work. (And I think Google Analytics might also use the external interface?) Analytics is particularly important for developers. We've started to do branded content (Wolverine on Orkut) and it's important for the client to know how often their pokes are used etc.
I think you would need a separate tag for this, I don't have any objection to supporting oneThe cool thing about Flash-based Google Analytics is that you don't have to embed the regular analytics javascript. You can create Analytic events directly in Flash, and Flash fires them off. (No js required..) If it was to use a completely separate tag then you're basically preventing OpenSocial apps from using the Flash-based Analytics package. We'd just be using the javascript version via some kind of bridge. Which sort of defeats the cool factor of Google supporting Flash Analytics in the first place.It's also not clear to me how an analytics tag could work with different analytics engines. For example kontagent.
Will a sanitized canvas view still allow banner ads + virtual payments? Companies like PeanutLabs have *Flex* based payment solutions that can be used on the Canvas view. With a sanitized canvas view and allownetworking=internal I expect this will break their implementation. The canvas view on most apps can contain flash-based banner ads on the same page. How would these be sanitized? Wouldn't banner ads pose a bigger risk than the actual app?
Up to the container, I expect many containers will prefer Caja on canvas views over content sanitization. What is the reason you think allownetworking=internal is breaking their implementation?allownetworking=internal prevents Flash from redirecting the browser to a new page. Let's say a user selects the option to pay with Paypal. PeanutLabs has their ui in Flex. Clicking on the paypal button would typically redirect the browser to Paypal's site where the user would pay. With allownetworking=internal redirects are not allowed and their payment flow breaks. The app would just sit there.
http://opensocial-resources.googlecode.com/svn/spec/0.8/gadgets/gadgets-exte
nded.xsd
http://opensocial-resources.googlecode.com/svn/spec/0.8/gadgets/gadgets.xsd
Actually, Visual Studio told me so.
1. Line 106: <xs:attribute name="name" type="xs:string" use="optional"/>
should be for the Service element and not the OAuth element (should be after
the inner <xs:sequence> not the outer one).
2. Line 78: It should be <xs:attribute name="rel" use="required"> for the
Link element
Anyway, I've uploaded a fix copy to
http://my6solutions.com/Resources/0.8/gadgets-extended.xsd for those who
want XML intellisense for their gadget for those developing under Visual
Studio. Please correct me if I got the format wrong but it seems to work.
Still working on getting javascript intellisense working at the SAME time.
It can work, along with jquery intellisense, but then XML intellisense will
not work.
Cheers,
Sean
These functions are interesting, but they either belong in a discussion around v.Next or we delay release of 0.9.
Until then, these should be part of the orkut or shindig object. MySpace does exactly that in 0.7 and the 0.8 container for extensions to the OpenSocial model. So far, this has reduced confusion.
From:
opensocial-an...@googlegroups.com
[mailto:opensocial-an...@googlegroups.com] On Behalf Of Lev
Epshteyn
Sent: Thursday, April 02, 2009 12:20 PM
To: opensocial-an...@googlegroups.com
Subject: [opensocial-and-gadgets-spec] Re: PROPOSAL for v.Next :
Opensocial Flash tag
I'm also strongly in favor of the idea of built-in EL functions, as these are very useful for all kinds of formatting (date comes to mind).
Totally agree (with postponing to v.Next). 0.9 doesn't need more
On Fri, Apr 3, 2009 at 7:56 AM, Scott Seely <sSe...@myspace-inc.com> wrote:
> These functions are interesting, but they either belong in a discussion
> around v.Next or we delay release of 0.9.
features, and this entire thread is about v.Next.
Agreed that's the technically correct solution, though some practical
> Until then, these should be part of the orkut or shindig object. MySpace
> does exactly that in 0.7 and the 0.8 container for extensions to the
> OpenSocial model. So far, this has reduced confusion.
exigencies make it more difficult (for users) to do so for XML
namespaces than for Javascript objects, since there's per-namespace
syntactical overhead.
The discussion then also needs some proposals around what those new functions are. Right now, we have several other metadisucssions that need to happen before agreeing on the tags. It's good that this discussion is bringing this issue to light:
· The EL functions need definitions.
· We have to define how and what is available via EL functions. (“os:” vs. “os.”)
· We need to define a guiding principle for when something is evaluated and added to the DataContext vs. when we create functions and inline the evaluation. Through use of the “requires” attribute, JS could populate items and then allow the OSML to be evaluated. (Yes, I understand the efficiency of server side vs. client side processing—we need to decide when we define a new server side function vs. when we push processing to the client.)
· Some functions, like os:UrlEncode, may not be needed if we properly define the behavior of attributes. We can say “attribute X always UrlEncodes data Y on tag construction.” This may remove the need for some functions altogether.
> -----Original Message-----
> From: opensocial-an...@googlegroups.com [mailto:opensocial-and-
> gadget...@googlegroups.com] On Behalf Of Adam Winer
> Sent: Friday, April 03, 2009 8:08 AM
Understand that by pushing features into the os namespace means that containers that do not make that choice will state things like:
“No, [Feature A] isn’t standardized—[Container X] just implemented the tag and improperly inserted it into the namespace of standardized tags.”
This behavior will also hurt the perception of OpenSocial as it will start appearing to be tending towards more of a benevolent dictatorship (ex. Facebook) instead of an open platform.
It also strikes me as poor choice to pursue this path given that MySpace and Yahoo! representatives have made sure to clearly delineate where the differences lie between container-specific features and OpenSocial (experimental/platform specific stuff vs. standard stuff). What would have happened if MySpace had published our existing Album APIs under the OpenSocial namespace and told developers that “we’ll converge later anyhow. Deal with the pain.”? It’s a very real question. We already know that path that MySpace chose, including the benefits we saw from cooperatively collaborating on the final version of the Albums API.
Why would you choose to deprive the group of those benefits for perceived expediency of not needing to change a namespace later?
The discussion then also needs some proposals around what those new functions are. Right now, we have several other metadisucssions that need to happen before agreeing on the tags. It's good that this discussion is bringing this issue to light:
· The EL functions need definitions.
· We have to define how and what is available via EL functions. (“os:” vs. “os.”)
· We need to define a guiding principle for when something is evaluated and added to the DataContext vs. when we create functions and inline the evaluation. Through use of the “requires” attribute, JS could populate items and then allow the OSML to be evaluated. (Yes, I understand the efficiency of server side vs. client side processing—we need to decide when we define a new server side function vs. when we push processing to the client.)
· Some functions, like os:UrlEncode, may not be needed if we properly define the behavior of attributes. We can say “attribute X always UrlEncodes data Y on tag construction.” This may remove the need for some functions altogether.