<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://developer.myspace.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>MySpace Developer Team News and Announcements : OpenSocial</title><link>http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx</link><description>Tags: OpenSocial</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20910.1126)</generator><item><title>OpenSocial State of the Union on May 12th</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2011/04/20/opensocial-state-of-the-union-on-may-12th.aspx</link><pubDate>Wed, 20 Apr 2011 23:25:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:52929</guid><dc:creator>Chris Cole</dc:creator><slash:comments>21</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=52929</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2011/04/20/opensocial-state-of-the-union-on-may-12th.aspx#comments</comments><description>&lt;p&gt;It&amp;#39;s hard to believe another year has passed.  As such, it&amp;#39;s time for another &lt;b&gt;State of the Union&lt;/b&gt; for OpenSocial.  OpenSocial has grown and changed quite a bit over the last year.  No longer is it just a platform for a few social networks to allow third-party games.  OpenSocial has continued to evolve into uses as a general purpose integration framework.  It&amp;#39;s seen broad adoption in the Enterprise by the likes of IBM, Oracle, &lt;a href="http://www.jivesoftware.com/" target="_blank"&gt;Jive Software&lt;/a&gt;, and many others.  Myspace has also open sourced large pieces of our OpenSocial platform as &lt;a href="http://code.google.com/p/negroni/"&gt;Project Negroni&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Come join us and many others at the OpenSocial State of the Union on May 12th (just after Google IO).  It&amp;#39;s going to be held at the Google San Francisco office.  Looking forward to seeing you there. &lt;a href="http://opensocial-sotu-2011.eventbrite.com/" title="OpenSocial Eventbrite registration" target="_blank"&gt;Register for OpenSocial SOTU&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=52929" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category></item><item><title>Open sourcing the Myspace gadget renderer</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2010/12/07/open-sourcing-the-myspace-gadget-renderer.aspx</link><pubDate>Tue, 07 Dec 2010 17:03:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:51925</guid><dc:creator>Chris Cole</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=51925</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2010/12/07/open-sourcing-the-myspace-gadget-renderer.aspx#comments</comments><description>Myspace has always been committed to open standards and the open Internet.&amp;nbsp; The Myspace Developer Platform team is now taking it a step further and will be open sourcing our internally developed Myspace OpenSocial Gadget container.&amp;nbsp; Now there will be a high quality and highly scalable .Net implementation of an OpenSocial Gadget container available to the community.&amp;nbsp; This will provide an excellent complement to the Java and PHP based containers developed by the &lt;a href="http://shindig.apache.org/" target="_blank"&gt;Shindig&lt;/a&gt; project as we continue to support &lt;a href="http://www.opensocial.org/" target="_blank"&gt;OpenSocial&lt;/a&gt; as one of the foundational building blocks of the open web.
&lt;br /&gt;
&lt;br /&gt;
If you would like to see a preview of the template framework code, it is available for download at &lt;a href="http://code.google.com/p/negroni/" target="_blank"&gt;Project Negroni on Google Code&lt;/a&gt;.  In the coming weeks we&amp;#39;ll be releasing the OpenSocial gadget renderer controls as well so you can start exploring our code, testing your gadgets locally, and even implementing your own gadget container on your .Net hosted site!
&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=51925" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/gadget/default.aspx">gadget</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/open+source/default.aspx">open source</category></item><item><title>OpenSocial State of the Union Summit on May 18th</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2010/04/28/opensocial-state-of-the-union-summit-on-may-18th.aspx</link><pubDate>Wed, 28 Apr 2010 17:31:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:47812</guid><dc:creator>Chris Cole</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=47812</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2010/04/28/opensocial-state-of-the-union-summit-on-may-18th.aspx#comments</comments><description>&lt;p&gt;This has been an amazing year for OpenSocial.  The spec group hammered out the full release 1.0 version of the OpenSocial specification, we cleaned up the APIs, and added a templating system.  MySpace launched a major revision of the open platform with our support for the 1.0 specification as well.&lt;/p&gt;

&lt;p&gt;All this makes it high time we had a celebration to reconnect and reflect on our achievements as a community, have some drinks, and start planning the next version of OpenSocial.  To that end, you&amp;#39;re all invited to join us for the OpenSocial State of the Union event being held on May 18th at the San Francisco MySpace offices.  Registration is free and food, drinks, and t-shirts will be provided.  If you&amp;#39;re attending Google I/O the next day, this makes a great warm-up event that will give you a deep dive on what&amp;#39;s new in Social Networking and an opportunity to talk face-to-face with the various members of the OpenSocial community and make your voice heard.  Hope to see you there!
&lt;/p&gt;&lt;a href="http://opensocial.eventbrite.com/"&gt;Register on EventBrite: &amp;nbsp;http://opensocial.eventbrite.com/&lt;/a&gt;&lt;p&gt;

&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://c1.ac-images.myspacecdn.com/images02/119/l_0663b8e1d87741f386a7b6f2bd8ad8e0.jpg" alt="OpenSocial State of the Union Invite" align="" border="" height="934" hspace="" width="600" /&gt; &lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=47812" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category></item><item><title>Book available: Building OpenSocial Apps</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2010/01/22/book-available-building-opensocial-apps.aspx</link><pubDate>Fri, 22 Jan 2010 08:09:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:45823</guid><dc:creator>Chris Cole</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=45823</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2010/01/22/book-available-building-opensocial-apps.aspx#comments</comments><description>&lt;p&gt;At MySpace we want to provide as many resources as possible to developers to help them build great, social applications. As an augment to the resources currently available (like the &lt;a href="http://developer.myspace.com"&gt;MySpace developer site&lt;/a&gt;) I’m happy to report that a new book, &amp;quot;Building OpenSocial Apps,&amp;quot; is now available.&amp;nbsp;&amp;nbsp; The book covers everything from &amp;quot;building an app&amp;quot; basics to advanced OAuth signing and invoking the REST APIs from an external server.&amp;nbsp; It even throws in a bit about OSML and the next generation platform for building apps on MySpace.&amp;nbsp; It&amp;#39;s published as part of the Addison-Wesely Professional series of books and is available from their website, Amazon, and at fine booksellers near you. Oh yeah, I’m also one of the authors, along with Chad Russell and Jessica Whyte ;)
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.informit.com/store/product.aspx?isbn=0321619064" target="_blank"&gt;http://www.informit.com/store/product.aspx?isbn=0321619064&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.informit.com/ShowCover.aspx?isbn=0321619064&amp;amp;type=f" alt="OpenSocial at MySpace book cover" align="" border="" width="160" height="206" hspace="" /&gt;&lt;/p&gt;

&lt;p&gt;Here’s what people are saying about the book:&lt;/p&gt;
&lt;blockquote&gt;
...You can tell the authors have spent a lot of time building applications within the OpenSocial realm because they explain all of the major pain areas and the do&amp;#39;s and don&amp;#39;ts of application development in this space... If I&amp;#39;d had a text like this, specifically the area of how to talk to the parent container, when I was building my first application on MySpace, I would have saved myself a week-long roundtrip ...
&lt;/blockquote&gt;
&lt;br /&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; Jon LeBlanc, Yahoo Developer Network&lt;br /&gt;&lt;a href="http://developer.yahoo.net/blog/archives/2010/01/book_review_building_opensocial_apps.html"&gt;http://developer.yahoo.net/blog/archives/2010/01/book_review_building_opensocial_apps.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In case you missed the DevJam in San Francisco on Jan 14th, I&amp;#39;ll be speaking at the &lt;a href="http://www.svwebbuilder.com/"&gt;Silicon Valley Web Builder&lt;/a&gt; group meeting on Wednesday, January 27th.&amp;nbsp; Come by, say hi, and learn a bit more about the latest developments on the MySpace platform.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=45823" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial+Book/default.aspx">OpenSocial Book</category></item><item><title>OpenSocial 0.9 OSML and Data Pipelining Beta Launch</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/12/04/opensocial-0-9-osml-and-data-pipelining-beta-launch.aspx</link><pubDate>Fri, 04 Dec 2009 20:30:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:44580</guid><dc:creator>Chris Cole</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=44580</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/12/04/opensocial-0-9-osml-and-data-pipelining-beta-launch.aspx#comments</comments><description>&lt;p&gt;
Today we are announcing the public beta of OpenSocial 0.9 with
OSML and Data Pipelining. For off-site developers and API-based apps,
we&amp;#39;ve had &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_REST_Resources" title="OpenSocial 0.9 REST APIs" target="_blank"&gt;OpenSocial 0.9 REST APIs &lt;/a&gt;available for a few months, go check it out.
This beta launch today represents the second half of an exciting and feature-packed
release of OpenSocial on the MySpace Developer platform.&lt;/p&gt;



&lt;p&gt;&amp;quot;What does OpenSocial 0.9 do for &lt;a&gt;me?&amp;quot; &lt;/a&gt;&lt;span class="MsoCommentReference"&gt;&lt;span style="font-size:8pt;"&gt;&lt;a href="http://developer.myspace.com/Community/controlpanel/blogs/#_msocom_1" title="_msoanchor_1" class="" id="_anchor_1" name="_msoanchor_1"&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;you
might ask. There are lots of great things:&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;A simple tag-based syntax for accessing data (Data Pipelining).&lt;/li&gt;
&lt;li&gt;A powerful template system for defining reusable content as &amp;quot;custom tags&amp;quot; 
for server-side or client-side rendering (OSML).&lt;/li&gt;
&lt;li&gt;A rich expression language for accessing data (OpenSocial Expression Language - or OS EL).&lt;/li&gt;
&lt;li&gt;Improved Gadget XML support for writing cross-container apps.&lt;/li&gt;
&lt;li&gt;Internationalization support with message bundles.&lt;/li&gt;
&lt;li&gt;Faster renderings performance &lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Now, instead of writing 30+ lines of JavaScript code with
requests and callback handlers to get a list of friends, one Data Pipeline tag
can retrieve this data: &lt;/p&gt;



&amp;lt;os:PeopleRequest key=&amp;quot;myFriends&amp;quot; userId=&amp;quot;@viewer&amp;quot; groupId=&amp;quot;@friends&amp;quot; /&amp;gt;



&lt;p&gt;If your app needs to display and format data and UI
components, it can be done with OSML markup instead of JavaScript. To define a
tag &amp;quot;myapp:PersonBlock&amp;quot; showing a person&amp;#39;s name and image in a box,
use the following markup.&lt;/p&gt;



&amp;lt;script
type=&amp;quot;text/os-template&amp;quot; tag=&amp;quot;myapp:PersonBlock&amp;quot;&amp;gt;

&amp;lt;div
style=&amp;quot;border:3px solid green;&amp;quot;&amp;gt;

&amp;lt;img src=&amp;quot;${My.person.thumbnailUrl}&amp;quot; /&amp;gt; ${My.person.displayName}

&amp;lt;/div&amp;gt;

&amp;lt;/script&amp;gt;



&lt;p&gt;Any data declared with Data Pipeline tags can be easily
accessed via the OpenSocial Expression Language (&lt;a&gt;OS EL&lt;/a&gt;&lt;span class="MsoCommentReference"&gt;&lt;span style="font-size:8pt;"&gt;&lt;a href="http://developer.myspace.com/Community/controlpanel/blogs/#_msocom_2" title="_msoanchor_2" class="" id="_anchor_2" name="_msoanchor_2"&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)
within your app. The code to show the name of the first friend in the
friend list registered under the key &amp;quot;myFriends&amp;quot; is as simple as
this:&lt;/p&gt;



The
first friend&amp;#39;s name is: ${myFriends[0].displayName}



&lt;p&gt;Improved Gadget XML support means your app&amp;#39;s source code can
be managed with a single code file. Porting between other OpenSocial
containers will be greatly simplified. We&amp;#39;re also exposing REST APIs for
app management. You&amp;#39;ll be able to wire in your favorite code editing
tools for app management.&lt;/p&gt;



&lt;p&gt;As part of the improved Gadget XML support and the new
OS EL, you can easily internationalize and localize your app to be used in
different cultures. The text of your app can be defined in different
message bundles and accessed via OS-EL statements. A &amp;quot;Hello
World&amp;quot; app supporting English and Spanish would contain code as below:&lt;/p&gt;



&lt;pre&gt;&amp;lt;Locale&amp;gt; &lt;br /&gt; &amp;lt;messagebundle&amp;gt;&lt;br /&gt;  &amp;lt;msg name=&amp;quot;greeting&amp;quot;&amp;gt;Hello World&amp;lt;/msg&amp;gt;&lt;br /&gt;&amp;lt;/messagebundle&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Locale&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Locale lang=&amp;quot;es&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;messagebundle&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;msg name=&amp;quot;greeting&amp;quot;&amp;gt;Hola Mundo&amp;lt;/msg&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/messagebundle&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Locale&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;${Msg.greeting}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;


&lt;p&gt;This post is just a teaser of what&amp;#39;s coming from the MySpace
Developer Platform team. Over the next several weeks we&amp;#39;ll be diving into
the features of 0.9 in more depth, adding tutorials, and building sample apps
to get you up and running.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There will be a number of tutorials on creating OSML apps linked to from the &lt;a href="http://wiki.developer.myspace.com/index.php?title=Category:OpenSocial_Version_0.9" target="_blank"&gt;OpenSocial Version 0.9 Wiki Page&lt;/a&gt;. For now, you can create a friends list app as follows:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1. Go to the developer site, sign in, and create a new &lt;b&gt;On-site&lt;/b&gt; app named &amp;quot;My Friends&amp;quot;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2. On the &lt;b&gt;Upload App XML&lt;/b&gt; page, scroll down and click the &lt;b&gt;(Beta) App Gadget Source Editor&lt;/b&gt; button&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3. Click the &lt;b&gt;Install&lt;/b&gt; button on the gadget editor screen to install the app you&amp;#39;ve just created. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4. Insert the below code in the source text box and save: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="font-size:10pt;"&gt;
&lt;div style="text-align:left;"&gt;&lt;pre class="source-xml"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;Module&lt;/span&gt; &lt;span class="re0"&gt;xmlns:os&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;http://ns.opensocial.org/2008/markup&amp;quot;&lt;/span&gt; &lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;ModulePrefs&lt;/span&gt; &lt;span class="re0"&gt;title&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;Friends need Hello also&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;description&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;This is the desc&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;Require&lt;/span&gt; &lt;span class="re0"&gt;feature&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;opensocial-0.9&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;Require&lt;/span&gt; &lt;span class="re0"&gt;feature&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;opensocial-templates&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;Require&lt;/span&gt; &lt;span class="re0"&gt;feature&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;opensocial-data&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/ModulePrefs&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;Content&lt;/span&gt; &lt;span class="re0"&gt;type&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;html&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;view&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;canvas&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="re0"&gt;type&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;text/os-data&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;os:ViewerRequest&lt;/span&gt; &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#39;vwr&amp;#39;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;os:PeopleRequest&lt;/span&gt; &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;&amp;#39;friends&amp;#39;&lt;/span&gt; &lt;span class="re0"&gt;userId&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;@viewer&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;groupid&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;@friends&amp;quot;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/script&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="re0"&gt;type&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;text/os-template&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;h1&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hello world, ${vwr.displayName}&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/h1&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;	 Your friends are:&lt;br /&gt;&lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;div&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;os:Repeat&lt;/span&gt; &lt;span class="re0"&gt;expression&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;${friends}&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;p&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;	 Friend number ${Context.index} is: ${Cur.displayName}&lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="re0"&gt;src&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;${Cur.thumbnailUrl}&amp;quot;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/p&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;	 &lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/os:Repeat&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;	 &lt;br /&gt;	 &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/div&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/script&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/Content&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/Module&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Happy coding!&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=44580" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial+0.9/default.aspx">OpenSocial 0.9</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OSML/default.aspx">OSML</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Data+Piplining/default.aspx">Data Piplining</category></item><item><title>New Features for OpenSocial 0.9 REST APIs</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/11/17/new-features-for-opensocial-0-9-rest-apis.aspx</link><pubDate>Wed, 18 Nov 2009 00:38:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:44156</guid><dc:creator>krunal</dc:creator><slash:comments>21</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=44156</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/11/17/new-features-for-opensocial-0-9-rest-apis.aspx#comments</comments><description>&lt;p&gt;Hi everyone, &lt;/p&gt;&lt;p&gt;We are extending our 0.9 REST API offerings by adding new endpoints as well as adding new features to existing endpoints to make our 0.9 offering richer. We are committed to exposing data through Open Standards so app developers can create the finest applications on the web. Some of these new features are not part of the previous MySpace REST APIs so this should encourage you to switch to 0.9 if you haven’t done so already.&lt;/p&gt;&lt;p&gt;The link to the main resource page for REST 0.9 APIs is located &lt;a href="http://wiki.developer.myspace.com/index.php?title=Category:OpenSocial_v0.9_REST_Resources" title="OpenSocial 0.9 REST APIs" target="_blank"&gt;here&lt;/a&gt;. Please find documentation links and highlights of these new features below.&amp;nbsp; Please review our &lt;a href="http://wiki.developer.myspace.com/index.php?title=Developer_Addendum_to_MySpace.com_Terms_of_Use_Agreement" title="Terms of use" target="_blank"&gt;Terms of use&lt;/a&gt;, especially Section 10.2, before you start using these features.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;text-decoration:underline;"&gt;New Endpoints&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;StatusMoodComments &lt;/span&gt;&lt;/p&gt;&lt;p&gt;This endpoint provides a way to fetch the comments posted on a user’s StatusMood updates. It also provides a way to request the comment author’s basic info (image, name and profile URL) along with the comments themselves. This could reduce the number of calls to the server you need to make if you plan on displaying the commenter’s data along with the comments. &lt;/p&gt;&lt;p&gt;Please see details &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMoodComments" title="StatusMood Comments" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;ProfileComments&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This provides a way to fetch the comments posted on a user’s profile. It also provides a way to request the comment author’s basic info along with the comments, which again will reduce the number of calls to the server if that information is needed. &lt;/p&gt;&lt;p&gt;Please see details &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_ProfileComments" title="Profile Comments" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;MediaItemComments&lt;/span&gt;&lt;br /&gt;You can now fetch comments posted on a user’s images and videos. Again, this endpoint allows you to fetch the comment author’s basic info to save a second request to the server. &lt;/p&gt;&lt;p&gt;Please see details &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_MediaItemComments" title="MediaItem Comments" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;text-decoration:underline;"&gt;Enhancements&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;StatusMood&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The StatusMood endpoints now offer APIs to fetch friends’ status mood updates as well as provides a way to fetch StatusMood history.&lt;/li&gt;&lt;li&gt;Apps can also fetch recent comments on a user status in the same call.&lt;/li&gt;&lt;li&gt;MySpace now allows syncing/updating StatusMood from various sources like Twitter. You can get that information in your requests.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Check the documentation for the StatusMood APIs &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood#Notes" title="StatusMood" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Also don’t forget to check out the filters that &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood#Supported_URIs_and_Filters_by_StatusMood_endpoints" title="StatusMood filters" target="_blank"&gt;this endpoint has to offer&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Activities&lt;/span&gt;&lt;/p&gt;&lt;p&gt;We are also adding Activity Streams extension properties to activities returned from our OpenSocial 0.9 Activities endpoint in this release.&amp;nbsp; Activity Streams is a data format that describes what people are doing around the web, for example: posting photos and videos, sharing music with friends and writing blog entries.&amp;nbsp; If you are already familiar with the Activity Streams atom format, you can now access all the Activity Streams goodness, like actors, verbs, objects and object-types, in JSON and plain old XML.&amp;nbsp; Find more information about Activity Streams on the http://activitystrea.ms web site.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Check out the MySpace implementation for the same &lt;a href="http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Activities#ActivityStrea.ms_Extensions" title="Activities endpoints" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;text-decoration:underline;"&gt;SDKs&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Our PHP and Java &lt;a href="http://wiki.opensocial.org/index.php?title=Client_Libraries" target="_blank" title="SDK link"&gt;SDKs&lt;/a&gt; have been updated to support these new features and the others are in the works. Also, these new features are developed using Open Standards like OpenID, OAuth and OpenSocial which should help make your experience smooth.&lt;/p&gt;&lt;p&gt;Also, if you have missed out, visit this earlier blog post for more information about complete suite of &lt;a href="http://developer.myspace.com/Community/blogs/devteam/archive/2009/09/21/full-support-of-opensocial-0-9-rest-apis-now-available.aspx" title="OpenSocial 0.9 REST APIs" target="_blank"&gt;REST 0.9 APIs&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=44156" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/REST/default.aspx">REST</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Activities/default.aspx">Activities</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/activity+stream/default.aspx">activity stream</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/myspace+open+platform/default.aspx">myspace open platform</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/ActivityStreams/default.aspx">ActivityStreams</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/MySpaceceID/default.aspx">MySpaceceID</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/ActivityStrea.ms/default.aspx">ActivityStrea.ms</category></item><item><title>App Notifications Beta Release</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/04/20/App-Notifications-Beta-Release.aspx</link><pubDate>Mon, 20 Apr 2009 23:10:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:38899</guid><dc:creator>my␣ CodeStorm</dc:creator><slash:comments>21</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=38899</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/04/20/App-Notifications-Beta-Release.aspx#comments</comments><description>&lt;p&gt;Developers can now generate custom notifications from their applications.&lt;/p&gt;&lt;p&gt;App Notifications are generic one to one communications from an application to a specific User of that application. In addition to providing a framework for communicating general application state messages, App Notifications also include the ability to allow the User to execute an application specific action from multiple choices. &lt;/p&gt;
&lt;p&gt;The following documentation is for a BETA release. At this time:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;App Notifications can only be received by Developers of the application.&lt;/li&gt;
&lt;li&gt;App Notifications will expire after 7 days.&lt;/li&gt;
&lt;li&gt;Users will only see the 5 most recent notifications per app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please read the &lt;a href="http://wiki.developer.myspace.com/index.php?title=App_Notifications"&gt;App Notifications&lt;/a&gt; documentation for more information.&lt;/p&gt;



&lt;br /&gt;
&lt;br /&gt;

&lt;b&gt;Posted by: &lt;a href="http://myspace.com/CodeStorm"&gt;Bryan Green&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;a.k.a. &lt;b&gt;Codestorm&lt;/b&gt;&lt;/i&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=38899" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/messaging/default.aspx">messaging</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/notifications/default.aspx">notifications</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/ACC/default.aspx">ACC</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Bryan+Green/default.aspx">Bryan Green</category></item><item><title>MySpaceID and the Importance of Building on an Open Stack for the Social Web</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/04/07/MySpaceID-and-the-Importance-of-Building-on-an-Open-Stack-for-the-Social-Web.aspx</link><pubDate>Tue, 07 Apr 2009 20:23:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:38560</guid><dc:creator>8BitKid</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=38560</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/04/07/MySpaceID-and-the-Importance-of-Building-on-an-Open-Stack-for-the-Social-Web.aspx#comments</comments><description>At MySpace, we recently released several critical new feature enhancements to MySpaceID, a product under the MySpace Open Platform. We delivered OpenID support, an OpenID/OAuth Hybrid experience, and support for syndicating “Friend Updates” via the emerging Activity Streams specification.&lt;br /&gt;&lt;br /&gt;

These new components to the MySpace Open Platform allow us to not only provide developers with new tools to create distributed applications that are built on top of our social platform, but also to deliver an identity solution that builds on top of the “Open Stack” to provide flexible an extensible options that embrace open standards.&lt;br /&gt;&lt;br /&gt;

OpenID aligned perfectly with MySpaceID as an authentication technology. As a social portal, we already embraced the notion of representing identity with a URL. An overwhelming number of our users have setup vanity URLs (i.e. myspace.com/pixelelated) and so we knew that OpenID would align well with our users. In addition, we wanted to make sure that we were working with the flow of the web, and we strongly believe that collaborating on open standards is critical to this mission.&lt;br /&gt;&lt;br /&gt;

As we worked on our OpenID solution for MySpaceID, we knew that we had to rollout the technology in a way that emphasized a lightweight and simple interface design and user experience. OpenID has wrongly been maligned by a stigma that the technology can’t be easy to use. Our aim was to break that label and demonstrate with our MySpaceID product that OpenID and usability aren’t conflicting terms. Luckily, there was a community ready and willing to help. The progress made at two OpenID Usability Summits helped us refine our implementation and allowed us to leverage the collective knowledge of other OP’s. This is the strength of open standards: the ability to work together to forge ahead and work together to solve a problem.&lt;br /&gt;&lt;br /&gt;

When working on the MySpaceID design, we embraced a pop-up window for login to help make the user experience even easier, and to help the integrating relying party offer a clean hand-off. We support both directed identity as well as standard URL-based discovery, and ultimately feel that by offering modular options to developers we are creating the most value for our users. In addition, by rolling out the OAuth Hybrid extension with this, we can allow our users to provision web service access to their MySpace profile, friends, content, and activities in the same step.&lt;br /&gt;&lt;br /&gt;

Beyond our new enhancements around single-sign on with OpenID, and the rollout of the Hybrid protocol, we are supporting the new Activity Streams specification. A core part of the DNA of MySpaceID is empowering the user to take their data with them. By offering API’s for sharing activities, we’re enabling our users to take their own activities and share them through aggregation and lifestreaming services. In addition, developers can provide a user with a window into their life on MySpace by incorporating the API in Dashboard-style widgets, such as our implementation with the new Yahoo! homepage. With activity sharing, we wanted to go beyond just offering the functionality and ensure that we were working with the community to implement something that could be standardized. We embraced this philosophy when collaborating on the Portable Contacts spec and worked to align it with OpenSocial, and so we were quite comfortable with this model of development.&lt;br /&gt;&lt;br /&gt;

I hope that we have shown that our choice for the technological piping which powers MySpaceID (OpenID, OAuth, Portable Contacts, OpenSocial, and Activity Streams) didn’t negatively impact the experience we could provide. In fact, it was quite the opposite. Our choice to embrace these open standards has given us a more powerful and flexible platform. We’re excited to prove that a MySpace user can visit any site that has integrated MySpaceID and go from a button click to bringing their identity with them, all while doing it in a way that has a clean user experience and puts the user in control of their privacy, security, and data. As an OpenID community, we’ve all worked to make tremendous progress over the past year, and I think we’re only beginning to realize the real potential to empower users through open standards for the social web.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=38560" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/oAuth/default.aspx">oAuth</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/8bitkid/default.aspx">8bitkid</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/myspaceid/default.aspx">myspaceid</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/mop/default.aspx">mop</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/myspaceopenplatform/default.aspx">myspaceopenplatform</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/ActivityStreams/default.aspx">ActivityStreams</category></item><item><title>Content Rewriting in OpenSocial 0.9</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/01/29/Content-Rewriting-in-OpenSocial-0.9.aspx</link><pubDate>Thu, 29 Jan 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:34491</guid><dc:creator>Scott</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=34491</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/01/29/Content-Rewriting-in-OpenSocial-0.9.aspx#comments</comments><description>Content rewriting is a new feature defined for OpenSocial 0.9. It allows a container to optimize some aspects of an application for use within that container. Before I explain what the feature does, we need to take a look at how OpenSocial applications and containers can handle resources. Besides gadget markup, OpenSocial applications reference other files such as: 
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Cascading Style Sheets (CSS)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;JavaScript (JS)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Images&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;To help improve the load time of all applications, reduce the number of requests for resources, or to move resources closer to consumers, a container will want to rewrite application content. For CSS and JS files, the container will minify and cache the file on the container servers. As an application becomes more popular, people at all different locations around the globe might be using that application. The overall user experience can be improved by copying JS, CSS, and image files to the MySpace content distribution network (CDN) and then updating the gadget markup to point to the new file locations.&lt;/p&gt;
&lt;p&gt;As an application developer, you might appreciate this kind of help but will want to control which resources a site like MySpace can cache and which resources must be retrieved from your own servers. Maybe you update a file frequently, customize it based on some parameters, or have some other reason that you want to serve up the file. One thing you do not want is to see a container unilaterally decide to rewrite everything. &lt;/p&gt;
&lt;p&gt;Using these ideas as a framework, the content rewriting feature was added to OpenSocial. This feature is exposed as a gadget feature and has the following general form:&lt;br /&gt;&lt;/p&gt;
&lt;div style="background:white none repeat scroll 0% 0%;font-size:10pt;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;color:black;font-family:Lucida Console;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Optional&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;feature&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;content-rewrite&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;expires&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;86400&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;include-url&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;exclude-url&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;moreexcluded&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;minify-css&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;minify-js&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;minify-html&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Param&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Optional&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The parameters all handle different aspects of rewriting. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;expires: Indicates how many seconds to use as the minimum HTTP cache time for content. The value actually used will be the smaller of expires and the cache control headers present in the fetched content. If the application server indicates that an item should only be cached for one hour and expires states three hours, the item will be cached for one hour. By default, expires is set to one day (86400 seconds). This parameter can only appear once.&lt;/li&gt;
&lt;li&gt;include-url: Indicate which URLs to include in rewriting. To rewrite all GIF references, use &amp;lt;Param name=&amp;quot;include-url&amp;quot;&amp;gt;.gif&amp;lt;/Param&amp;gt;. The string &amp;quot;*&amp;quot; is special and implies all URLs. When not specified, a container uses a default value of &amp;quot;*&amp;quot;. This value may appear multiple times, once per resource. Values here are not case sensitive, meaning that MyAPP.js and myapp.js are equivalent. Regular expressions and globbing (ex: foo*.css) are not supported.&lt;/li&gt;
&lt;li&gt;exclude-url: Indicates which URLs to exclude in rewriting. Otherwise, this follows the same rules as include-url. &lt;/li&gt;
&lt;li&gt;minify-css: Controls whether the container will attempt to minify css is style tags and referenced css files. This may be set to true or false. By default, the value is true.&lt;/li&gt;
&lt;li&gt;minify-js: Controls whether the container will attempt to minify JS in script tags and referenced JS files. This may be set to true or false. By default, the value is true.&lt;/li&gt;
&lt;li&gt;minify-html: Controls whether the container will attempt to minify HTML content. This may be set to true or false. By default, the value is true.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;With all of the minify-* settings, you can exclude/include specific files as needed. Besides all of this, a container may also do the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extract @import directives from style tags and convert them into link tags in the head tag of the containing HTML content.&lt;/li&gt;
&lt;li&gt;Merge multiple CSS fetches from successive link tags into one link tag that causes the proxy to concatenate the content fetched from the individual URLs.&lt;/li&gt;
&lt;li&gt;Merge contiguous &amp;lt;script src=xxx&amp;gt; tags into one concatenating proxy fetch.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The really interesting thing about this particular feature is that you should not need to write your code to worry about whether or not the feature is present in a given container. Go ahead and start using this one now by adding it as an optional feature in your gadget XML. When a container implements the feature, your application will just start seeing the benefit. All you should see is a lighter load on your server for images, CSS, and other resources. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=34491" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category></item><item><title>What's New in MySpace OpenSocial 0.8</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/01/08/what-s-new-in-myspace-opensocial-0-8.aspx</link><pubDate>Thu, 08 Jan 2009 21:09:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:33447</guid><dc:creator>Chad Russell</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=33447</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/01/08/what-s-new-in-myspace-opensocial-0-8.aspx#comments</comments><description>&lt;p&gt;The spec for OpenSocial 0.8 has been finalized and MySpace’s implementation has been released.&amp;nbsp; There are some key benefits that 0.8 adds over 0.7 on the MySpace platform.&amp;nbsp; The JavaScript container more closely conforms to the spec and some MySpace specific extensions have been pulled into the OpenSocial namespace.&amp;nbsp; The result of this is that your 0.8 app will port much more easily to other platforms than your 0.7 app did.&amp;nbsp; The app data API has been cleaned up and made more useful.&lt;/p&gt;
&lt;p&gt;There are also important new features and capabilities on the MySpace platform that are only available to 0.8 apps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open Canvas allows your app to be functional for users even before they have added the app. Learn more about &lt;a href="http://developer.myspace.com/community/myspace/da11.aspx" title="Open Canvas"&gt;Open Canvas&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Custom App Activities allow 0.8 apps to post activities into user Friend Updates. Learn more about &lt;a href="http://developer.myspace.com/Community/blogs/devteam/archive/2008/11/21/beta-release-of-the-myspace-custom-application-activities.aspx" title="Custom App Activities"&gt;Custom App Activities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;App Notifications will allow apps to message their users directly, and will only be available on 0.8&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;In this three part series of articles, I’ll walk you through the process of creating an application from start to finish with emphasis on the six major improvements that distinguish 0.8 from 0.7 on MySpace:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enhancements to the opensocial.Person object&lt;/li&gt;
&lt;li&gt;Our new permission model, dubbed Open Canvas, that makes extensive use of opensocial.hasPermission and opensocial.requestPermission&lt;/li&gt;
&lt;li&gt;Updates to app data to accept only valid JSON&lt;/li&gt;
&lt;li&gt;The deprecation of PostTo in favor of opensocial.requestShareApp and opensocial.requsetSendMessage&lt;/li&gt;
&lt;li&gt;Activities&lt;/li&gt;
&lt;li&gt;App Notifications&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Read &lt;i&gt;What&amp;#39;s New in MySpace OpenSocial 0.8&lt;/i&gt;:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://developer.myspace.com/community/myspace/da13.aspx"&gt;Part 1 - opensocial.Person and JSON application data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.myspace.com/community/myspace/da14.aspx"&gt;Part 2 - Open Canvas and requestSendMessage/requestShareApp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.myspace.com/community/myspace/da15.aspx"&gt;Part 3 - Activities&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=33447" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Example+Code/default.aspx">Example Code</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/documentation/default.aspx">documentation</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Activities/default.aspx">Activities</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/open+canvas/default.aspx">open canvas</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/0.8/default.aspx">0.8</category></item><item><title>OpenSocial 0.9 Albums API</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2009/01/07/opensocial-0-9-albums-api.aspx</link><pubDate>Wed, 07 Jan 2009 16:00:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:33169</guid><dc:creator>Scott</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=33169</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2009/01/07/opensocial-0-9-albums-api.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;One feature we added in OpenSocial 0.9 is Albums. Albums include MediaItems: photos, movies, and songs. Several of the containers out there, including MySpace, already had different views of what an album is. For example, on our platform you can access an album today via the REST URI (/v1/users/[user id]/albums/[album id]) (docs &lt;a class="" href="http://developer.myspace.com/community/RestfulAPIs/resources.aspx"&gt;here&lt;/a&gt;). The big benefit of OpenSocial is that the group standardizes how all this works so that an application written for MySpace using only OpenSocial APIs should work for Orkut, Hi5, Yahoo!, or any other container. Album support was introduced in a few different areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support to the OpenSocial JavaScript library.&lt;/li&gt;
&lt;li&gt;Support to the RESTful API&lt;/li&gt;
&lt;li&gt;Support in the OpenSocial RPC library (an optional part of the spec not supported by MySpace at this time)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Let&amp;#39;s take a look at the required parts of the albums support.&lt;/p&gt;
&lt;h2&gt;JavaScript changes&lt;/h2&gt;
&lt;p&gt;First, we added a bunch of new methods to fetch, add, update, and remove Albums and MediaItems. First, the methods that allow one to fetch information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;opensocial.newFetchAlbumsRequest(idSpec, opt_params)&lt;/b&gt;: Creates an object for DataRequest to request albums. opt_params can specify the following:&lt;/li&gt;
&lt;li&gt;o opensocial.Album.Field.ID - an array of album Ids to fetch (fetch all albums if empty, subject to pagination)&lt;/li&gt;
&lt;li&gt;o opensocial.Album.Field.MEDIA_TYPE - an array of MediaItem.TYPE values to specify the kind of Albums to fetch.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;opensocial.newFetchMediaItemsRequest(idSpec, albumId, opt_params)&lt;/b&gt;: Fetches the list of media items in an Album. opt_params can specify the following:&lt;/li&gt;
&lt;li&gt;o opensocial.MediaItem.ID - an array of media item ids to selectively fetch (fetch all items if empty, subject to pagination)&lt;/li&gt;
&lt;li&gt;o opensocial.MediaItem.MEDIA_TYPE - an array of MediaItem.TYPE values to specify the types of MediaItems to fetch&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The usual Filter / FIRST / MAX technique is available through opt_params for pagination on newFetchAlbumsRequest and newFetchMediaItemsRequest.&lt;/p&gt;
&lt;p&gt;We then added methods to create update, and delete albums and media items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;opensocial.newCreateAlbumRequest(idSpec, album)&lt;/b&gt;: Creates a new album and returns the ID of the album created. Containers implement restrictions - like allowing a viewer to create albums for only him/herself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;opensocial.newCreateMediaItemRequest(idSpec, albumId, mediaItem)&lt;/b&gt;: Creates a new media item in the album and returns the ID of the album created. Containers implement restrictions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;opensocial.newUpdateAlbumRequest(idSpec, albumId, fields)&lt;/b&gt;: Updates the fields specified in the params and returns void. The following fields cannot be set: MEDIA_ITEM_COUNT, OWNER_ID, ID. Containers implement restrictions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;opensocial.newUpdateMediaItemRequest(idSpec, albumId, mediaItemId, fields)&lt;/b&gt;:Updates the fields specified in the params and returns void. The following fields cannot be set: ID, CREATED, ALBUM_ID, FILE_SIZE, NUM_COMMENTS. Containers implement restrictions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;opensocial.newDeleteAlbumRequest(idSpec, albumId)&lt;/b&gt;: Deletes the album specified and returns void. Containers implement restriction.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;opensocial.newDeleteMediaItemRequest(idSpec, albumId, mediaItemId)&lt;/b&gt;: Deletes the album specified and returns void. Containers implement restrictions.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Of course, the objects need values.&amp;nbsp;We added an object and changed a few others. opensocial.Album makes its debut. The object has several fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ID - string, unique identifier for the album&lt;/li&gt;
&lt;li&gt;THUMBNAIL_URL - string, URL to a thumbnail cover of the album&lt;/li&gt;
&lt;li&gt;CAPTION - string, the title of the album&lt;/li&gt;
&lt;li&gt;DESCRIPTION - string, description of the album&lt;/li&gt;
&lt;li&gt;LOCATION - opensocial.Address, location corresponding to the album&lt;/li&gt;
&lt;li&gt;OWNER_ID - string, ID of the owner of the album&lt;/li&gt;
&lt;li&gt;MEDIA_TYPE - array of MediaItem.TYPE, types of MediaItems in the Album&lt;/li&gt;
&lt;li&gt;MEDIA_ITEM_COUNT - integer, number of items in the album&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;opensocial.Activity.MediaItem was renamed to opensocial.MediaItem since it is no longer solely related to Activities. The MediaItem type earned a few new fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ID - string, id Associated with the media item&lt;/li&gt;
&lt;li&gt;CAPTION - string describing the media item&lt;/li&gt;
&lt;li&gt;CREATED - string, creation time associated with the media item - assigned by container in UTC&lt;/li&gt;
&lt;li&gt;LAST_UPDATED - string, update time associated with the media item - assigned by container in UTC&lt;/li&gt;
&lt;li&gt;THUMBNAIL_URL - string, URL to a thumbnail image of the media item&lt;/li&gt;
&lt;li&gt;DESCRIPTION - string, description of the media item&lt;/li&gt;
&lt;li&gt;DURATION - integer, for audio/video clips - playtime length in seconds. set to -1/not defined if unknown&lt;/li&gt;
&lt;li&gt;LOCATION - opensocial.Address, location corresponding to the media item&lt;/li&gt;
&lt;li&gt;LANGUAGE - string, language associated with the media item in ISO 639-3 format&lt;/li&gt;
&lt;li&gt;ALBUM_ID - string, album to which the media item belongs&lt;/li&gt;
&lt;li&gt;FILE_SIZE - long, number of bytes (set to -1/undefined if unknown)&lt;/li&gt;
&lt;li&gt;START_TIME - string, for streaming/live content, time when the content is available&lt;/li&gt;
&lt;li&gt;RATING - integer, average rating of the media item on a scale of 0-10&lt;/li&gt;
&lt;li&gt;NUM_VOTES - integer, number of votes received for voting&lt;/li&gt;
&lt;li&gt;NUM_COMMENTS - integer, number of comments on the photo&lt;/li&gt;
&lt;li&gt;NUM_VIEWS - integer, number of views for the media item&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;RESTful API Changes&lt;/h2&gt;
&lt;p&gt;We added two new XRDS types: Albums and MediaItems. The RESTful API allows one to modify items in the container from external applications or through explicit XMLHttpRequests to the container. All responses from any request always come back wrapped by a Response object. These response objects have two different forms depending on whether or not the query returns a list or a single item. It is permissible for a single item to be returned in the list form. Example:&lt;/p&gt;
&lt;p&gt;application/json representation:&lt;/p&gt;&lt;pre&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
   &lt;font color="#008000"&gt;&amp;quot;startIndex&amp;quot;&lt;/font&gt;:&lt;font color="#ff0000"&gt;1&lt;/font&gt;,
   &lt;font color="#008000"&gt;&amp;quot;itemsPerPage&amp;quot;&lt;/font&gt;:&lt;font color="#ff0000"&gt;10&lt;/font&gt;,
   &lt;font color="#008000"&gt;&amp;quot;totalResults&amp;quot;&lt;/font&gt;:&lt;font color="#ff0000"&gt;100&lt;/font&gt;,
   &lt;font color="#008000"&gt;&amp;quot;entry&amp;quot;&lt;/font&gt;:[
      &lt;font color="#444444"&gt;//{...first item...},&lt;/font&gt;

      &lt;font color="#444444"&gt;//{...second item...},&lt;/font&gt;
      &lt;font color="#444444"&gt;//...&lt;/font&gt;
   ]
&lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;or, for only one item:&lt;/p&gt;&lt;pre&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
  &lt;font color="#008000"&gt;&amp;quot;startIndex&amp;quot;&lt;/font&gt; : &lt;font color="#ff0000"&gt;1&lt;/font&gt;
  &lt;font color="#008000"&gt;&amp;quot;itemsPerPage&amp;quot;&lt;/font&gt; : &lt;font color="#ff0000"&gt;10&lt;/font&gt;

  &lt;font color="#008000"&gt;&amp;quot;totalResults&amp;quot;&lt;/font&gt; : &lt;font color="#ff0000"&gt;100&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;entry&amp;quot;&lt;/font&gt; : &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;...only item...&lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;
&lt;p&gt;The XML representation is&lt;/p&gt;
&lt;div style="FONT-SIZE:10pt;BACKGROUND:white;COLOR:black;FONT-FAMILY:Lucida Console;"&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;response&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;startIndex&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt; 1 &lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;startIndex&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;itemsPerPage&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;itemsPerPage&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;totalResults&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp; &amp;nbsp; 100&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;totalResults&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;entry&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;...first item...&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;entry&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;entry&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;...second item...&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;entry&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp; ...&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;response&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Any responses coming back from the RESTful API will be wrapped as shown above. You can execute different HTTP verbs against the albums API and get different results. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A GET on /albums/@me/@self with yield an array of Albums&lt;/li&gt;
&lt;li&gt;A POST on /albums/@me/@self will create a new Album&lt;/li&gt;
&lt;li&gt;A GET on /albums/@me/@self/albumId with return only that specific album&lt;/li&gt;
&lt;li&gt;A PUT on /albums/@me/@self/albumId will update the album&lt;/li&gt;
&lt;li&gt;A DELETE on /albums/@me/@self/albumId will delete the album&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The returned Album will be wrapped by the response shown earlier. Getting an album, you will see something like this:&lt;/p&gt;
&lt;p&gt;application/json representation:&lt;/p&gt;&lt;pre&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
  &lt;font color="#008000"&gt;&amp;quot;id&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;44332211&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;thumbnailUrl&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;http://pages.example.org/albums/4433221-tn.png&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;caption&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;Example Album&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;description&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;This is an example album, and this text is an example description&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;location&amp;quot;&lt;/font&gt; : &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt; &lt;font color="#008000"&gt;&amp;quot;latitude&amp;quot;&lt;/font&gt;: &lt;font color="#ff0000"&gt;0&lt;/font&gt;, &lt;font color="#008000"&gt;&amp;quot;longitude&amp;quot;&lt;/font&gt;: &lt;font color="#ff0000"&gt;0&lt;/font&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;ownerId&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;example.org:55443322&amp;quot;&lt;/font&gt;

&lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;/pre&gt;
&lt;p&gt;application/xml representation:&lt;/p&gt;
&lt;div style="FONT-SIZE:10pt;BACKGROUND:white;COLOR:black;FONT-FAMILY:Lucida Console;"&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;album&lt;/span&gt;&lt;span style="COLOR:blue;"&gt; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;http://ns.opensocial.org/2008/opensocial&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;44332211&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;thumbnailUrl&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;http://pages.example.org/albums/4433221-tn.png&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;thumbnailUrl&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;caption&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;Example Album&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;caption&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;description&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;This is an example album, and this text is an example description&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;description&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;location&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;latitude&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;latitude&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;longitude&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;longitude&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;location&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ownerId&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;example.org:55443322&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ownerId&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;album&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Once you have an album and its ID, you will want to retrieve its contents. The contents of the albums are MediaItems. Like the Album API, a different combination of HTTP verb and URL gives different results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A GET on /mediaitems/@me/@self/albumId with return the media items in the album&lt;/li&gt;
&lt;li&gt;A POST on /mediaitems/@me/@self/albumId can be used to create a new media item&lt;/li&gt;
&lt;li&gt;A GET on /mediaitems/@me/@self/albumId/mediaItemId will return the media item&lt;/li&gt;
&lt;li&gt;A PUT on /mediaitems/@me/@self/albumId/mediaItemId will update the media item&lt;/li&gt;
&lt;li&gt;A DELETE on /mediaitems/@me/@self/albumId/mediaItemId will delete the mediaItem&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Each MediaItem will be wrapped in a response, looking something like this:&lt;/p&gt;
&lt;p&gt;application/json representation:&lt;/p&gt;&lt;pre&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
  &lt;font color="#008000"&gt;&amp;quot;id&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;11223344&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;thumbnail_url&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;http://pages.example.org/images/11223344-tn.png&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;mime_type&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;image/png&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;type&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;image&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;url&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;http://pages.example.org/images/11223344.png&amp;quot;&lt;/font&gt;,
  &lt;font color="#008000"&gt;&amp;quot;album_id&amp;quot;&lt;/font&gt; : &lt;font color="#008000"&gt;&amp;quot;44332211&amp;quot;&lt;/font&gt;

&lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;


&lt;/pre&gt;
&lt;p&gt;application/xml representation:&lt;/p&gt;
&lt;div style="FONT-SIZE:10pt;BACKGROUND:white;COLOR:black;FONT-FAMILY:Lucida Console;"&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;MediaItem&lt;/span&gt;&lt;span style="COLOR:blue;"&gt; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;http://ns.opensocial.org/2008/opensocial&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;11223344&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;thumbnail_url&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;http://pages.example.org/images/11223344-tn.png&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;thumbnail_url&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;mimeType&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;image/png&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;mimeType&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;type&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;image&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;type&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;url&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;http://pages.example.org/images/11223344.png&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;url&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;albumId&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;44332211&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;albumId&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;MediaItem&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;OK-- that&amp;#39;s a&amp;nbsp;lot to digest. &lt;/p&gt;
&lt;p&gt;As always, if you want to join the discussion on OpenSocial and how it is evolving, please join the container developers (we need more application developers in this conversation!) at &lt;a href="http://groups.google.com/group/opensocial-and-gadgets-spec?hl=en"&gt;http://groups.google.com/group/opensocial-and-gadgets-spec?hl=en&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=33169" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category></item><item><title>Looking Forward to OpenSocial 0.9</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2008/12/17/looking-forward-to-opensocial-0-9.aspx</link><pubDate>Wed, 17 Dec 2008 22:00:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:30371</guid><dc:creator>Scott</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=30371</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2008/12/17/looking-forward-to-opensocial-0-9.aspx#comments</comments><description>&lt;p&gt;The OpenSocial 0.9 draft has been defined. We are awaiting prototypes of all the new features before we declare the draft final. That means that, unless the spec is ambiguous or impossible to implement, the documentation is largely done. The set of changes accepted into 0.9 include some major additions to OpenSocial as a common platform. Given that platforms using OpenSocial touch over 600 million users (&lt;a href="http://www.techcrunch.com/2008/11/13/open-social-turns-one-my-how-youve-grown/"&gt;source&lt;/a&gt;), the changes effect a lot of people. The platform is open, meaning that it is guided by the community instead of by a single entity. &lt;/p&gt;
&lt;p&gt;For v.NEXT, you are all invited to participate in the discussion we will continue to have at &lt;a href="http://groups.google.com/group/opensocial-and-gadgets-spec/topics?hl=en"&gt;http://groups.google.com/group/opensocial-and-gadgets-spec/topics?hl=en&lt;/a&gt;. We really do need and want more developers to participate. Suggest features you would like to see. Tell the container developers that you love/hate an idea. Participate! A spec cycle lasts 3-4 months. During that time we: propose new features (6-8 weeks); discuss, refine, and vote on proposals (2-3 weeks); write a draft spec (2 weeks); review and vote on the draft (1 week). To be accepted, an item needs at least 5 votes for the feature and no votes against the feature. Because the process is open (as in open source), anyone can participate. &lt;/p&gt;
&lt;p&gt;So, what do we have in store for you in 0.9 in terms of accepted proposals? The changes fall in a few different buckets: cleanup from previous iterations, enhancements to existing features, and introduction of brand new items. Oh yes, we are also deprecating some features as well. Note I said deprecating, not eliminating. As such, you shouldn&amp;#39;t worry about features being removed. That will happen in the future and you will be warned when it happens. &lt;/p&gt;
&lt;p&gt;Over the next couple weeks, I want to spend some time going over the changes that are coming up. In most cases, we build on the platform or simplify things. To give you a taste of what I&amp;#39;ll be talking about, here is the list of changes coming in 0.9:&lt;/p&gt;
&lt;p&gt;Changes/clarifications to existing features&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Activity Paging: Added a class, opensocial.DataRequest.ActivityRequestFields, that has two values: FIRST and MAX. FIRST specifies the first item to fetch from the activity, MAX indicates how many to retrieve at once.&lt;/li&gt;
&lt;li&gt;Align JS API and REST: The REST spec sees the Address element get updated to understand LATITUDE, LONGITUDE, and TYPE. Why? Not all locations have street addresses. And, the nearest street might be hundreds of miles away. Type is there to make labeling of addresses easier.&lt;/li&gt;
&lt;li&gt;Align Portable Contacts and REST: Add language to the REST spec stating that we will work with the Portable Contacts folks to keep our specifications aligned. They did the same thing in their spec.&lt;/li&gt;
&lt;li&gt;Anonymous Viewer: The spec did not say what the VIEWER ID should be if the VIEWER hasn&amp;#39;t logged in. Most of the containers had decided that the value should be -1. Now, the spec will say that too.&lt;/li&gt;
&lt;li&gt;Change to osapi:recipient format: The messaging part of the API did not give a way to indicate if a message was intended for a person (Scott) or a group (Scott&amp;#39;s Top Friends). We added a string to the REST API saying that the ID can indicate the type of ID as group or person. &lt;/li&gt;
&lt;li&gt;Clarify timing of callback execution in JS API: In some implementations, the callback might get called before the function to get data had returned. In others, the callback was always called later. This caused buggy behavior when switching platforms. So, in 0.9, we decided that the callback function will not be called until after the existing call stack has completed. (i.e. window.setTimeout(&amp;lt;callback closure&amp;gt;, 0);).&lt;/li&gt;
&lt;li&gt;Implementing IS FRIENDS WITH: The 0.8.1 REST spec didn&amp;#39;t say how to figure out how two people are friends. 0.9 will. Here is what we decided:&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;To determine if two people are friends: &lt;/p&gt;
&lt;p&gt;&amp;nbsp; /people/@me/@self?filterBy=@friends&amp;amp;filterOp=contains&amp;amp;filtervalue=&amp;lt;someUserid&amp;gt;&lt;/p&gt;
&lt;p&gt;To find mutual friends between two user IDs &lt;/p&gt;
&lt;p&gt;&amp;nbsp;/people/@me/@friends?filterBy=@friends&amp;amp;filterOp=contains&amp;amp;filterValue=&amp;lt;someuserid&amp;gt;&lt;/p&gt;
&lt;p&gt;filterValue can take a specific person identifier or @owner or @viewer &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Radically simplify the Persistence/AppData API: Essentially, once you have a Person object, you can call getAppData(key) to get a specific piece of AppData. &lt;/li&gt;
&lt;li&gt;registerOnLoadHandler: Spec was silent on what happened if the gadgets.util.registerOnLoadHandler was called many times. Now, it says that all functions will be called in the order they were added. &lt;/li&gt;
&lt;li&gt;requestShareApp and requestSendMessage should use IdSpec: These were the only two functions in the existing API that took user IDs as strings instead of an IdSpec. Now, they take an IdSpec instead.&lt;/li&gt;
&lt;li&gt;Resolve Schema with Portable Contacts: A stated goal of Portable Contacts and OpenSocial as that the Person and related objects should be compatible. We worked with the Portable Contacts folks to make sure that are schema is compatible.&lt;/li&gt;
&lt;li&gt;Specify ownership of the page fragment identifier in the spec: The specification didn&amp;#39;t say who owns the # portion of the ID. In reality, the containers all own it for various reasons. (See &lt;a href="http://developer.myspace.com/Community/blogs/devteam/archive/2008/11/21/working-with-relative-links.aspx"&gt;here&lt;/a&gt; for how to work around this.)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;New Features (that will be the subject of my next series of posts):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Albums API&lt;/li&gt;
&lt;li&gt;Content Rewriter Feature&lt;/li&gt;
&lt;li&gt;Gadgets Log&lt;/li&gt;
&lt;li&gt;International Date Time Number Formatting&lt;/li&gt;
&lt;li&gt;Lightweight JS APIs&lt;/li&gt;
&lt;li&gt;Limited Invalidation&lt;/li&gt;
&lt;li&gt;Messaging API Changes&lt;/li&gt;
&lt;li&gt;Min age metadata for ModulePrefs&lt;/li&gt;
&lt;li&gt;OAuth Popup&lt;/li&gt;
&lt;li&gt;OSML Tags&lt;/li&gt;
&lt;li&gt;OpenSocial Templates&lt;/li&gt;
&lt;li&gt;Overloading meaning of view&lt;/li&gt;
&lt;li&gt;Proxied Content&lt;/li&gt;
&lt;li&gt;UserPrefs for REST API&lt;/li&gt;
&lt;li&gt;Versioning Applications&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I&amp;#39;ll work through the features, no more than 1000 words at a time. Some of these will be easy to explain, some more lengthy. &lt;/p&gt;
&lt;p&gt;Finally, I want you to know that we are working hard to support these features. Every time we launch new features to better align with OpenSocial, we will broadcast where we are at. &lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=30371" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/REST/default.aspx">REST</category></item><item><title>Understanding opensocial.IdSpec</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2008/12/01/understanding-opensocial-idspec.aspx</link><pubDate>Mon, 01 Dec 2008 18:00:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:30078</guid><dc:creator>Scott</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=30078</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2008/12/01/understanding-opensocial-idspec.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;The latest iteration of OpenSocial on MySpace, OpenSocial 0.8, sets a number of places where you now need to understand this JavaScript class known as opensocial.IdSpec. Before, when you needed something like the viewer or owner from an OpenSocial 0.7 method, you would just pass a string indicating &amp;#39;VIEWER&amp;#39; or &amp;#39;OWNER&amp;#39; and all would be fine. However, to make the ids more informative and to allow for passing IDs that belong to people or groups, the IdSpec was created. Many methods in OpenSocial take an IdSpec as a parameter. Let’s take a simple example (simple because I happen to have the 0.7 and 0.8 version handy!). In 0.7, if I wanted to get a list of the viewer’s friends and display that list to an HTML select control, I would have the following BLOCKED SCRIPT&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Courier New" size="3"&gt;function loadFriends(selectId) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var friendSelect = document.getElementById(selectId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var dr = opensocial.newDataRequest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pplReq = dr.newFetchPeopleRequest(&amp;#39;VIEWER_FRIENDS&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dr.add(pplReq, &amp;#39;fetchPeople&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dr.send(function(response) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ppl = response.get(&amp;#39;fetchPeople&amp;#39;).getData().asArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var html = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; ppl.length; ++i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var person = ppl[ i ];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html += &amp;quot;&amp;lt;option id=&amp;#39;&amp;quot; + person.getField(opensocial.Person.Field.ID) + &amp;quot;&amp;#39; value=&amp;#39;&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; person.getDisplayName() + &amp;quot;&amp;#39;&amp;gt;&amp;quot; + person.getDisplayName() + &amp;quot;: &amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; person.getField(opensocial.Person.Field.ID) + &amp;quot;&amp;lt;/option&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; friendSelect.innerHTML = html;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;In that code, note that to access the list of friends, I just pass in the string &amp;#39;VIEWER_FRIENDS&amp;#39; and everything works. For 0.8, the code needs a modest change. It needs an IdSpec. The code to create the DataRequest and FetchPeopleRequest becomes either&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;var dr = opensocial.newDataRequest();&lt;br /&gt;var params = {};&lt;br /&gt;params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;&lt;br /&gt;params[opensocial.IdSpec.Field.GROUP_ID] = opensocial.IdSpec.GroupId.FRIENDS;&lt;br /&gt;var idspec = opensocial.newIdSpec(params);&lt;br /&gt;var pplReq = dr.newFetchPeopleRequest(idspec);&lt;br /&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;or, to get the friends whose network distance is 1 from the viewer (just the immediate friends), you can use:&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;var dr = opensocial.newDataRequest();&lt;br /&gt;var params = {};&lt;br /&gt;params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;&lt;br /&gt;params[opensocial.IdSpec.Field.NETWORK_DISTANCE] = 1;&lt;br /&gt;var idspec = opensocial.newIdSpec(params);&lt;br /&gt;var pplReq = dr.newFetchPeopleRequest(idspec);&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;This is a bit more wordy, but it allows for a uniform API across the methods that accept an IdSpec. For a full explanation of the mapping from the 0.7 to the 0.8 API, please see the &lt;/font&gt;&lt;a href="http://developer.myspace.com/community/myspace/da8.aspx"&gt;&lt;font face="Calibri" size="3"&gt;OpenSocial v0.8 Breaking Changes Document&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri" size="3"&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=30078" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category></item><item><title>NOTABLE MUSING – OpenID, OAuth, and User Experience</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2008/10/25/notable-musing-openid-oauth-and-user-experience.aspx</link><pubDate>Sat, 25 Oct 2008 20:53:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:25455</guid><dc:creator>Allen</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=25455</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2008/10/25/notable-musing-openid-oauth-and-user-experience.aspx#comments</comments><description>&lt;p&gt;I believe OpenID is turning the corner into the ‘mainstream’.&amp;nbsp; More importantly, I believe the “Open Stack” is starting to blossom here at MySpace!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3200/2960562188_53bdcfe598.jpg?v=0" alt="OpenID OAUTH UX Summit" align="" border="" height="375" hspace="" width="500" /&gt;&lt;br /&gt;&lt;br /&gt;[Photo Credit: John McCrea]&lt;/p&gt;&lt;p&gt;While I’ve been intrigued with OpenID since I first saw it added to LiveJournal in 2005, I never quite knew how it would “cross-over” into the mass adoption.&amp;nbsp; I was always concerned by the obvious problem I refer to as the OpenID ‘chicken-or-the-egg’ problem (a.k.a. ‘provider-or-the-consumer’). Obviously, the correct answer – strive to be both! &amp;nbsp;&lt;/p&gt;&lt;p&gt;Let me be the first to probably say it out loud in plain English – it’s often feels easier for the businesses implementing OpenID to start by being a provider.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This is based on two things:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Companies are just evolving from the former Internet era where we had ‘My Network and your Network versus their Network’ – now we are quickly moving into the ‘Cloud’. We are seeing network walls and walled gardens begin to open&lt;/li&gt;&lt;li&gt;Most companies believe their brand is the strongest with the largest reach therefore it’s best to be the provider.&amp;nbsp; This is perfectly ok at this stage because there will be, when it makes sense, a natural distribution of consumers, providers, and both.&amp;nbsp; As OpenID becomes mainstream we will see sites use OpenID with the methods that fit their particular business needs. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;OpenID and OAuth are not only evolving in code, but also in User Experience (a.k.a. ease of use).&amp;nbsp; Thanks to Yahoo, Google, Plaxo, and many others (including our very own Max Engel) there was major progress on the cognitive usage patterns of using OpenID and OAuth.&amp;nbsp; Yahoo hosted the OpenID/OAuth UX Summit last week at their main campus - Thank you Yahoo!&lt;/p&gt;&lt;p&gt;You can also watch the recap of the &lt;a href="http://therealmccrea.com/2008/10/20/live-blogging-the-openidoauth-ux-summit/" title="OpenID OAuth UX Summit" target="_blank"&gt;live blogging during the &amp;quot;OpenID / OAuth UX Summit&amp;quot;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;John McCrea, the author of the live blog above, works at Plaxo, helping to pioneer “Open Stack” thru his work co-authoring the Portable Contacts specification, and co-hosts a technology show -- thesocialweb.tv.&lt;br /&gt;John was also a guest journalist on TechCrunch this week. &lt;/p&gt;&lt;p&gt;You can read his &lt;b&gt;&lt;u&gt;GREAT&lt;/u&gt;&lt;/b&gt; post &lt;a href="http://www.techcrunchit.com/2008/10/22/facebook-connect-and-openid-relationship-status-%E2%80%9Cit%E2%80%99s-complicated%E2%80%9D/" title="John McCrea" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can also &lt;a href="http://www.viddler.com/explore/redgee/videos/26/" title="TheSocialWeb TV" target="_blank"&gt;watch “TheSocialWeb” TV episode about the UX Summit&lt;/a&gt; below
&lt;/p&gt;
&lt;p&gt;Please make sure you read the two OpenID Usability Studies from &lt;a href="http://developer.yahoo.net/blog/archives/2008/10/open_id_research.html" title="Yahoo OpenID" target="_blank"&gt;Yahoo&lt;/a&gt; and &lt;a href="http://sites.google.com/site/oauthgoog/UXFedLogin/CombineGoogYahoo" title="Google OpenID Case Study" target="_blank"&gt;Google&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This week Chris Messina (also a co-host on thesocialweb.tv) was the first to notice the &lt;a href="http://www.readwriteweb.com/archives/openid_day_coming_soon_for_mys.php" title="MySpace&amp;#39;s OpenID Progress" target="_blank"&gt;progress MySpace is making&lt;/a&gt; on our own implementation of OpenID.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As we approach the &lt;a href="http://developer.myspace.com/Community/blogs/devteam/archive/2008/10/20/save-the-date-nov-13th-2008-myspace-san-francisco-office-opensocial-1st-birthday-celebration.aspx" title="1st Birthday of OpenSocial"&gt;1st Birthday of OpenSocial&lt;/a&gt; it’s important to reflect on all the progress and excitement I’ve seen at MySpace to make sure we provide our large platform to help not only our users, but the developer community to evolve our platform.&amp;nbsp; MySpace is using it’s stable of “Open Stack” technologies including OpenSocial, OAuth, OpenID, Microformats (including XFN), XDRS, Portable Contacts to build a robust Developer Platform that extends our “social affiliation” to 3rd party sites using &lt;a href="http://developer.myspace.com/Community/blogs/devteam/archive/tags/data+availability/default.aspx" title="Data Availability" target="_blank"&gt;Data Availability&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can see blog post David Recordon (also a co-host of thesocialweb.tv) made on September 27th, 2008 &lt;a href="http://daveman692.livejournal.com/341074.html" title="David Recordon - Blog" target="_blank"&gt;One of these isn&amp;#39;t quite like the others...&lt;/a&gt; that many companies are adopting the &amp;quot;Open Stack&amp;quot;.&amp;nbsp; From reading&amp;#39;s John McCrea&amp;#39;s TechCrunch article you can also see that progress is being made between &amp;quot;Open Stack&amp;quot; participants and those building a simlary but proprietary stack.&lt;/p&gt;&lt;p&gt;&lt;img src="http://pics.livejournal.com/daveman692/pic/001tktd8/s640x480" alt="David Recordon" align="" border="" height="400" hspace="" width="500" /&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;[Image Credit: David Recordon] &lt;br /&gt;&lt;/p&gt;&lt;p&gt;The most exciting part for me is seeing several companies trying similar concepts some in agreement and some in contrast, but knowing together we are advancing the over all social web &lt;/p&gt;&lt;p&gt;In my personal opinion, I believe we need to work hard to make sure it continues to get easier to program the web.&amp;nbsp; We have a chance to make sure there isn’t a huge switching cost in social and cloud computing.&amp;nbsp; I’m constantly amazed at the level of collaboration going to advance this cause - TOGETHER!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=25455" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenID/default.aspx">OpenID</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/oAuth/default.aspx">oAuth</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/data+availability/default.aspx">data availability</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Google/default.aspx">Google</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/MySpace/default.aspx">MySpace</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Yahoo/default.aspx">Yahoo</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/UX+Summit/default.aspx">UX Summit</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Plaxo/default.aspx">Plaxo</category></item><item><title>SAVE-THE-DATE: THUR, NOV 13th, 2008 – MySpace San Francisco Office – OpenSocial - 1st Birthday Celebration</title><link>http://developer.myspace.com/community/blogs/devteam/archive/2008/10/20/save-the-date-nov-13th-2008-myspace-san-francisco-office-opensocial-1st-birthday-celebration.aspx</link><pubDate>Tue, 21 Oct 2008 03:13:00 GMT</pubDate><guid isPermaLink="false">8e485011-333f-425c-b84a-1febdb8bfab0:24869</guid><dc:creator>Allen</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developer.myspace.com/community/blogs/devteam/rsscomments.aspx?PostID=24869</wfw:commentRss><comments>http://developer.myspace.com/community/blogs/devteam/archive/2008/10/20/save-the-date-nov-13th-2008-myspace-san-francisco-office-opensocial-1st-birthday-celebration.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;OCCASION:&lt;/b&gt; OpenSocial&amp;#39;s First Birthday! &lt;br /&gt;&lt;b&gt;DATE:&lt;/b&gt; Thursday, November 13th, 2008 at the MySpace &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=625+2nd+St,+San+Francisco,+CA+94107+%28MySpace+San+Francisco%29&amp;amp;sll=37.820972,-122.391644&amp;amp;sspn=0.079055,0.177841&amp;amp;ie=UTF8&amp;amp;ll=37.782163,-122.391665&amp;amp;spn=0.009887,0.02223&amp;amp;z=16&amp;amp;iwloc=addr" title="San Francisco Offices"&gt;San Francisco Offices&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Hard to believe, but OpenSocial is just a few weeks shy of being a full year old! To celebrate, we&amp;#39;re getting together to look back on the great progress we&amp;#39;ve all made in the past year and to discuss where we should take OpenSocial next. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;And of course, we&amp;#39;ll eat birthday cake!!!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You&amp;#39;re invited! The event, which is free and open to anyone, will be on Thursday, November 13th, and is being hosted in San Francisco at &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=625+2nd+St,+San+Francisco,+CA+94107+%28MySpace+San+Francisco%29&amp;amp;sll=37.820972,-122.391644&amp;amp;sspn=0.079055,0.177841&amp;amp;ie=UTF8&amp;amp;ll=37.782163,-122.391665&amp;amp;spn=0.009887,0.02223&amp;amp;z=16&amp;amp;iwloc=addr" title="MySpace&amp;#39;s SOMA Office" target="_blank"&gt;MySpace&amp;#39;s SOMA office&lt;/a&gt;. &lt;br /&gt;Developers, containers, and API designers alike have done a lot, even since the &lt;a href="https://docs.google.com/View?docID=dds2mvj3_1vxvsnzfd&amp;amp;revision=_latest" title="OpenSocial Summit in May" target="_blank"&gt;OpenSocial Summit in May&lt;/a&gt;, and we&amp;#39;re excited about showcasing the cool stuff developers have done, talk about recent container launches, and discuss the future evolution of the spec. &lt;/p&gt;&lt;p&gt;The day will include:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;-&amp;nbsp; Application developers talking about their experience developing with OpenSocial Discussions and demos of the latest spec proposals (e.g. &lt;b&gt;&lt;a href="http://www.opensocial-templates.org/" title="OpenSocial Templates" target="_blank"&gt;OpenSocial Templates&lt;/a&gt;&lt;/b&gt;)&lt;br /&gt;-&amp;nbsp; Updates from OpenSocial containers such as MySpace, Yahoo!, orkut and iGoogle&lt;br /&gt;-&amp;nbsp; Hacking! Yes, lots of time for programming with numerous experts on hand.&lt;br /&gt;-&amp;nbsp; Partying! I already mentioned birthday cake, right?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We&amp;#39;ll provide food, drink, and the Hi-Fidelity Internets (a.k.a. Wi-Fi). Doors will open at 10 am, and we&amp;#39;ll finish off in the evening with a proper birthday party and social hour, so bring your party hat and get ready to code.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you have any questions, comments or suggestions for the event, please visit the &lt;a href="http://groups.google.com/group/opensocial-community/topics" title="OpenSocial Community Forum (on Google)" target="_blank"&gt;OpenSocial community forum&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you&amp;#39;re going to be joining us, please help us plan by &lt;a href="http://www.opensocial.org/opensocial-foundation/opensocial-birthday-rsvp" title="RSVP for OpenSocial&amp;#39;s 1st Birthday" target="_blank"&gt;RSVP&amp;#39;ing for the event&lt;/a&gt;! &lt;/p&gt;&lt;p&gt;Posted by &lt;a href="http://www.myspace.com/allen?rel=me" title="MySpace Allen Hurff Page (with XFN)" target="_blank"&gt;Allen Hurff&lt;/a&gt;, on behalf of the &lt;a href="http://www.opensocial.org/opensocial-foundation" title="OpenSocial Foundation&amp;#39;s FAQ" target="_blank"&gt;OpenSocial Foundation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Other Links: &lt;a href="http://opensocialapis.blogspot.com/2008/10/youre-invited-opensocials-first.html" title="Google&amp;#39;s OpenSocial 1st Birthday Celebration Post" target="_blank"&gt;Google&amp;#39;s OpenSocial - 1st Birthday Celebration Post&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://developer.myspace.com/community/aggbug.aspx?PostID=24869" width="1" height="1"&gt;</description><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/OpenSocial/default.aspx">OpenSocial</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Google/default.aspx">Google</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/MySpace/default.aspx">MySpace</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Yahoo/default.aspx">Yahoo</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/MDP/default.aspx">MDP</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Birthday/default.aspx">Birthday</category><category domain="http://developer.myspace.com/community/blogs/devteam/archive/tags/Party/default.aspx">Party</category></item></channel></rss>