<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Blogging Roller</title>
  <link>https://rollerweblogger.org/roller/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://rollerweblogger.org/roller/feed/entries/rss?tags=opensocial" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Tue, 28 Apr 2026 07:02:22 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/re_rdf_and_opensocial</guid>
    <title>re: RDF and OpenSocial</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/re_rdf_and_opensocial</link>
    <pubDate>Fri, 3 Dec 2010 08:22:48 +0000</pubDate>
    <category>Social Software</category>
    <category>jazz</category>
    <category>linkeddata</category>
    <category>opensocial</category>
    <category>oslc</category>
    <category>rdf</category>
<description>&lt;p&gt;This is the closest thing to a blog post that I&amp;#39;ve written lately, a post to the &lt;a href=&quot;http://groups.google.com/group/opensocial-and-gadgets-spec/topics&quot;&gt;OpenSocial specification group&lt;/a&gt; on aligning OpenSocial with RDF and Linked Data:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a topic of interest to me, so I&amp;#39;ll try to elaborate. 

&lt;p&gt;First, I want to point out that RDF is not a representation, it&amp;#39;s a way to model data and it&amp;#39;s multiple ways to represent that data (in 
XML, JSON, etc.). I think the real question is: how do we enable OpenSocial to hook into the RDF-based web of &amp;quot;Linked Data&amp;quot; that is 
rapidly growing up around scientific data, government open data and the academic world. I&amp;#39;m not going to go into the benefits of Linked 
Data in this post, but I will disclose that I work for a company that uses RDF as a common data model to enable loosely coupled integration across our web application products (see also Jazz Integration Architecture [1] and OSLC [2]). We&amp;#39;d like to be able to integrate with OpenSocial services in the same ways. &lt;/p&gt;

&lt;p&gt;I&amp;#39;ll explain the basics of RDF.  RDF is way to model web data and ways to represent that data in XML, JSON, Turtle, etc. The RDF data model is simple, we have resources identified by URIs and property values associated with those resources. Resources can have types, each type is identified by a URI. Property types have URIs too. Once you have defined your data model in terms of RDF types and properties, you can represent resources and their properties using RDF representations. There&amp;#39;s RDF/XML for XML, there&amp;#39;s RDFa for embedding properties in HTML. There&amp;#39;s are JSON representations too, but not a standard for JSON yet.&lt;/p&gt;

&lt;p&gt;So, to bring OpenSocial in-line with the world of Linked Data, we would define each class of OpenSocial objects as an RDF type, with a URI. We would define each OpenSocial property as an RDF property, with a URI. In some cases, we&amp;#39;ll want to use existing properties, like the Dublin Core title, name, etc., and in some cases we&amp;#39;ll want to define entirely new types and properties. &lt;/p&gt;

&lt;p&gt;As a starting point, I think we would do the following: &lt;/p&gt;

&lt;p&gt;* In OpenSocial v2, we would define all OpenSocial objects and properties as RDF types in the OpenSocial Specs. This means simply 
assigning a URI to every class and every property we define, using standard properties where appropriate and defining new ones as needed. Object and property names would rename the same and we&amp;#39;d have what is essentially an RDF mapping built into the spec. Existing OpenSocial representation formats would stay the same, but we&amp;#39;d add some new RDF representations.&lt;/p&gt;

&lt;p&gt;* We&amp;#39;d introduce an optional new OpenSocial spec that services MAY implement: the OpenSocial RDF Specification. The specification would simply require that a service provide RDF representations of it&amp;#39;s resources via content-negotiation. The service could offer RDF/XML or HTML with RDFa, JSON/RDF or all of the above.&lt;/p&gt;

&lt;p&gt; That&amp;#39;s a starting point and I think we could come up with some other ideas if we thought more about use cases. Anybody else interested in aligning the worlds of OpenSocial and Linked Data? &lt;/p&gt;
&lt;/p&gt;&lt;/blockquote&gt;

Link: &lt;a href=&quot;http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/20f62d627003509b#&quot;&gt;RDF and OpenSocial&lt;/a&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/opensocial_state_of_the_union</guid>
    <title>OpenSocial State of the Union 2010</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/opensocial_state_of_the_union</link>
    <pubDate>Mon, 24 May 2010 22:19:34 +0000</pubDate>
    <category>IBM</category>
    <category>opensocial</category>
<description>&lt;img style=&quot;float:right;&quot; src=&quot;http://rollerweblogger.org/roller/mediaresource/03bd5f1a-bf7d-4690-8ba7-d1bfc3f60ef2&quot;&gt;

&lt;p&gt;Here&amp;#39;s summary of last week&amp;#39;s OpenSocial State of the Union, including news of two new board members: Cody Simms from Yahoo and Jason Gary from IBM:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.opensocial.org/2010/05/opensocial-state-of-union-2010-recap.html&quot;&gt;Mark Weitzel&lt;/a&gt; (on behalf of the OpenSocial Foundation): The event started off with introductions of the Foundation Board members and officers. Cody Simms is Yahoo!&#146;s corporate designate. IBM is a new corporate member and has designated Jason Gary as their representatives. Welcome Cody and Jason. The complete list of your Foundation Officers and Board Members is in the &lt;a href=&quot;http://www.opensocial.org/page/opensocial-foundation-faq&quot;&gt;FAQs&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;In addition to new corporate members of the OpenSocial Foundation Board, there are two community seats available. Anyone is able to serve on the board. The only requirement to nominate or hold the position is that you must be a member of the OpenSocial Foundation. There are no membership fees to join OpenSocial. All you need to do is fill out a simple &lt;a href=&quot;http://www.opensocial.org/opensocial-foundation/osf-membership-app.html&quot;&gt;on-line membership application&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It&#146;s been an exciting year and a half for OpenSocial! We&#146;ve seen continued adoption of the specification as new containers come on line. Perhaps what is more interesting is that we are starting to see OpenSocial adoption outside of &#147;traditional&#148; social networks. This includes adoption by enterprise vendors such as Jive, Atlassian, and IBM.&lt;/p&gt;
&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/SnoopdavesSharedItemsInGoogleReader/~4/bY0xjsSD1DA&quot; width=&quot;1&quot;&gt;
&lt;/blockquote&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/ibm_talking_opensocial_googleio</guid>
    <title>IBM talking OpenSocial at Google I/O</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/ibm_talking_opensocial_googleio</link>
    <pubDate>Wed, 12 May 2010 11:52:04 +0000</pubDate>
    <category>IBM</category>
    <category>google</category>
    <category>googleio</category>
    <category>jazz</category>
    <category>opensocial</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/03bd5f1a-bf7d-4690-8ba7-d1bfc3f60ef2&quot; alt=&quot;opensocial logo&quot; style=&quot;float:right;&quot;&gt;

&lt;p&gt;IBM is going to be at Google I/O again this year, talking about &lt;a href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; and giving demos of new OpenSocial features in IBM products. Randy Hudson of IBM/Rational will be there to show how OpenSocial Gadgets can be used in Jazz-based product dashboards (introduced in &lt;a href=&quot;https://jazz.net/downloads/jazz-foundation/milestones/3.0M5?p=news&quot;&gt;Jazz Foundation 3.0 Milestone 5&lt;/a&gt;). 
&lt;/p&gt;

&lt;p&gt;And IBM&amp;#39;s Mark Weitzel, who happens to be an officer of the OpenSocial Foundation, will participate in panel discussion on &lt;a href=&quot;http://code.google.com/events/io/2010/sessions/opensocial-enterprise-panel.html&quot;&gt;Best practices for implementing OpenSocial in the Enterprise&lt;/a&gt;. &lt;/p&gt; 

&lt;blockquote&gt;
&lt;strong&gt;&lt;a href=&quot;http://code.google.com/events/io/2010/sessions/opensocial-enterprise-panel.html&quot;&gt;Best practices for implementing OpenSocial in the Enterprise&lt;/a&gt;&lt;/strong&gt; 
&lt;p&gt;Social Web, Enterprise - 
  Mark Weitzel, Matt Tucker, Mark Halvorson, Helen Chen, Chris Schalk&lt;/p&gt; 
&lt;p&gt;Enterprise deployments of OpenSocial technologies brings an additional set of considerations that may not be apparent in a traditional social network implementation. In this session, several enterprise vendors will demonstrate how they&amp;#39;ve been working together to address these issues in a collection of &amp;quot;Best Practices&amp;quot;. This session will also provide a review of existing challenges for enterprise implementations of OpenSocial.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Session type:&lt;/strong&gt; 201&lt;br&gt; 
  &lt;strong&gt;Attendee requirements:&lt;/strong&gt; General understanding of OpenSocial technologies. Some Enterprise experience is also recommended.&lt;br&gt; 
  &lt;strong&gt;Tags:&lt;/strong&gt; OpenSocial, Enterprise&lt;br&gt; 
  &lt;strong&gt;Hashtag:&lt;/strong&gt; #socialweb7
&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; Thursday May 20&lt;br&gt; 
  &lt;strong&gt;Time:&lt;/strong&gt; 1:00pm-2:00pm&lt;br&gt; 
  &lt;strong&gt;Room:&lt;/strong&gt; 9&lt;br&gt; 
&lt;/p&gt;
&lt;/blockquote&gt;





</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/the_enterprise_opensocial_white_paper</guid>
    <title>The Enterprise OpenSocial white paper</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/the_enterprise_opensocial_white_paper</link>
    <pubDate>Tue, 5 Jan 2010 19:16:46 +0000</pubDate>
    <category>IBM</category>
    <category>opensocial</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/03bd5f1a-bf7d-4690-8ba7-d1bfc3f60ef2&quot; style=&quot;padding:4px;align:right;&quot; alt=&quot;opensocial logo&quot;&gt;

&lt;p&gt;Here&amp;#39;s another thing I&amp;#39;ve been involved with at IBM: the &lt;a href=&quot;http://blog.opensocial.org/2009/12/enterprise-opensocial-white-paper-now.html&quot;&gt;Enterprise OpenSocial white paper&lt;/a&gt; which was published just before Christmas 2009.&lt;/p&gt;

&lt;p&gt;The paper is a group effort, written by folks from Alfresco, Atlassian, Cisco, Cubetree, Google, IBM, SAP and SocialText. It explains why OpenSocial is relevant and &amp;quot;ready for both Internet scale web communities and enterprise applications.&amp;quot; It also lays out some specific areas for improvement in OpenSocial that will make the technology an even better fit in the enterprise. Here&amp;#39;s the opening paragraph to get you started:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Enterprises are collections of people, and thus inherently social. Employees of any organization benefit from social connections, group affiliations and relationships both within their own business and between other businesses. As a result, social networking capabilities have become increasingly popular in business-to-consumer, business-to-business, and internal enterprise collaboration applications. New technologies and standards such as Web 2.0 and OpenSocial [1] are helping software providers better model relationships between people, allowing end-users to benefit from such relationships in day-to-day business processes within their own enterprise, and across business networks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Read the rest of the &lt;a href=&quot;http://www.opensocial.org/page/enterprise-opensocial&quot;&gt;Enterprise OpenSocial white paper at OpenSocial.org&lt;/a&gt;.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/ibm_enterprise_opensocial</guid>
    <title>IBM at last month&amp;#39;s Enterprise 2.0 OpenSocial panel</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/ibm_enterprise_opensocial</link>
    <pubDate>Mon, 14 Dec 2009 13:32:02 +0000</pubDate>
    <category>IBM</category>
    <category>jazz</category>
    <category>opensocial</category>
    <category>socialsite</category>
<description>&lt;p&gt;It&amp;#39;s been over a month since the &lt;a href=&quot;http://www.e2conf.com/sanfrancisco/conference/foundations-of-enterprise-2.0.php&quot;&gt;Enterprise 2.0 OpenSocial panel&lt;/a&gt; and since we were never able to get a group blog post together, I&amp;#39;ve decided to publish a short summary of what I said about IBM on the panel. I&amp;#39;m paraphrasing myself from memory so this is not exactly what I said but it should be pretty close:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;IBM has been successfully innovating in the area of browser-based components, also known as widgets or gadgets, and social APIs for years now. If you haven&amp;#39;t seen the &lt;a href=&quot;http://www.ibm.com/software/info/mashup-center/&quot;&gt;IBM Mashup Center&lt;/a&gt; you should visit the IBM booth and take a look at the demo. It allows you to create Web 2.0 style mashup applications by dragging-and-dropping widgets into place and wiring them together. You&amp;#39;ve probably heard of &lt;a href=&quot;http://www-01.ibm.com/software/lotus/products/connections/&quot;&gt;Lotus Connections&lt;/a&gt;. Connections is IBM&amp;#39;s social software suite and it includes blogs, wikis, forums, social bookmarking and more. Each one of those components features a comprehensive AtomPub-based REST API.&lt;/p&gt;

&lt;p&gt;We&amp;#39;re working with the &lt;a href=&quot;http://opensocial.org&quot;&gt;OpenSocial community&lt;/a&gt; to ensure that the specification meets the needs of our customers and is able to interoperate with our existing &lt;a href=&quot;http://www.lotus.com/ldd/mashupswiki.nsf/dx/widget-programming-guide&quot;&gt;iWidget&lt;/a&gt; technology (and I think I mentioned the OpenAjax Hub here too). You can see most of the improvements that we&amp;#39;re interested in the slides, so I won&amp;#39;t go into detail now, but I will mention a couple of things for example: we would like to see better inter-gadget communication, specification modularity (coming in OpenSocial 1.0) and a stable and predictable specification change process.&lt;/p&gt;

&lt;p&gt;I work for Rational, the part of IBM that creates tools for software development and delivery, something that is also social and collaborative in nature. We&amp;#39;re enthusiastic about OpenSocial and we hope to enable use of OpenSocial Gadgets in Jazz-based product dashboards sometime in 2010. We may also support some of the OpenSocial Social APIs, but we are still learning and experimenting. Jazz products are developed in an open and transparent way so you can track our progress via our wiki and work-items at &lt;a href=&quot;http://jazz.net&quot;&gt;Jazz.net&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I won&amp;#39;t try to paraphrase what the other panelists said, I&amp;#39;ll let them do that, and I&amp;#39;ll leave out my SocialSite pitch for now as most of my readers have already heard it. I&amp;#39;ll put together an update on SocialSite during the next month and I think I&amp;#39;ll have some good news to report.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apachecon_trip_report</guid>
    <title>Trip report: ApacheCon US 2009</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apachecon_trip_report</link>
    <pubDate>Sun, 15 Nov 2009 10:59:18 +0000</pubDate>
    <category>IBM</category>
    <category>apacheroller</category>
    <category>opensocial</category>
    <category>socialsite</category>
    <category>widgets</category>
    <category>wookie</category>
<description>&lt;p&gt;&lt;i&gt;(Last week, I returned after a week of vacation and a week of conferences in the SF bay area. Instead of posting my trip reports to the limited audience that reads my internal IBM blog, I&amp;#39;m going to post them here so that everybody can benefit from them.)&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;table border=&quot;0&quot; class=&quot;imageplugin&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/bed8afd6-e1e8-4112-9c5d-70eaa0529646&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s my report from ApacheCon US, focusing on the projects I&amp;#39;m involved with: Roller, Shindig and SocialSite.
&lt;/p&gt;
&lt;p&gt;
&lt;h3 id=&quot;section-dummyPage-RollerSession&quot;&gt;Roller session#&lt;/h3&gt;
&lt;p&gt;In my session, I covered the new features in 5.0, Roller history and sort of a Roller state of the union. I explained that nobody is working full-time on Roller these days, it&amp;#39;s an all volunteer effort with about three people active and if folks want us to keep on making official Apache releases then those very same folks had better step-up and get involved so we can knight some new PMC members. I also did a demo of the new features in Roller 5.0 including OpenID and the file upload and management improvements.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;What&amp;#39;s new in Apache Roller 5.0, Dave Johnson &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://www.us.apachecon.com/c/acus2009/sessions/280&quot;&gt;http://www.us.apachecon.com/c/acus2009/sessions/280&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Announcement: Roller 5.0 beta 1 available &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://markmail.org/message/rwk6pj4voxbyuaj3&quot;&gt;http://markmail.org/message/rwk6pj4voxbyuaj3&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
&lt;h3 id=&quot;section-dummyPage-ShindigSession&quot;&gt;Shindig session#&lt;/h3&gt;
&lt;p&gt;After my Roller talk and in the same room, I attended Paul Lindner&amp;#39;s talk on Apache Shindig. Paul has worked on OpenSocial implementations at Hi5 and LinkedIn and he&amp;#39;s also a committer on the Apache Shindig project.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Empowering the Social Web with Apache Shindig, Paul Linder &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://www.us.apachecon.com/c/acus2009/sessions/281&quot;&gt;http://www.us.apachecon.com/c/acus2009/sessions/281&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I&amp;#39;m familiar with Shindig so this was mostly review for me. I liked Paul&amp;#39;s assessment of Shindig quality, saying that they have good processes in place, use code reviews and have good test coverage. Paul acknowledged problems with Shindig&amp;#39;s developer friendly-ness and said that the community is working to fix them. I&amp;#39;ve heard similar complaints from multiple source and seen myself that it&amp;#39;s not as easy as it should be to understand the codebase, figure out how to plug-into it and understand which parts are really required for OpenSocial and which are just sample code.
&lt;/p&gt;
&lt;p&gt;Paul also talked about the Open Stack concept, a set of open standards that enable social networking interoperation including OpenSocial, ~OAuth, OpenID and portable contacts. He said that Shindig is the best way to implement the stack and keep up with the evolving standards. He had a nice quote about &amp;quot;Shindig is to OpenSocial as Apache HTTPD is to HTTP&amp;quot;
&lt;/p&gt;
&lt;p&gt;
&lt;h3 id=&quot;section-dummyPage-SocialWidgetsGadgetsMeetup&quot;&gt;Social Widgets / Gadgets meetup#&lt;/h3&gt;
&lt;p&gt;On Thursday night, I attended Social Widgets / Gadgets meetup which brought together members of the Apache Shindig, Apache SocialSite and Apache Wookie Communities.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Apache Shinding: OpenSocial Reference Implementation &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://incubator.apache.org/shindig&quot;&gt;http://incubator.apache.org/shindig&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Apache SocialSite: Headless Social Networking server plus Gadgets &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;https://socialsite.dev.java.net/&quot;&gt;https://socialsite.dev.java.net/&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Apache Wookie: W3C Widgets, OpenSocial and Wave Gadgets server &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://incubator.apache.org/wookie&quot;&gt;http://incubator.apache.org/wookie&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There were about 25 people there including folks from Google, Atlassian, Yahoo, Ning, LinkedIn, Hippo (CMS/portals ISV) and, I&amp;#39;m guessing, a bunch of SF bay area startups. The meetup started around 8PM and lasted over two hours. 
&lt;/p&gt;
&lt;p&gt;I presented a lightning talk on Apache SocialSite using a couple of slides from the JavaOne talk and including a quick status report. Status is this: still waiting on Sun to come through on code grant, Globant is having some success with SocialSite in production and work is almost complete in converting the build over to Maven. I also did a quick talk about the Enterprise 2.0 OpenSocial panel, which occurred the day before.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;SocialSite Mavenized &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/socialsite-mavenized&quot;&gt;http://code.google.com/p/socialsite-mavenized&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Next, Jas Nagra did a very entertaining and informative mini-presentation on Caja, complete with XMen 2 references. Caja is a way to run Javascript code (e.g. gadgets) loaded from different locations, each in its own secure sandbox where it can&amp;#39;t interfere with others and can&amp;#39;t do evil -- but without relying on iframes. Shindig uses Caja, but it&amp;#39;s optional and off by default.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Google Caja - A source-to-source translator for securing Javascript-based web content &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/google-caja/&quot;&gt;http://code.google.com/p/google-caja/&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After that Paul Linder did a quick talk on the Open Stack idea and revised his Shindig quote to &amp;quot;Shindig is to the Open Stack as Apache HTTPD is to HTTP.&amp;quot; Then we broke up and folks stuck around to talk about APIs, projects, possibilities and everything else for quite some time.
&lt;/p&gt;
&lt;p&gt;That&amp;#39;s all I&amp;#39;ve got for now. I hope to document some of my experiences on the &amp;quot;Enterprise OpenSocial&amp;quot; panel at Enterprise 2.0 later, possibly in a blog post on the OpenSocial blog.
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/trip_report_social_web_camp</guid>
    <title>Trip report: Social Web Camp, Santa Clara, CA</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/trip_report_social_web_camp</link>
    <pubDate>Mon, 9 Nov 2009 10:07:19 +0000</pubDate>
    <category>IBM</category>
    <category>apacheroller</category>
    <category>atompub</category>
    <category>foaf</category>
    <category>opensocial</category>
    <category>salmon</category>
    <category>sun</category>
<description>&lt;p&gt;(I just returned to work after vacation and a week of conferences in the SF bay area. Instead of posting my trip reports to the limited audience that reads my internal IBM blog, I&amp;#39;m going to post them here so that everybody can benefit from them.)
&lt;/p&gt;&lt;p&gt;&lt;table border=&quot;0&quot; class=&quot;imageplugin&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/77f1d993-07cf-4696-999c-277c4ae6dc27?t=true&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/p&gt;
&lt;p&gt;On Monday Nov. 2, I attended Social Web Camp at Sun&amp;#39;s Santa Clara campus. There were about 40 people in attendance. The event was organized by Sun&amp;#39;s Henry Story, an expert in semantic web technologies and inventor of the FOAF+SSL approach to implementing Social Networking features (relationship based privacy). Unfortunately, Henry was not able to attend the conference because he was detained by US immigration.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Social Web Camp, Santa Clara, CA &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://barcamp.org/SocialWebCamp-Santa-Clara&quot;&gt;http://barcamp.org/SocialWebCamp-Santa-Clara&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Sun&amp;#39;s Santa Clara Campus - AKA the Agnews Insane Asylum &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://www.nps.gov/nr/travel/santaclara/agn.htm&quot;&gt;http://www.nps.gov/nr/travel/santaclara/agn.htm&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;FOAF+SSL distributed/open social networking &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://esw.w3.org/topic/foaf+ssl&quot;&gt;http://esw.w3.org/topic/foaf+ssl&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Henry detained for 6 days, case dismissed in 30 seconds &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://twitter.com/bblfish/status/5509198135&quot;&gt;http://twitter.com/bblfish/status/5509198135&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;During the camp, I lead a session on OpenSocial using my &amp;quot;What&amp;#39;s up with OpenSocial&amp;quot; slides from BarCampRDU. Surprisingly, very few people were familiar with OpenSocial, so this was an introductory level discussion.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;What&amp;#39;s up with OpenSocial preso from BarCampRDU &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://docs.google.com/present/edit?id=0AWuMBlP1tnN6ZGcyY2ZuendfOThmcXMydjdmcQ&amp;amp;hl=en&quot;&gt;http://docs.google.com/present/edit?id=0AWuMBlP1tnN6ZGcyY2ZuendfOThmcXMydjdmcQ&amp;amp;hl=en&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I participated in a session on enterprise social networking and shared a little about we do with micro-blogging inside IBM, mentioning BlueTwit and the new features in Lotus Connections. A couple of folks from Boeing were present and described the home-grown social networking and micro-blogging system. 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;BlueTwit mentioned in Business Week &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://www.businessweek.com/magazine/content/08_22/b4086056643442.htm&quot;&gt;http://www.businessweek.com/magazine/content/08_22/b4086056643442.htm&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;John Panzer of Google pitched his new Salmon protocol, a distributed commenting system that allows comments made on items in downstream systems (e.g. aggregators, social networks, FriendFeed, etc.) to find their way back upstream to the source item. The protocol is based, in part, on AtomPub. Comments are signed and posted back upstream. Seems like this could be useful in both Lotus Connections river of news feature, Jazz-based products and Roller; so I&amp;#39;ll going to track this one closely. It might be fun to try to implement Salmon for Roller.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Salmon: comments and annotations to swim upstream, spawn more commentary &lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://www.salmon-protocol.org/&quot;&gt;http://www.salmon-protocol.org/&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I missed a little of the conference because I had lunch with some of my former co-worker from Sun and I left a little early to return my vacation rental car and make my way to Oakland for ApacheCon US 2009. More about that later...&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links45</guid>
    <title>Latest Links: August 11, 2009</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links45</link>
    <pubDate>Tue, 11 Aug 2009 21:12:00 +0000</pubDate>
    <category>Links</category>
    <category>blogging</category>
    <category>chrome</category>
    <category>eclipse</category>
    <category>googlewave</category>
    <category>lotusconnections</category>
    <category>opensocial</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.scripting.com/stories/2009/08/10/scobleYourBlogStillLovesYo.html&quot;&gt;Your blog still loves you&lt;/a&gt;&lt;br&gt;&amp;quot;it&amp;#39;s time to use the web again to store our ideas, and instead of relying on Silicon Valley companies to link our stuff together, let&amp;#39;s just use the Internet.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.zdnetasia.com/news/hardware/0,39042972,62056726,00.htm?scid=rss_z_nw&quot;&gt;ZDNet Asia: &amp;#39;Ferociously loyal&amp;#39; users to stand by Sun&lt;/a&gt;&lt;br&gt;&amp;quot;47,000 enterprise customers and a ferociously loyal customer base&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://lotusconnectionsblog.com/blog/connblog.nsf/dx/full-house-lotus-connections-2.5-video-demos&quot;&gt;The Connections Blog: Full house! Lotus Connections 2.5 video demos&lt;/a&gt;&lt;br&gt; screen-casts for 8 of the Lotus Connections components&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blog.chromium.org/2009/08/google-chrome-developer-tools-for.html&quot;&gt;Chromium Blog: Google Chrome Developer Tools for Eclipse Users&lt;/a&gt;&lt;br&gt;&amp;quot;Set breakpoints, inspect variables and evaluate expressions from within Eclipse&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=560&quot;&gt;First impressions of Google Wave | Enterprise Web 2.0 | ZDNet.com&lt;/a&gt;&lt;br&gt;&amp;quot;won&amp;#39;t be ejecting existing enterprise collab tools from the workplace any time soon&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/opensocial-container/browse_thread/thread/f5267471f5070231?pli=1&quot;&gt;Shindig-based OpenSocial Container from Lockheed Martin&lt;/a&gt;&lt;br&gt; &amp;quot;written in Java and is based on open source projects such as GWT, Hibernate...&amp;quot;&lt;/li&gt;

&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apacheconus_2009_registration_open</guid>
    <title>ApacheConUS 2009 registration open, sign up now!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apacheconus_2009_registration_open</link>
    <pubDate>Tue, 11 Aug 2009 20:09:21 +0000</pubDate>
    <category>Open Source</category>
    <category>apachecon</category>
    <category>opensocial</category>
    <category>shindig</category>
    <category>socialsite</category>
    <category>wookie</category>
<description>&lt;a href=&quot;http://www.us.apachecon.com&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/resource/10th_Anniversary_logo_final_w_URL.gif&quot; align=&quot;right&quot; alt=&quot;Apache 10th anniversary logo&quot; style=&quot;padding:1em;&quot;&gt;&lt;/a&gt;

&lt;p&gt;The early-bird special ends on August 14, so you&amp;#39;d better get moving.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sign up for &lt;a href=&quot;http://www.us.apachecon.com&quot;&gt;ApacheCon US&lt;/a&gt; by 14 August and save up to $500!&lt;/p&gt;

&lt;p&gt;This year&amp;#39;s ApacheCon US promises to deliver our most extensive program to date, and largest anticipated gathering of the global Apache community to celebrate the ASF&amp;#39;s milestone 10th Anniversary. The San Francisco Bay Area is where the very first ASF official user conference was held, and we hope that you will join us in celebrating the ASF&amp;#39;s success!&lt;/p&gt;

&lt;p&gt;Apache members, code contributors, users, developers, system administrators, business managers, service providers, and vendors will convene 2-6 November in Oakland, California, for a week of training, presentations, sharing and hacking. ApacheCon US 2009 features new content tracks, MeetUps, and GetTogethers, as well as a number of events open to the public free of charge, such as the Hackathon and 2-day BarCampApache, in appreciation of their support over the past decade.&lt;/p&gt;

&lt;p&gt;Be sure to register by 14 August to save up to $500! To sign up, visit &lt;a href=&quot;http://www.us.apachecon.com&quot;&gt;http://www.us.apachecon.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#39;ll be there and speaking on the topic of &lt;a href=&quot;http://www.us.apachecon.com/c/acus2009/sessions/280&quot;&gt;What&amp;#39;s New in Roller 5.0&lt;/a&gt;. I also plan to attend the &lt;a href=&quot;http://wiki.apache.org/apachecon/SocialAndWidgetsMeetup&quot;&gt;Social and Widgets Meetup with folks from Shindig, SocialSite and Wookie. I hope to see you there.&lt;/a&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links49</guid>
    <title>Latest Links: OpenSocial and OSLC</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links49</link>
    <pubDate>Tue, 9 Jun 2009 16:00:03 +0000</pubDate>
    <category>Links</category>
    <category>opensocial</category>
    <category>oslc</category>
<description>&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://fstutzman.com/2009/05/27/archive-of-facebook-radio-show/&quot;&gt;Stutzman on WUNC&amp;#39;s the State of Things&lt;/a&gt;&lt;br&gt; Stutzman and others on the etiquette, the addiction and the future of Facebook&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.readwriteweb.com/archives/is_twitter_really_that_big.php&quot;&gt;Is Twitter Really That Big?&lt;/a&gt;&lt;br&gt; 40% of Twitter users haven&amp;#39;t tweeted since 1st day, 25% not following anybody&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=IeqKZfIK568&quot;&gt;YouTube - Towards Privacy-aware OpenSocial Applications&lt;/a&gt;&lt;br&gt; Talk by Kun Liu of IBM Research on privacy scoring and applications&lt;/li&gt;

&lt;/ul&gt;&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://www.atlassian.com/opensocial/videos/google-io.jsp&quot;&gt;Google I/O video - Atlassian and OpenSocial&lt;/a&gt;&lt;br&gt; using OpenSocial to connect enterprise apps and power developer dashboards.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.atlassian.com/opensocial/videos.jsp&quot;&gt;Atlassian - OpenSocial Videos&lt;/a&gt;&lt;br&gt; Atlassian has gone ga ga for Gadgets&lt;/li&gt;

&lt;/ul&gt;&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=f9zz83Gs5lY&amp;amp;hd=1&quot;&gt;YouTube - What is New in Rational Team Concert 2.0 Web UI&lt;/a&gt;&lt;br&gt; from Dejan Glozic, Team Concert Web UI and Dashboards Lead&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.mainsoft.com/products/document_collaboration_rational_jazz.aspx&quot;&gt;Mainsoft Document Collaboration for Rational Jazz&lt;/a&gt;&lt;br&gt; connects Rational Team Concert to your corporate collaboration infrastructure.&lt;/li&gt;

&lt;/ul&gt;&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://open-services.net/html/Home.html&quot;&gt;The Open Services for Lifecycle Collaboration (OSLC) initiative&lt;/a&gt;&lt;br&gt;creating open interfaces for software development services: requirements, change requests, user stores, test cases and more.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://www.ibm.com/developerworks/mydeveloperworks/blogs/scott/entry/abrams_zetie_and_kersten_on_first_fruits_of_the_oslc&quot;&gt;dW podcasts: Abrams, Zetie and Kerston on OSLC&lt;/a&gt;&lt;br&gt;Interview with some of the folks behind OSLC.&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/socialsite_apache</guid>
    <title>SocialSite@Apache</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/socialsite_apache</link>
    <pubDate>Thu, 23 Apr 2009 23:00:49 +0000</pubDate>
    <category>Social Software</category>
    <category>apache</category>
    <category>opensocial</category>
    <category>socialsite</category>
<description>&lt;p&gt;I took a break from blogging during my first couple of weeks at IBM. My blog broke and it took me a while to find the time and motivation to fix it, but now it&amp;#39;s time to return. I think. I have been doing some internal blogging at IBM, but so far it&amp;#39;s been mostly boring stuff: status reports and the like.&lt;/p&gt;

&lt;p&gt;What I want to talk about today is Project SocialSite. Since my &lt;a href=&quot;http://rollerweblogger.org/roller/entry/the_future_of_project_socialsite&quot;&gt;last post&lt;/a&gt;, where I mentioned that Sun is willing to contribute SocialSite to Apache, I did some work to move things along. I wrote an Apache Incubator proposal, started a discussion and this week calling for a vote on the proposal. Here are the relevant links:&lt;/p&gt;

&lt;p style=&quot;margin-left:1em;&quot;&gt;&lt;a href=&quot;http://wiki.apache.org/incubator/SocialSiteProposal&quot;&gt;Proposal: Apache SocialSite&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;margin-left:1em;&quot;&gt;&lt;a href=&quot;http://markmail.org/message/7m6mk34pxgyrqhsg&quot;&gt;Discussion and vote thread on the Incubator General mailing list&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;margin-left:1em;&quot;&gt;&lt;a href=&quot;http://incubator.apache.org/guides/lists.html&quot;&gt;Subscripton info for the Incubator mailing lists&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to support the project, and especially if you&amp;#39;re on the Incubator&amp;#39;s Project Management Committee, now&amp;#39;s the time to do so.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/the_future_of_project_socialsite</guid>
    <title>The future of Project SocialSite: Apache?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/the_future_of_project_socialsite</link>
    <pubDate>Fri, 27 Mar 2009 13:17:27 +0000</pubDate>
    <category>Social Software</category>
    <category>apache</category>
    <category>opensocial</category>
    <category>shindig</category>
    <category>socialsite</category>
    <category>sun</category>
<description>&lt;p&gt;Since January, the future of &lt;a href=&quot;&quot; href=&quot;https://socialsite.dev.java.net&quot;&gt;https://socialsite.dev.java.net&lt;/a&gt;&amp;quot;&amp;gt;Project SocialSite has been in the hands of the SocialSite community. During that time, I continued working on the project almost because I think it&amp;#39;s got great potential and I would &lt;i&gt;really&lt;/i&gt; like to see it live on in some form. That&amp;#39;s also why I continued to talk to Sun about the project.&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;Today, I&amp;#39;m very happy to announce that &lt;a class=&quot;external&quot; href=&quot;http://sun.com&quot;&gt;Sun Microsystems&lt;/a&gt; is willing to contribute Project SocialSite to the &lt;a class=&quot;external&quot; href=&quot;http://apache.org&quot;&gt;Apache Software Foundation&lt;/a&gt;. It&amp;#39;s not clear whether SocialSite should be contributed into Shindig or as a new incubator project, but either way I think this is the best thing for the project and will give it the best possible chances for building a thriving community. I&amp;#39;ve started some discussions about this on Apache-private mailing lists and I&amp;#39;ll let you know what happens next.
&lt;/p&gt;
&lt;p&gt;This post brings to an end my series of posts about Shindig for blogs and wikis. Here are links to the earlier posts:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/talking_shindig_at_apacheconeu&quot;&gt;Upcoming: Shindig for Blogs and Wikis, ApacheCon EU&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/preparing_for_shindig_talk&quot;&gt;Preparing for my Shindig talk next month&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere!&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/sidebar_what_is_oauth&quot;&gt;What is OAuth and why whould you care&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth for AtomPub in Roller&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_rome_propono&quot;&gt;OAuth for ROME Propono&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/socialsite_on_rollerwebloggerorg&quot;&gt;SocialSite on rollerweblogger.org&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere_continued&quot;&gt;OAuth everywhere (continued)&lt;/a&gt;
 
&lt;/li&gt;&lt;/ul&gt;By the way, I delivered my Shindig talk just a couple of minutes ago. It was well-attended and I think it went pretty well. You can find the slides online at the ApacheCon EU 2009 site here: &lt;a href=&quot;&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;http://www.eu.apachecon.com/c/aceu2009/sessions/184&lt;/a&gt;&amp;quot;&amp;gt;Shindig for Blogs and Wikis. Now back to your regularly scheduled programming...
&lt;p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_everywhere_continued</guid>
    <title>OAuth everywhere (continued)</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_everywhere_continued</link>
    <pubDate>Thu, 26 Mar 2009 02:00:00 +0000</pubDate>
    <category>Social Software</category>
    <category>oauth</category>
    <category>opensocial</category>
    <category>roller</category>
    <category>socialsite</category>
<atom:summary type="html">In my earlier &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere&lt;/a&gt; post I explained at a high level &amp;quot;how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network.&amp;quot; I ended with some unanswered questions. In those post I&amp;#39;ll answer those questions with source code, screenshots and more.
</atom:summary><description>&lt;p&gt;In my earlier &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere&lt;/a&gt; post I explained at a high level &amp;quot;how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network.&amp;quot; I ended with some unanswered questions:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How do I add my gadget to SocialSite so users can install and use it?
&lt;/li&gt;&lt;li&gt;How does SocialSite get the Consumer Key and Secret needed for calling Roller?
&lt;/li&gt;&lt;li&gt;How does Roller get the Consumer Key and Secret needed for calling SocialSite?
&lt;/li&gt;&lt;li&gt;How does the user authorize Roller&amp;#39;s access to his Profile information in SocialSite?
&lt;/li&gt;&lt;li&gt;When is OAuth support coming to the Roller trunk and can you use it for AtomPub?
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;i&gt;(that last question was answered in &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth for AtomPub in Roller&lt;/a&gt; earlier this week)&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;Now that I&amp;#39;ve wrapped up my work on &lt;a class=&quot;external&quot; href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; in &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;SocialSite&lt;/a&gt; and OAuth in &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt;, I&amp;#39;m prepared to answer those questions. I&amp;#39;ll do it by reviewing how I developed my Social Roller gadget and set it up to work on &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org&quot;&gt;http://rollerweblogger.org&lt;/a&gt;, my Roller and SocialSite powered site. 
&lt;/p&gt;
&lt;p&gt;Along the way, I&amp;#39;ll provide links to source code and screen-shots. I&amp;#39;ll be referring to the diagram from first post, so I&amp;#39;ll reproduce it here for the sake of convenience:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot; alt=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;NOTE: this post is based on the current code in the &lt;a class=&quot;external&quot; href=&quot;https://socialsite.dev.java.net/source/browse/socialsite&quot;&gt;Project SocialSite SVN trunk&lt;/a&gt;. The things described below WILL NOT work with the SocialSite M3 release.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step1DevelopAnOpenSocialApplication&quot;&gt;Step 1 - Develop an OpenSocial Application#&lt;/h4&gt;
&lt;p&gt;My first step was to develop an OpenSocial application for Roller. This application is made up of the three parts listed below. These are the parts show in light-blue in the diagram above.
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;An OpenSocial Gadget for Roller&lt;/b&gt; that a user can install into his SocialSite profile. An OpenSocial Gadget is defined by Gadget Specification, an XML file with the metadata, HTML, CSS and JavaScript that render the gadget&amp;#39;s user interface. I developed my gadget as a Roller page template and you can view it&amp;#39;s source code here: &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/project/page/viewsource?pageName=gadget.xml&quot;&gt;gadget.xml&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;A gadget setup page&lt;/b&gt;, a new JSP page in Roller that is called by the gadget to enable and disable Activity posting. This JSP page is protected by OAuth and returns data in JSON format to the gadget. View the source code here &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_roller/copyover/setupgadget.jsp&quot;&gt;setupgadget.jsp&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;A Roller Task&lt;/b&gt; that runs periodically, checks to see if any gadget users have created new blog posts and if they have, posts a Activity to SocialSite for each, by calling the OAuth-protected OpenSocial REST API provided by SocialSite. View the source code here &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_roller/src/org/rollerweblogger/SocialRollerTask.java&quot;&gt;SocialRollerTask.java&lt;/a&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step2RegisterGadgetWithSocialSite&quot;&gt;Step 2 - Register gadget with SocialSite#&lt;/h4&gt;
&lt;p&gt;&lt;i&gt;This section answers the question &amp;quot;How do I add my gadget to SocialSite so users can install and use it?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;My next step was to register my application. Remember that SocialSite is intended to add social features to existing web sites and has very little user interface of its own, it&amp;#39;s mostly made up of gadgets. So, the way you register a new application on a SocialSite-enabled site is to sign-up as a user of that site, go to your profile page, install the SocialSite Developer Gadget and then use that gadget to register your new application. 
&lt;/p&gt;
&lt;p&gt;You can see a screenshot of the SocialSite Developer Gadget below. In the simplest case, you just enter the URL of your Gadget Specification, but I needed to take a couple of extra steps because my gadget needs to call an OAuth protected resource in Roller.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-register.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-register.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;This next paragraph answers the question &amp;quot;How does SocialSite get the Consumer Key and Secret needed for calling Roller?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;I need my gadget to call back to the Roller setupgadget.jsp page (that&amp;#39;s part &lt;b&gt;#4&lt;/b&gt; in the diagram above) to enable/disable activity posting. Because that page is protected by OAuth, I had to go into Roller and get Roller&amp;#39;s site-wide OAuth key and secret (see also: &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth for Roller&lt;/a&gt;) and then enter those it the Developer Gadget. SocialSite stores them and will use them to take care of the OAuth authentication process on each gadget call to Roller (in part &lt;b&gt;#2&lt;/b&gt; above).
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step3ApproveGadgetRegistration&quot;&gt;Step 3 - Approve gadget registration#&lt;/h4&gt;
&lt;p&gt;Since I&amp;#39;m the administrator of my site, I approved my own gadget registration. I did this by logging into my site&amp;#39;s SocialSite admin console, went to the Gadget Management tab, saw my new gadget registration request and approved it. Here&amp;#39;s a screenshot of the Gadget Registration approval page:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-approval.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-approval.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step4AddOAuthConsumerKeyAndSecretToRoller&quot;&gt;Step 4 - Add OAuth consumer key and secret to Roller#&lt;/h4&gt;
&lt;p&gt;&lt;i&gt;This next paragraph answers the question &amp;quot;How does Roller get the Consumer Key and Secret needed for calling SocialSite?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;After your gadget is approved for use on a SocialSite enabled site, you&amp;#39;ll find the consumer key and secret that Roller needs to call the OpenSocial REST API (that&amp;#39;s step &lt;b&gt;#6&lt;/b&gt; above) in the SocialSite Developer Gadget. Here&amp;#39;s what you see in the Developer Gadget once you gadget is approved.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-approved.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-approved.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;My OpenSocial Roller application needs to know about those keys, so I put them in its configuration. For simplicity&amp;#39;s sake, I&amp;#39;m not going to go into the details of this step.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step5InstallTheSocialRollerGadget&quot;&gt;Step 5 - install the Social Roller gadget#&lt;/h4&gt;
&lt;p&gt;Finally, the OpenSocial Roller application is ready for use. To install it, I went to my profile page, clicked the Gadget Directory button, browsed through the gadgets until I found it and then clicked the install button. Here&amp;#39;s a screenshot of the SocialSite Gadget Directory, which you can access from the SocialSite Profile Gadget:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-gadgetdir.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-gadgetdir.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;The Social Roller Gadget is the last item in the list, the &amp;quot;Simple Roller Gadget.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step6AuthorizeAndEnableTheSocialRollerGadget&quot;&gt;Step 6 - authorize and enable the Social Roller gadget#&lt;/h4&gt;
&lt;p&gt;After I installed the gadget, it appeared in my Profile page as you can see in the screenshot below.  It&amp;#39;s installed and ready to run, but it&amp;#39;s not yet authorized to access my Roller account so it tells me &amp;quot;Before you can use this gadget, you must authorize it to access your Roller account.&amp;quot;
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-unauthorized.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-unauthorized.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Finally, I can answer the question &amp;quot;How does the user authorize Roller&amp;#39;s access to his Profile information in SocialSite?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;I want the gadget to access my Roller account so I clicked on the authorize link and saw this page popup, directly from Roller, which asks me to take the final step to authorize access.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-authorization.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-authorization.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;After I clicked the authorize button, page disappeared and the Social Roller gadget redisplayed itself as you can see in the screenshot below. The gadget is now ready to access my Roller account and is asking me to enable activity posting:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-disabled.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-disabled.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;I clicked the enable posting button and saw this:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-enabled.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-enabled.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;And now, whenever I post a new blog entry, an activity is added to my profile. Here&amp;#39;s proof in the form of a screenshot:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-activities.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-activities.png&quot;&gt;
&lt;/p&gt;
&lt;h4 id=&quot;section-dummyPage-Conclusion&quot;&gt;Conclusion#&lt;/h4&gt;
&lt;p&gt;I&amp;#39;ve done the work to enable OAuth in SocialSite and Roller, so now it&amp;#39;s possible to develop OpenSocial gadgets for Roller that will work with SocialSite and other OpenSocial containers. The Roller side of this work is now available in Apache Roller (in the SVN trunk), but the future of the SocialSite is still uncertain. 
&lt;/p&gt;
&lt;p&gt;I think SocialSite still has great potential. That&amp;#39;s why I&amp;#39;m spending so much time promoting it and moving it forward, but I can&amp;#39;t do it all myself. I&amp;#39;m joining IBM next week and as far as I know, SocialSite will NOT be part of my job. I&amp;#39;ll wrap up this series of posts tomorrow with a post discussing the future of Project SocialSite.
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/socialsite_on_rollerwebloggerorg</guid>
    <title>Socialsite on rollerweblogger.org</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/socialsite_on_rollerwebloggerorg</link>
    <pubDate>Wed, 25 Mar 2009 23:59:59 +0000</pubDate>
    <category>Social Software</category>
    <category>jspwiki</category>
    <category>opensocial</category>
    <category>roller</category>
    <category>socialsite</category>
<atom:summary type="html">&lt;p&gt;The value of &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; is that it allows you to add social networking features, including the ability to run &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; gadgets, to existing web sites and have those sites all using the same &amp;quot;social graph&amp;quot; of data about people and relationships. To demonstrate this, I&amp;#39;ve deployed SocialSite to my site, &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org&quot;&gt;http://rollerweblogger.org&lt;/a&gt;, and finally implemented those things I described in my August 2008 &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/social_roller&quot;&gt;Social Roller&lt;/a&gt; post.&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;My site includes a blog and a wiki, &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt;, so it&amp;#39;s a pretty good candidate for demonstrating how SocialSite. It&amp;#39;s not perfect because it&amp;#39;s got only a very small number of users, less than a dozen and because it&amp;#39;s private; you have to login to see the social features. It&amp;#39;ll have to do.
 
In this post, I&amp;#39;ll explain the steps you have to take to add SocialSite to a multi-application web site and I&amp;#39;ll illustrate the steps with examples and screenshots from my work on this site.&lt;/p&gt;</atom:summary><description>&lt;p&gt;The value of &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; is that it allows you to add social networking features, including the ability to run &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; gadgets, to existing web sites and have those sites all using the same &amp;quot;social graph&amp;quot; of data about people and relationships. To demonstrate this, I&amp;#39;ve deployed SocialSite to my site, &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org&quot;&gt;http://rollerweblogger.org&lt;/a&gt;, and finally implemented those things I described in my August 2008 &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/social_roller&quot;&gt;Social Roller&lt;/a&gt; post (except for protected entries).&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;My site includes a blog and a wiki, &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt;, so it&amp;#39;s a pretty good candidate for demonstrating how SocialSite can work with multiple existing webapps. It&amp;#39;s not perfect because it&amp;#39;s got a very small number of users, less than a dozen, and because it&amp;#39;s private; you have to login to see the social features, but it&amp;#39;ll have to do.
 
In this post, I&amp;#39;ll explain the steps you have to take to add SocialSite to a multi-application web site and I&amp;#39;ll illustrate the steps with examples, links to source code and screenshots from my work on this site.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/threefish.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/threefish.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;NOTE: this post is based on the current code in the &lt;a class=&quot;external&quot; href=&quot;https://socialsite.dev.java.net/source/browse/socialsite&quot;&gt;Project SocialSite SVN trunk&lt;/a&gt;. The things described below may or may not work with the SocialSite M3 release.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step1SetupAnAuthenticationDelegatePageInYourSite&quot;&gt;Step 1 - Setup an Authentication Delegate page in your site#&lt;/h4&gt;
&lt;p&gt;SocialSite doesn&amp;#39;t do any user management, it leaves that to the sites that it enables. In my case, I&amp;#39;ve got Roller and JSPWiki setup to authenticate against the same database table of usernames and passwords, and I&amp;#39;ve got Tomcat&amp;#39;s simple SSO setup so that logins work across both webapps. I want SocialSite to depend on Roller to verify that users are logged. SocialSite&amp;#39;s Authentication Delegation mechanism makes this possible. 
&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s how SocialSite Authentication works. You add a delegate page, a dynamic page (JSP, PHP, etc.) to the webapp that is to do the authentication, configure SocialSite to trust that webapp and then at runtime, SocialSite will call that delegate page to verify user logins. In my case, I want Roller to do the authentication so I added a delegate page to Roller called &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_roller/copyover/socialsite_context.jsp&quot;&gt;socialsite_context.jsp&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;When a SocialSite gadget running inside of Roller needs to call back to the OpenSocial API provided by SocialSite it will pass Roller&amp;#39;s login cookie with the call, an assertion about who the logged-in user is and the URL of Roller&amp;#39;s authentication delegate page (socialsite_context.jsp). SocialSite will then call that delegate, pass the cookie and verify that assertion. SocialSite expects the delegate to return some JSON data like this:
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Example: JSON data from socialsite_context.jsp&lt;/i&gt;
&lt;/p&gt;
&lt;pre&gt;

  {
    &amp;#39;timeout&amp;#39;: 30,
    &amp;#39;assertions&amp;#39;: {
      &amp;#39;containerId&amp;#39;: &amp;#39;rollerweblogger.org&amp;#39;,
        &amp;#39;viewer&amp;#39;: davej,
        &amp;#39;owner&amp;#39;: davej,
      }
    }
  }

&lt;/pre&gt;
&lt;p&gt;In the above example, Roller is confirming the assertion that the user is &amp;#39;davej&amp;#39; and the owner of the page containing the gadget is also &amp;#39;davej&amp;#39;. Knowing this, SocialSite can decide what data the caller is allowed to access.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step2ConfigureSocialSiteToTrustYourAuthenticationDelegatePage&quot;&gt;Step 2 - configure SocialSite to trust your Authentication Delegate page#&lt;/h4&gt;
&lt;p&gt;SocialSite won&amp;#39;t trust just any authentication delegate page. Once you have created your page, you must configure SocialSite to trust it. You do this by editing a SocialSite configuration file in WEB-INF/classes/socialsite_context.xml. Here&amp;#39;s an example that sets up a trust relationship with Roller&amp;#39;s socialsite_context.jsp page:
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Example: socialsite_context.xml in SocialSite&lt;/i&gt;
&lt;/p&gt;
&lt;pre&gt;

  &amp;lt;rules&amp;gt;
    &amp;lt;rule&amp;gt;
      &amp;lt;sources&amp;gt;
        &amp;lt;indirect&amp;gt;*&amp;lt;/indirect&amp;gt;
      &amp;lt;/sources&amp;gt;
      &amp;lt;assertions&amp;gt;
        &amp;lt;reject&amp;gt;*&amp;lt;/reject&amp;gt;
      &amp;lt;/assertions&amp;gt;
    &amp;lt;/rule&amp;gt;

    &amp;lt;rule&amp;gt;
      &amp;lt;sources&amp;gt;
        &amp;lt;direct&amp;gt;http://rollerwebogger.org/socialsite_context.jsp&amp;lt;/direct&amp;gt;
        &amp;lt;direct&amp;gt;*&amp;lt;/direct&amp;gt;
      &amp;lt;/sources&amp;gt;
      &amp;lt;assertions&amp;gt;
        &amp;lt;accept&amp;gt;*&amp;lt;/accept&amp;gt;
      &amp;lt;/assertions&amp;gt;
    &amp;lt;/rule&amp;gt;
  &amp;lt;/rules&amp;gt;

&lt;/pre&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step3AddSocialSiteContextDeclarationsToTargetPages&quot;&gt;Step 3 - Add SocialSite Context declarations to target pages#&lt;/h4&gt;
&lt;p&gt;Once the Authentication Delegate page is in place, you&amp;#39;re just about ready to start adding gadgets to the pages of your web applications. Each page that includes gadgets will need to include a couple of SocialSite scripts and information about the SocialSite context, i.e. the URL of the authentication delegate. Here&amp;#39;s an example of the the JavaScript that I include include in Roller pages that use SocialSite gadgets:
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Example: SocialSite context declaration for a Roller page template&lt;/i&gt;
&lt;/p&gt;
&lt;pre&gt;

  #set($viewer = $utils.getAuthenticatedUser().getUserName())
  #set($userName = $model.getRequestParameter(&amp;quot;user&amp;quot;))
  #if ($userName)
    #set($owner = $userName)
  #else
    #set($owner = $viewer)
  #end
  #set($contextURL = &amp;quot;${url.absoluteSite}/socialsite_context.jsp&amp;quot;)
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; 
    src=&amp;quot;${url.absoluteSite}/social/js/consumer.jsp&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
    socialsite.setContext({
      &amp;#39;delegate&amp;#39;: {
        &amp;#39;method&amp;#39;: &amp;#39;GET&amp;#39;,
        &amp;#39;url&amp;#39;: &amp;#39;$contextURL?owner=$owner&amp;amp;amp;viewer=$viewer&amp;#39;,
        &amp;#39;headers&amp;#39;: {
          &amp;#39;cookie&amp;#39;: document.cookie
        }
      }
    });
  &amp;lt;/script&amp;gt;

&lt;/pre&gt;
&lt;p&gt;The above code pulls in some JavaScript from SocialSite and sets up the context necessary for gadgets to call back to SocialSite. It uses Roller&amp;#39;s $utils.getAuthenticatedUser() to determine the logged-in user and a request parameter &amp;#39;user&amp;#39; to determine who owns the page.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step4DecideWhereToPutKeySocialNetworkingPages&quot;&gt;Step 4 - decide where to put key social networking pages#&lt;/h4&gt;
&lt;p&gt;Finally, you&amp;#39;re ready to add gadgets to the pages of your site. First, you&amp;#39;ll want to do some planning. You&amp;#39;ll want to decide where to place some key pages. The SocialSite widgets are designed to support a &lt;i&gt;dashboard&lt;/i&gt; page, which allows users to browse people, make friends and receive messages. They also support both personal and group &lt;i&gt;profile&lt;/i&gt; pages.
&lt;/p&gt;
&lt;p&gt;For rollerweblogger.org, I decided to use one Roller page template &amp;#39;people&amp;#39; to act as both the Dashboard and Profile page. If you access the page with a URL that specifies a user, then you&amp;#39;ll see the profile page of that user. If you access the page with without specifying a user, then you&amp;#39;ll see your dashboard page. Here&amp;#39;s what I put in the socialsite.properties file to set all this up:
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Example: SocialSite URL properties from socialsite.properties&lt;/i&gt;
&lt;/p&gt;
&lt;pre&gt;

  # People page shows your Dashboard
  socialsite.dashboard.url=\
    http://rollerweblogger.org/project/page/people

  # People page with user parameter shows profile of specified user
  socialsite.profile.url=\
    http://rollerweblogger.org/project/page/people?user=${userid}

  # Group profile page will be hosted in JSPWiki
  socialsite.group.url=\
    http://rollerweblogger.org/wiki/Wiki.psh?page=${groupid}

&lt;/pre&gt;
&lt;p&gt;NOTE that in the above configuration, I&amp;#39;m using my wiki to host group profile pages; more about that later. 
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step5AddOpenSocalGadgets&quot;&gt;Step 5 - add OpenSocal Gadgets#&lt;/h4&gt;
&lt;p&gt;Once you&amp;#39;ve decided how to set things up, you&amp;#39;re ready to start adding gadgets. Assuming that you&amp;#39;ve added the SocialSite context declarations in your pages, you can add a gagdet with a single line of JavaScript. For example, to add the SocialSite &lt;b&gt;Owner Activities&lt;/b&gt; Gadget you&amp;#39;d add this code:
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Example: add gadget code from a Roller page template&lt;/i&gt;
&lt;/p&gt;
&lt;pre&gt;

  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
    socialsite.addGadget({&amp;#39;spec&amp;#39;:&amp;#39;local_gadgets/owner_activities.xml&amp;#39;, 
      &amp;#39;removable&amp;#39;:false, &amp;#39;height&amp;#39;:75, &amp;#39;includeChrome&amp;#39;:true});
  &amp;lt;/script&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;

&lt;/pre&gt;
&lt;p&gt;NOTE that you can add any OpenSocial gadget by specifying its URL in the spec argument of the socialsite.addGadget() call. 
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Screenshots&quot;&gt;Screenshots#&lt;/h4&gt;
&lt;p&gt;It&amp;#39;s screenshot time. I&amp;#39;ve included small thumbnail images belo, which you can click for a closer view. If you&amp;#39;re on my site, photos will display in a light-box. First up, is the new People page that you will see if you are logged into rollerweblogger.org. It uses the SocialSite Profile, Face, Status, Friends and Activities gadgets.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-profile.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-profile.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;Next up, the dashboard page. It uses just one gadget, the SocialSite Dashboard, which provides a bunch of different features and was introduced in the &lt;a class=&quot;external&quot; href=&quot;http://blogs.sun.com/socialsite/entry/a_little_more_about_socialsite&quot;&gt;SocialSite M2&lt;/a&gt; release. In one tab you can see the most recent activities of your friends or any of your groups:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-dashboard1.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-dashboard1.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;In the second tab of the Dashboard Gadget, you can search and filter the people in the social network. You can filter by friends or by your groups. You can also create new relationships and accept or ignore relationship requests from this view.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-dashboard2.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-dashboard2.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;In the last tab of the Dashboard Gadget, you can view and manage incoming messages and friendships requests:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-dashboard3.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-dashboard3.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;Want to see the source code? You can see the page template code for my People page in the Roller page templates &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/project/page/viewsource?pageName=peopleSidebar&quot;&gt;people&lt;/a&gt;, which contains the SocialSite context declaration, and &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/project/page/viewsource?pageName=people&quot;&gt;people&lt;/a&gt;, which contains the main body of the page. 
&lt;/p&gt;
&lt;p&gt;Finally, let&amp;#39;s take a look at an example group profile page, which is located in my wiki. 
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-wiki.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-wiki.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;Hmm... I never explained how I got SocialSite gadgets working in JSPWiki. Better fix that now.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-ANoteAboutSocialSiteInJSPWiki&quot;&gt;A note about SocialSite in JSPWiki#&lt;/h4&gt;
&lt;p&gt;To get SocialSite gadgets working in JSPWiki, I had to to a little extra work. In my instance of JSPWiki, I don&amp;#39;t allow HTML so I couldn&amp;#39;t just drop in the JavaScript code necessary to declare the SocialSite context and make the socialsite.addGadget() calls. What I had to do was to create a couple of JSPWiki plugins, one for the SocialSite context and one for the add-gadget call. Here the raw wiki text of the Atomic Group page pictured above:
&lt;/p&gt;
&lt;pre&gt;

  !!!SocialSite Group: Atomic

  [{SocialSiteGroupContext group=&amp;#39;atomic&amp;#39; 
    consumerUri=&amp;#39;http://rollerweblogger.org/social/js/consumer.jsp&amp;#39; 
    authUri=&amp;#39;http://rollerweblogger.org/socialsite_context.jsp&amp;#39;}]

  Demonstrates the SocialSite Group gadgets, running in JSPWiki.

  !!Group Profile Gadget

  Below is the Group Profile for group __Atomic__. You can use the buttons at 
  the bottom to edit the group&amp;#39;s profile properties, to send a message to 
  the group and to add OpenSocial gadgets to this page.

  [{SocialSiteAddGadget spec=&amp;#39;/local_gadgets/group_profile.xml&amp;#39; removable=&amp;#39;true&amp;#39;}]

  !!Installed Gadgets

  This is where the group&amp;#39;s OpenSocial gadgets will appear.
  [{SocialSiteAddGadget collection=&amp;#39;GROUP&amp;#39;}]

&lt;/pre&gt;
&lt;p&gt;And here are links to the source code for the two plugins: &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_jspwiki/src/org/rollerweblogger/plugins/SocialSiteGroupContext.java&quot;&gt;SocialSiteContext.java&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_jspwiki/src/org/rollerweblogger/plugins/SocialSiteAddGadget.java&quot;&gt;SocialSiteAddGadget.java&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Conclusion&quot;&gt;Conclusion#&lt;/h4&gt;
&lt;p&gt;That should give you a pretty good idea of what you can do with SocialSite. Don&amp;#39;t be dissappointed if the gadgets don&amp;#39;t look like exactly what you want. The important thing is that &lt;b&gt;SocialSite gives you a centralized social graph service and the infrastructure needed to add social networking features to your sites via OpenSocial gadgets&lt;/b&gt;. If you don&amp;#39;t like the gadgets that come with SocialSite, you easily write your own using the standard OpenSocial APIs and the SocialSite extensions to those APIs.
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/sidebar_what_is_oauth</guid>
    <title>Sidebar: What is OAuth and why should you care?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/sidebar_what_is_oauth</link>
    <pubDate>Mon, 23 Mar 2009 08:01:39 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>opensocial</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/resource/oauth-logo.png&quot; alt=&quot;OAuth logo&quot; align=&quot;right&quot; vspace=&quot;10&quot; hspace=&quot;10&quot;&gt;

&lt;p&gt;I&amp;#39;m going to be following up my &lt;a href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere!&lt;/a&gt; post, with several more OAuth related posts this week. So, just in case you are wondering &amp;quot;why is Dave going off on this cockamamie OAuth tangent?&amp;quot;, I&amp;#39;ll take some time now to explain a little about OAuth to help you understand.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; is a emerging protocol that one web site can use to access your data on another website without asking you to reveal your username and password. For example, when the sinister BuddyNet9000(TM) Social Network site wants to access your GMail account so it can spam your &amp;quot;friends&amp;quot; on your behalf, you can use OAuth to give it access without telling it your username and password. Why risk your GMail security when all you want to do is spam some people? There are less snarky examples, but that one makes the point well, I think.&lt;/p&gt;

&lt;p&gt;There&amp;#39;s a good end-user oriented introduction on &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth.net&lt;/a&gt; titled &lt;a href=&quot;http://www.hueniverse.com/hueniverse/2007/10/beginners-gui-1.html&quot;&gt;Beginner&amp;#39;s Guide to OAuth: Protocol Workflow&lt;/a&gt;. OAuth is not that widely deployed yet, and is not perfect, but it is emerging and going the &lt;a href=&quot;http://bitworking.org/news/411/oauth-ietf-charter&quot;&gt;IETF standards route&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;I&amp;#39;m interested in OAuth because it&amp;#39;s part of the &lt;a href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; spec, used to authorize access to the OpenSocial REST API and to enable OpenSocial Gadgets to call out to OAuth protected resources. Also, because it&amp;#39;s used to protect &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt;-based services, including the &lt;a href=&quot;http://code.google.com/apis/gdata/articles/oauth.html&quot;&gt;Google Data APIs&lt;/a&gt;. I needed to learn about it for my Roller and SocialSite work and if you&amp;#39;re going to be doing much OpenSocial work, you&amp;#39;ll need to learn about it too.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apachecon_eu_2009</guid>
    <title>ApacheCon EU 2009!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apachecon_eu_2009</link>
    <pubDate>Sun, 22 Mar 2009 14:19:16 +0000</pubDate>
    <category>Social Software</category>
    <category>apachecon</category>
    <category>jspwiki</category>
    <category>oauth</category>
    <category>opensocial</category>
    <category>roller</category>
<description>
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/snoopdave/481130847/&quot; title=&quot;View of art center (foreground) and Movenpick Hotel by snoopdave, on Flickr&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/202/481130847_87a45d2910_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; vpsace=&quot;10&quot; hspace=&quot;10&quot; alt=&quot;View of art center (foreground) and Movenpick Hotel&quot; align=&quot;right&quot;&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I&amp;#39;m off to &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009&quot;&gt;ApacheCon EU 2009&amp;gt; tomorrow in Amsterdam to  speak on the topic of &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt;. I&amp;#39;m really looking forward to catching up with my Apache friends and colleagues. That&amp;#39;s the conference venue in the photo on the right, the Movenpick hotel (in the background behind the music hall). &lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I&amp;#39;m staying a couple of extra days, so I hope to have time for bicycling around the city as I&amp;#39;ve done in the past (see also: Flickr photo sets for &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/sets/72157604420939847/&quot;&gt;2007&lt;/a&gt; and &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/sets/72157604616476673&quot;&gt;2008&lt;/a&gt;). Unfortunately, the weather forecast stinks. There&amp;#39;s a 60% chance of rain every day that I&amp;#39;m in town. Oh well; guess I&amp;#39;ll have plenty of time for blogging. &lt;/p&gt;


&lt;p&gt;Speaking of blogging.This week, I&amp;#39;ll be posting some blog entries to highlight the work that I&amp;#39;ve done in preparation for my talk. Here&amp;#39;s what I plan to cover:&lt;/p&gt;


&lt;p&gt;* Monday: OAuth for AtomPub in Roller&lt;br&gt;
* Tuesday: OAuth for ROME Propono&lt;br&gt;
* Wednesday: SocialSite on rollerweblogger.org&lt;br&gt;
* Thursday: OAuth everywhere (continued)&lt;br&gt;
* Friday: the future of Project SocialSite&lt;/p&gt;


&lt;p&gt;If you plan to attend my talk, at 4:30PM on Friday March 27, then you should follow along. Pay special attention to the SocialSite on rollerweblogger.org and OAuth everywhere (continued) posts, which will include detailed background info. I&amp;#39;m looking forward to seeing you there.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_everywhere</guid>
    <title>OAuth everywhere!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_everywhere</link>
    <pubDate>Fri, 6 Mar 2009 11:10:54 +0000</pubDate>
    <category>Social Software</category>
    <category>apacheroller</category>
    <category>openoauth</category>
    <category>opensocial</category>
    <category>rest</category>
<atom:summary type="html">For my &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009&quot;&gt;ApacheCon EU&lt;/a&gt; talk, which is now just a couple of weeks away, I&amp;#39;m going to talk about &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt;. I promised to show social features and OpenSocial Gadgets running inside Apache Roller and Apache JSPWiki (incubating). This post explains, at a very high level, how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network. It assumes you have a basic understanding of &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt;.</atom:summary><description>&lt;p&gt;For my &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009&quot;&gt;ApacheCon EU&lt;/a&gt; talk, which is now just a couple of weeks away, I&amp;#39;m going to talk about &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt;. I promised to show social features and OpenSocial Gadgets running inside Apache Roller and Apache JSPWiki (incubating). This post explains, at a very high level, how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network. It assumes you have a basic understanding of &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt;.&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-UseCasePostingActivitiesFromRoller&quot;&gt;Use case: posting Activities from Roller #&lt;/h4&gt;
&lt;p&gt;Specifically, what I want to show is a &amp;quot;Social Roller&amp;quot; Gadget that you can install into your Profile Page and that will post an Activity every time that you post a new blog entry in Roller.
&lt;/p&gt;
&lt;p&gt;Sounds simple, but I didn&amp;#39;t realize just how much work it would take. To do it the right way, I needed &lt;i&gt;OAuth everywhere!&lt;/i&gt; I needed OAuth Consumer and Provider support in both my Shindig-powered Social Network Server, that&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;SocialSite&lt;/a&gt;, and in my Blog Server, which of course is &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt;. Unfortunately, when the layoff axe fell at Sun the SocialSite team had not finished OAuth support and Roller didn&amp;#39;t have any OAuth support at all. Good thing is, SocialSite and Roller are open source and I had nothing better to do than to learn about OAuth and crank out some code. I&amp;#39;m not going to let a bunch of axe-wielding bean-counters stop me from keeping my promises.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-HowItWorks&quot;&gt;How it works#&lt;/h4&gt;
&lt;p&gt;I now have complete OAuth Provider and Consumer support in SocialSite and Roller working and ready to demo. I&amp;#39;ll post a screen-cast of the UI changes once I polish it up a bit (and finish my slides). For now, all I&amp;#39;ve got for you is a diagram that explains how the gadget interacts with SocialSite, Roller and OAuth to post activities to your profile.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot; alt=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot;&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Here&amp;#39;s the deal. You install the Social Roller Gadget into your Profile Page within Roller. The gadget needs to talk to Roller so &lt;b&gt;(#1)&lt;/b&gt; it calls Roller via the JS Container APIs. &lt;i&gt;(Note that the blue indicates parts of the Social Roller Gadget.)&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(#2)&lt;/b&gt; The container will work with the SocialSite Proxy servlet to add the right OAuth consumer keys, secrets and/or tokens to the request and will then send that request off to Roller. It must first &lt;b&gt;(#3)&lt;/b&gt; negotiate with the OAuth Servlets in Roller. If you have not authorized the gadget to access your Roller account, then the container will show Roller&amp;#39;s OAuth authorization page so you can hit the Authorize button, or not.
&lt;/p&gt;
&lt;p&gt;Once the gadget is authorized to access your Roller account, it will &lt;b&gt;(#4)&lt;/b&gt; call the gadgetsetup.jsp page via HTTP GET to determine if you have enabled Activity posting. If you want to enable or disable, it will use an HTTP POST to tell Roller what you want. 
&lt;/p&gt;
&lt;p&gt;The setup page will then &lt;b&gt;(#5)&lt;/b&gt; call the Gadget Task to tell it to look out for your new blog posts and post an activity for each. The Gadget Task is controlled by Roller&amp;#39;s cluster-friendly task management system and setup to run every minute.
&lt;/p&gt;
&lt;p&gt;Once you&amp;#39;ve enabled Activity posting, when the Gadget Task runs it will check to see if you have made any new posts and if you have, it will &lt;b&gt;(#6)&lt;/b&gt; call the OpenSocial REST API to post an activity for each to your Profile. Negotiating with the OAuth Servlets as needed. And that&amp;#39;s that.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-WhatIDidnTCover&quot;&gt;What I didn&amp;#39;t cover#&lt;/h4&gt;
&lt;p&gt;There are a lot of things I didn&amp;#39;t mention and I hope to document some of them in the next week or so, while I&amp;#39;m still unemployed. Here&amp;#39;s a quick summary of missing pieces:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;How does SocialSite get the Consumer Key and Secret needed for calling Roller?
&lt;/li&gt;&lt;li&gt;How does Roller get the Consumer Key and Secret needed for calling SocialSite?
&lt;/li&gt;&lt;li&gt;How does the user authorize Roller&amp;#39;s access to his Profile information in SocialSite?
&lt;/li&gt;&lt;li&gt;When is OAuth support coming to the Roller trunk and can you use it for AtomPub?
&lt;/li&gt;&lt;li&gt;How do I add my gadget to SocialSite so users can install and use it?
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are happy answers for all those questions, but that&amp;#39;s all I&amp;#39;ve got time for today. I&amp;#39;ve got some slides to finish in a hurry.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/g_friend_connect</guid>
    <title>G Friend Connect</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/g_friend_connect</link>
    <pubDate>Tue, 17 Feb 2009 22:31:00 +0000</pubDate>
    <category>Social Software</category>
    <category>google</category>
    <category>opensocial</category>
<description>&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/friendconnect-logo.gif&amp;quot; 
align=&amp;quot;right&amp;quot; alt=&amp;quot;Friend Connect Logo&amp;quot; /&amp;gt;

&lt;p&gt;I started a new blog on this site to explore what&amp;#39;s possible with &lt;a href=&quot;http://www.google.com/friendconnect&quot;&gt;Google Friend Connect&lt;/a&gt; (GFC). It&amp;#39;s called the &lt;a href=&quot;http://rollerweblogger.org/gfc&quot;&gt;G Friend Connect&lt;/a&gt; blog. I&amp;#39;ve added the GFC Members Gadget and I replaced Roller&amp;#39;s built-in comment macro with the GFC Wall Gadget. In theory, if you have a Google, Yahoo or Open ID account, you should be able to login via a gadget, make friends with other site members and leave comments. If you have a minute or two, try it out. Join the site and leave a comment. That will give me (and you) a better idea of how things work.&lt;/p&gt;

&lt;p&gt;So far I&amp;#39;m not particularly impressed with the Wall Gadget as a comments replacement. &lt;a href=&quot;http://rollerweblogger.org/gfc/entry/google_friend_connect_wall_comments&quot;&gt;Here&lt;/a&gt; is an example. It doesn&amp;#39;t support rich-text editing, no HTML is allowed, the comment area is too small and there&amp;#39;s no preview button. Maybe that&amp;#39;s why it&amp;#39;s called a Wall Gadget rather than a Comments Gadget. Or maybe I&amp;#39;m just not doing it right.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/preparing_for_shindig_talk</guid>
    <title>Preparing for my Shindig talk next month</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/preparing_for_shindig_talk</link>
    <pubDate>Fri, 6 Feb 2009 12:58:34 +0000</pubDate>
    <category>Social Software</category>
    <category>jspwiki</category>
    <category>opensocial</category>
    <category>roller</category>
<description>&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/234x60-aceu2008-speaker.gif&amp;quot; 
alt=&amp;quot;ApacheCon speaker badge&amp;quot; align=&amp;quot;right&amp;quot; hspace=&amp;quot;8&amp;quot; vspace=&amp;quot;5&amp;quot; /&amp;gt;

&lt;p&gt;The day before the layoff axe fell at Sun, I blogged about my upcoming &lt;a href=&quot;http://rollerweblogger.org/roller/entry/talking_shindig_at_apacheconeu&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt; talk at &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/&quot;&gt;ApacheCon EU&lt;/a&gt; in March. Since then, I&amp;#39;ve been working almost non-stop on finding a new gig and have had little time to work on my presentation. That&amp;#39;s not good, because I have fairly ambitious plans for this talk. I&amp;#39;ll explain.&lt;/p&gt;

&lt;p&gt;I want to be able to show how to add social features including &lt;a href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; support to a blog server and a wiki server by using plain old &lt;a href=&quot;http://incubator.apache.org/shindig/&quot;&gt;Shindig&lt;/a&gt; and then &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt;. I&amp;#39;m targeting &lt;a href=&quot;http://rollerweblogger.org&quot;&gt;Roller&lt;/a&gt; and &lt;a href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt; because they&amp;#39;re the blog and wiki source code bases that I know best right now and they&amp;#39;re both Apache efforts, but the same techniques should work with other systems like Wordpress or Drupal. If I have time I might be able to demo those too (but I wouldn&amp;#39;t count on it).&lt;/p&gt;

&lt;p&gt;I&amp;#39;m not sure how far I can go with plain old Shindig because, like most blog and wiki servers, neither Roller nor JSPWiki has detailed profile data, social relationships or activities. I should be able to get Google Gadgets working via Shindig, but OpenSocial Gadgets will take a lot more thought and effort.&lt;/p&gt;

&lt;p&gt;I&amp;#39;m much more confident in the Project SocialSite approach. SocialSite provides for storage of detailed profile information, groups, activities and app data as well as the necessary UI. I&amp;#39;m confident enough that I&amp;#39;m going to deploy it on this site. So, stay tuned. I hope to have something to show by the end of next week.&lt;/p&gt;

&lt;p&gt;Oh, and by the way. Today is the last day to register for ApacheCon EU with the early-bird discount. So sign-up already!&lt;/p&gt;

&lt;div style=&quot;margin:0 0 1em 2em;&quot;&gt;
&lt;h4&gt;ApacheCon Europe 2009 &lt;a href=&quot;http://www.eu.apachecon.com&quot;&gt;(link)&lt;/a&gt;&lt;/h4&gt;
23-27 March 2009 | MÃ¶venpick Hotel, Amsterdam&lt;br&gt;
&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/articles/prices&quot;&gt;Pricing&lt;/a&gt; 
(register before Feb 6 for discount)
&lt;/div&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/google_on_socialsite</guid>
    <title>Google&amp;#39;s Rajdeep Dua on Project SocialSite</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/google_on_socialsite</link>
    <pubDate>Tue, 20 Jan 2009 16:58:51 +0000</pubDate>
    <category>Social Software</category>
    <category>opensocial</category>
    <category>socialsite</category>
<description>&lt;p&gt;I&amp;#39;m always happy to see Google talking about &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; in their OpenSocial presentations and pitches. We need all the help we can get with getting the word out.&lt;/p&gt;

&lt;p&gt;Now, Rajdeep Dua of Google Developer Relations has put together a 25 page presentation on &lt;a href=&quot;http://sites.google.com/site/opensocialarticles/social-site-architecture&quot;&gt;Project SocialSite Architecture&lt;/a&gt; with data model diagrams, UML and lots of detail. Good stuff. I posted some &lt;a href=&quot;http://markmail.org/message/liroxvhsfglofgtt&quot;&gt;comments and corrections&lt;/a&gt; to the Shindig-dev mailing list&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/socialsite_opensocial_extensions</guid>
    <title>SocialSite&amp;#39;s Opensocial extensions, part 1: Web services</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/socialsite_opensocial_extensions</link>
    <pubDate>Wed, 15 Oct 2008 17:45:54 +0000</pubDate>
    <category>General</category>
    <category>opensocial</category>
    <category>socialsite</category>
<atom:summary type="html">I&amp;#39;m on SocialSite blog patrol this week, which means that I need to post interesting stuff at &lt;a href=&quot;http://blogs.sun.com/socialsite&quot;&gt;blogs.sun.com/socialsite&lt;/a&gt;, or here or both places at once. So here&amp;#39;s some blog fodder, a series of posts describing the extensions we are making to OpenSocial.&amp;nbsp;</atom:summary><description>&amp;lt;img title=&amp;quot;OpenSocial logo&amp;quot; align=&amp;quot;right&amp;quot;
src=&amp;quot;http://rollerweblogger.org/roller/resource/opensocial_140_140.jpg&amp;quot; /&amp;gt;

&lt;p&gt;I&amp;#39;m on SocialSite blog patrol this week, which means that I need to post interesting stuff at &lt;a href=&quot;http://blogs.sun.com/socialsite&quot;&gt;blogs.sun.com/socialsite&lt;/a&gt;, or here or both places at once. &lt;/p&gt;

&lt;p&gt;So here&amp;#39;s some blog fodder, a series of posts describing the extensions we are making to OpenSocial for &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt;. I&amp;#39;ll start by describing the web services, then the JavaScript API and finally I&amp;#39;ll provide an example or two.&lt;/p&gt;

&lt;h3&gt;Background&lt;/h3&gt;

&lt;p&gt;As I may have mentioned before, the idea behind SocialSite is to add Social Networking features to existing web sites and applications. Any site or sites should be able to use our Widgets and Web Services to all the standard Social Networking features. To meet our Widget requirements we have to extend OpenSocial to support full read/write access to Social Graph data with support for &amp;quot;friending&amp;quot; with configurable relationship levels, profile editing, group invites, group management, application management and other things.&lt;/p&gt;

&lt;h3&gt;A word about implementation&lt;/h3&gt;

&lt;p&gt;On the server-side, our extensions are implemented as &lt;a href=&quot;http://incubator.apache.org/shindig/&quot;&gt;Shinding&lt;/a&gt;/Java &lt;code&gt;DataRequestHandlers&lt;/code&gt;, which makes them available as both a REST API and a JSON-RPC interface. This means that they&amp;#39;re available in a form very similar to that of the standard &lt;a href=&quot;http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/restful-protocol&quot;&gt;OpenSocial REST API&lt;/a&gt; and in a form very similar to the standard &lt;a href=&quot;http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/rpc-protocol&quot;&gt;OpenSocial JSON-RPC API&lt;/a&gt;.

&lt;p&gt;To give you an overview of the SocialSite extensions, I&amp;#39;ll review the REST form of our APIs including all of the URIs we support and the HTTP verbs we support for each.&lt;/p&gt;  


td.uri { width:40%; font-family: Courier; font-size: 10px; }
td.data {width:5%; font-family: Courier; font-size: 10px; }
td.verbs {width:55%;}
td.uri, td.verbs, td.data { border-bottom: grey dotted 1px; vertical-align: text-top}
td.routetitle {background: #efefef; color: black; padding: 3px;}
table.apiref {width:100%; font-size:13px; margin-bottom: 0.5em;}




&lt;h3&gt;People and friending&lt;/h3&gt;

&lt;p&gt;The standard OpenSocial APIs don&amp;#39;t support &amp;quot;friending&amp;quot; -- the process of requesting and negotiating some form of social relationship with another user. So, we&amp;#39;ve added some new URIs to the &lt;code&gt;/people&lt;/code&gt; route in OpenSocial because support . These URIs return and accept standard OpenSocial Person objects, for example to request a relationship with somebody, you POST a representation of that person to your @friends collection.&lt;/p&gt;

&lt;table class=&quot;apiref&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;routetitle&quot; colspan=&quot;3&quot;&gt;People&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/people/{userId}/@friends&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Person&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;POST - Person to request or accept relationship&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/people/{userId}/@requests&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Person&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;GET - List of Persons requesting relationship&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/people/{userId}/@requests/{personId}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;n/a&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;DELETE - ignore a Person requesting relationship&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/people/{userId}/@friends/{personId}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;n/a&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;DELETE - remove relationship with Person&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;



&lt;h3&gt;Profile editing and metadata&lt;/h3&gt;

&lt;p&gt;The standard OpenSocial APIs don&amp;#39;t support creating and updating profile data. So, we&amp;#39;ve added new &lt;code&gt;/profile&lt;/code&gt; and &lt;code&gt;/profiledef&lt;/code&gt; routes to enable metadata driven profile property editing. You can create, retrieve and update profile properties for each user. You can also get metadata that defines all profile properties, their types and accepted values.&lt;/p&gt;

&lt;table class=&quot;apiref&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;routetitle&quot; colspan=&quot;3&quot;&gt;Profiles&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/profiles/{userId}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Profile&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;
        GET - SocialSite profile data properties for one user&lt;br&gt;
        PUT - Update profile data for one  user
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/profiles&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Profile&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;POST - add a new profile via SocialSite profile data properties&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/profiledef&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;ProfileDefinition&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;GET - SocialSite profile property metadata in JSON format&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;



&lt;h3&gt;Profile Privacy Settings&lt;/h3&gt;

&lt;p&gt;The standard OpenSocial APIs don&amp;#39;t give you any control over who can see which parts of your profile or activities. So, in the standard SocialSite setup, we have grouped the standard OpenSocial properties into seven sections: identification, contact, extended contact, personal, more personal, experience and education. For each of these sections you can choose a visibility level; here they are from most restrictive to least: private, friends only, visible to some your groups, visible to all of your groups and public.&lt;/p&gt;

&lt;table class=&quot;apiref&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;routetitle&quot; colspan=&quot;3&quot;&gt;Privacy settings&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/sectionprivs/{userId}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;List of SectionPrivacy&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;GET - section privacy settings for user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/sectionprivs/{userId}/{sectionName}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;SectionPrivacy&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;    
        GET - section privacy setting for one profile section&lt;br&gt;
        PUT - update section privacy setting for one profile section
    &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;




&lt;h3&gt;Group creation, management and invitations&lt;/h3&gt;

&lt;p&gt;The standard OpenSocial APIs don&amp;#39;t support any group creation, management or invitation capabilities. So, we added those too. Like SocialSite Profiles, Groups have properties which are defined by a metadata definition file. Here are the URIs and HTTP verbs for each:&lt;/p&gt;

&lt;table class=&quot;apiref&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;routetitle&quot; colspan=&quot;3&quot;&gt;Groups&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/groups/@public&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Group&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;
        GET - all public groups&lt;br&gt;
        POST - create a new public group&lt;br&gt;
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/groups/@public/{groupId}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Group&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;
        GET - group specified by group ID&lt;br&gt;
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/groups/@public/@current&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Group&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;
        GET - owning group specified by context (security token)&lt;br&gt;
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/groups/{userId}&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Group&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;
        GET - all of user&amp;#39;s groups&lt;br&gt;
    &lt;/td&gt;
&lt;/tr&gt; 
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt;/groups/{userId}/@friends&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;Group&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;
        GET - all of user&amp;#39;s friend&amp;#39;s groups&lt;br&gt;
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td class=&quot;uri&quot;&gt; /groupdef&lt;/td&gt;
    &lt;td class=&quot;data&quot;&gt;GroupDefinition&lt;/td&gt;
    &lt;td class=&quot;verbs&quot;&gt;GET - SocialSite group property metadata in JSON format&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Looks like that&amp;#39;s all I have time for today. Dinner time is here &lt;img src=&quot;https://rollerweblogger.org/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot;&gt; I&amp;#39;ll cover the rest of the Web Services in part 2, later this week.&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/re_shindig_java_internals</guid>
    <title>re: Shindig/Java internals</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/re_shindig_java_internals</link>
    <pubDate>Wed, 24 Sep 2008 08:59:09 +0000</pubDate>
    <category>Social Software</category>
    <category>opensocial</category>
    <category>shindig</category>
<description>&lt;p&gt;If you want more on Shindig/Java internals, then check this out. Rajdeep Dua has written a very detailed article on the topic and he is asking for feedback: &lt;a href=&quot;http://sites.google.com/site/opensocialarticles/Home/shindig-rest-java&quot;&gt;Overview of REST Implementation in Shindig - Java Version&lt;/a&gt;.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated</guid>
    <title>Shindig/Java internals diagram updated</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated</link>
    <pubDate>Tue, 23 Sep 2008 16:09:52 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>opensocial</category>
    <category>rest</category>
    <category>shindig</category>
<atom:summary type="html">&lt;p&gt;A lot has changed since I did my &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/2479920936/&quot;&gt;first&lt;/a&gt; and even my &lt;a href=&quot;http://blogs.sun.com/socialsite/entry/how_the_shindig_rest_api&quot;&gt;second &amp;quot;how does Shindig/Java work&amp;quot; diagram&lt;/a&gt;. Believe it or not, there are now two separate web services protocols in OpenSocial and thus in Shindig. How did that happen you wonder, well read on...&lt;/p&gt;</atom:summary><description>&lt;p&gt;A lot has changed since I did my &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/2479920936/&quot;&gt;first&lt;/a&gt; and even my &lt;a href=&quot;http://blogs.sun.com/socialsite/entry/how_the_shindig_rest_api&quot;&gt;second &amp;quot;how does Shindig/Java work&amp;quot; diagram&lt;/a&gt;. Believe it or not, there are now two separate web services protocols in OpenSocial and thus in Shindig. I&amp;#39;ll explain that and then I&amp;#39;ll share my updated diagram and synopsis of Shindig/Java internals.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;NOTE: this post covers the social API implementation only and not the Gadget server portions of Shindig.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s what happened. There was a long discussion on the OpenSocial spec mailing list about the merits of REST vs. RPC for the OpenSocial web services APIs (e.g. &lt;a href=&quot;http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/a4ddf7cd09f90237/5cfa1658e1c1d698?lnk=gst&amp;q=rest#5cfa1658e1c1d698&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/d1a5627fb6e686ce/d27d47dee92a87b2&quot;&gt;here&lt;/a&gt;). I&amp;#39;m not going to characterize the two sides as the JavaScripty Gadgeteers and the XML-smokin&amp;#39; RESTafarians because that would be just plain silly. Long story short, neither side really &amp;quot;won&amp;quot; and so the latest rev 0.8.1 of OpenSocial includes two separate web services protocols:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;http://docs.google.com/View?docid=dcc2jvzt_37hdzwkmf8&quot;&gt;OpenSocial REST API&lt;/a&gt;, which is based on &lt;a href=&quot;http://bitworking.org/projects/atom/rfc5023.html&quot;&gt;AtomPub&lt;/a&gt; but with support for XML and JSON formats in addition to Atom format XML. There is no support for batching of operations. (There was a &lt;a href=&quot;http://docs.google.com/View?docid=dc43mmng_23fdbpp7hd&quot;&gt;proposal for RESTful batching&lt;/a&gt;, but it did not gain consensus.)&lt;/li&gt;

&lt;li&gt;The &lt;a href=&quot;http://docs.google.com/View?docid=dhjrqr8t_4cwzqq7gh&quot;&gt;OpenSocial JSON-RPC API&lt;/a&gt; where methods are called by HTTP POSTing JSON data and there is full support for batching of operations.&lt;/li&gt;  
&lt;/ul&gt;

&lt;p&gt;Seems a pity to have two separate protocols that serve essentially the same purpose, but thankfully there are a lot of similarities. For example, the JSON-RPC protocol methods are GET, POST, PUT and DELETE. And the JSON format used in the JSON-RPC protocol matches the one in the REST API. That makes things a little easier for implementers and if you use Shindig as the basis for your social network&amp;#39;s OpenSocial implementation, it&amp;#39;s even easier -- you implement one set of interfaces and you get support for both REST and JSON-RPC. Next, I&amp;#39;ll explain how that works with my updated diagram:&lt;/p&gt; 

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/how-shindig-works-sep-2008.graffle.jpg&quot; alt=&quot;diagram&quot;&gt;

&lt;p&gt;And I&amp;#39;ll explain by walking through the processing of one request; here&amp;#39;s the walk-through (new stuff is &lt;span style=&quot;background:yellow;&quot;&gt;highlighted in yellow&lt;/span&gt;:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;1...&lt;/span&gt; 
A request enters Shindig&lt;/b&gt; via &lt;span style=&quot;background:yellow;&quot;&gt;either the &lt;code&gt;DataServiceServlet&lt;/code&gt; at &lt;code&gt;/social/rest&lt;/code&gt; or the &lt;code&gt;JsonRpcServlet&lt;/code&gt; at &lt;code&gt;/social/rpc&lt;/code&gt;&lt;/span&gt;, which has a map of &lt;code&gt;DataRequestHandler&lt;/code&gt;s (which it got from the &lt;code&gt;HandlerProvider&lt;/code&gt;) keyed by the route that each handles. It&amp;#39;s also got a pair of bean converters, which will come into play later when we need to convert outgoing POJOs to XML or JSON representation.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;2...&lt;/span&gt; The Servlet creates a &lt;code&gt;RequestItem&lt;/code&gt;&lt;/b&gt;, which parses the request for easy access later. The request item also has a pair of converters which can be used to convert incoming XML or JSON data into Java POJOs.&lt;/p&gt;

&lt;p style=&quot;background:yellow;&quot;&gt;There are two different request items, one for REST &lt;code&gt;RestfulRequestItem&lt;/code&gt; and one for RPC &lt;code&gt;RpcRequestItem&lt;/code&gt;. The RESTful request item parses the incoming URL for parameters and treats data from a POST or PUT as typed data, to be automatically converted from JSON, XML or Atom into a Java POJO object from the SPI.&lt;/p&gt;

&lt;p style=&quot;background:yellow;&quot;&gt;In the RPC case, everything is a POST and the request item grabs its parameters and the typed payload from the JSON object that was posted to the server.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;3...&lt;/span&gt; The Servlet calls the appropriate handlers.&lt;/b&gt; If the request is a single request, then the Servlet looks up a &lt;code&gt;DataRequestHandler&lt;/code&gt; based on the request&amp;#39;s &amp;quot;route&amp;quot; (i.e. the first segment of URL&amp;#39;s pathinfo). The Servlet calls the selected handler, hands it a request item. If the request is a batch request then the Servlet does the same as above, but in a loop collecting request items.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;4...&lt;/span&gt; One of Shindig&amp;#39;s three request handlers then handles the request&lt;/b&gt; and returns a &lt;code&gt;ResponseItem&lt;/code&gt; or (plural) items containing the Plain Old Java Objects (POJOs) to be returned to the called. This is the point where incoming XML or JSON data is de-serialized to POJO form by a call to &lt;span style=&quot;background:yellow;&quot;&gt;&lt;code&gt;requestItem.getTypedParameter()&lt;/code&gt;&lt;/span&gt;. Shinding provides three &lt;code&gt;DataRequestHandler&lt;/code&gt;s:&lt;/p&gt;

&lt;ul&gt;   
&lt;li&gt;&lt;b&gt;&lt;code&gt;PersonHandler&lt;/code&gt;&lt;/b&gt;: returns Person objects with detailed profile information&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;ActivtyHandler&lt;/code&gt;&lt;/b&gt;: returns Activities of people or group, allows activity creation&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;AppDataHandler&lt;/code&gt;&lt;/b&gt;: returns Gadget data, allows Gadets to store data&lt;/li&gt;
&lt;/ul&gt;   

&lt;p&gt;NOTE: If want to add your own  &lt;span style=&quot;background:yellow;&quot;&gt;REST/RPC APIs to extend Shindig, as we are &lt;a href=&quot;http://wikis.glassfish.org/socialsite/Wiki.jsp?page=FinalizeRESTAPI&quot;&gt;doing in SocialSite&lt;/a&gt;&lt;/span&gt;, you can do it by hooking in your own handlers. Use &lt;a href=&quot;http://code.google.com/p/google-guice/&quot;&gt;Guice&lt;/a&gt; dependency injection to hook in your own custom &lt;code&gt;HandlerProvider&lt;/code&gt;, one that returns your own custom handlers.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;5...&lt;/span&gt; The Shindig handlers call the Shindig Service Provider (SPI)&lt;/b&gt;, which is defined by a set of interfaces with methods that return &lt;code&gt;ResponseItem&lt;/code&gt;s. There is a set of model objects, aka POJOS, shown in green that represent the different data types that can be returned by the REST &lt;span style=&quot;background:yellow;&quot;&gt;or RPC&lt;/span&gt; APIs. The service implementations return these POJO objects and expect the Shindig infrastructure to automatically map POJO to either JSON or XML as appropriate.&lt;/p&gt;

&lt;ul&gt;   
&lt;li&gt;&lt;b&gt;&lt;code&gt;PersonService&lt;/code&gt;&lt;/b&gt;: returns Person objects with detailed profile information&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;ActivtyService&lt;/code&gt;&lt;/b&gt;: returns Activities of people or group, allows activity creation&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;AppDataService&lt;/code&gt;&lt;/b&gt;: returns Gadget data, allows Gadgets to store data&lt;/li&gt;
&lt;/ul&gt;   

&lt;p&gt;NOTE: the SPI is where you hook in to Shindig if you want to expose your application&amp;#39;s Social Graph data via the standard OpenSocial REST &lt;span style=&quot;background:yellow;&quot;&gt;or RPC&lt;/span&gt; API. You implement these interfaces with code that calls your back-end to create, retrieve update and delete data. And you hook your implementation via Guice.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;6...&lt;/span&gt; The handler returns a ResponseItem&lt;/b&gt;, which wraps one or a collection of POJOs. The Servlet may then write that response out or, in the batch case, continue to call handlers and collect more &lt;code&gt;ResponseItem&lt;/code&gt;s.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;7...&lt;/span&gt;Servlet converts/serializes and returns &lt;code&gt;ResponseItem&lt;/code&gt;s&lt;/b&gt;. &lt;span style=&quot;background:yellow;&quot;&gt;In the REST API case, once the handler, or handlers in the batch case, returns the response item(s), the &lt;code&gt;DataServiceServlet&lt;/code&gt;&lt;/span&gt; calls the appropriate converter to serialize the item(s) to either JSON or XML format depending on what was specified in the &amp;#39;format&amp;#39; request parameter.&lt;/p&gt;

&lt;p&gt;And that&amp;#39;s that...&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/project_socialsite_opens_up</guid>
    <title>Project SocialSite opens up!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/project_socialsite_opens_up</link>
    <pubDate>Fri, 8 Aug 2008 15:36:08 +0000</pubDate>
    <category>Sun</category>
    <category>opensocial</category>
    <category>opensource</category>
    <category>socialsite</category>
<description>&lt;p&gt;My teammates and I have started a &lt;a href=&quot;http://blogs.sun.com/socialsite&quot;&gt;new blog&lt;/a&gt; over at blogs.sun.com to cover Project SocialSite and to break the big news: we&amp;#39;re open!&lt;/p&gt;

&lt;blockquote&gt;
We are very pleased to announce that &lt;b&gt;source code is now available&lt;/b&gt; for &lt;a href=&quot;https://socialsite.dev.java.net/&quot;&gt;Project SocialSite&lt;/a&gt;
(under a CDDL/GPL license) and the project is now operating as an open
source project following the Glassfish governance policy. We&amp;#39;re working
in the open and welcome contributors of all stripes.
&lt;a href=&quot;http://blogs.sun.com/socialsite/entry/project_socialsite_opens_up&quot;&gt;Read more...&lt;/a&gt;
&lt;/blockquote&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/opensocial_summit_next_week</guid>
    <title>OpenSocial summit next week</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/opensocial_summit_next_week</link>
    <pubDate>Thu, 8 May 2008 19:19:43 +0000</pubDate>
    <category>Social Software</category>
    <category>google</category>
    <category>opensocial</category>
    <category>socialsite</category>
<description>&lt;p&gt;There will be a &lt;a href=&quot;http://opensocialapis.blogspot.com/2008/05/opensocial-summit-may-14th-at.html&quot;&gt;OpenSocial Summit: May 14th, at the Googleplex&lt;/a&gt; covering the new v0.8 spec changes and all sorts of other interesting things. Wish I could make it, but I&amp;#39;ll be happily back home in the old north state. Hopefully, somebody from the SocialSite team will be able to attend.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/sweet_opensocial_preso</guid>
    <title>Sweet OpenSocial preso</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/sweet_opensocial_preso</link>
    <pubDate>Tue, 4 Mar 2008 18:56:07 +0000</pubDate>
    <category>Social Software</category>
    <category>google</category>
    <category>opensocial</category>
    <category>socialsoftware</category>
<description>&lt;p&gt;From the &lt;a href=&quot;http://en.oreilly.com/gspwest2008/&quot;&gt;Graphing Social Patterns 2008&lt;/a&gt; conference, a sweet &lt;a href=&quot;http://wordpress.chanezon.com/?p=29&quot;&gt;OpenSocial presentation&lt;/a&gt; with a nice overview of the emerging standard, status of the Apache Shindig project, details of the Hi5 implementation, some cute pictures of my buddy Pat Chanezon&amp;#39;s kids and some very fine art (I think Pat forgot to credit the artist).&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links27</guid>
    <title>Latest Links: Feb. 16, 2008</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links27</link>
    <pubDate>Sat, 16 Feb 2008 12:48:07 +0000</pubDate>
    <category>Links</category>
    <category>facebook</category>
    <category>java</category>
    <category>liferay</category>
    <category>opensocial</category>
    <category>socialnetworking</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://gigaom.com/2008/02/04/more-on-myspaces-open-development-platform/&quot;&gt;More on MySpaceâ&#128;&#153;s Open Development Platform - GigaOM&lt;/a&gt;&lt;br&gt;&amp;quot;made up of three APIs â&#128;&#148; primarily Open Social and extensions weâ&#128;&#153;ve added&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=7891&quot;&gt;ZDNet.com: Progress report on the OpenSocial Web&lt;/a&gt;&lt;br&gt; Summary of latest OpenSocial news and hackathons from Dan Farber&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.readwriteweb.com/archives/facebook_to_punish_stupid_apps.php&quot;&gt;Facebook to Punish Stupid Applications, Reward Good Ones - ReadWriteWeb&lt;/a&gt;&lt;br&gt;&amp;quot;Metered messaging based on user engagement could save the Facebook Platform from a growing sense of app fatigue&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/roumen/entry/android_plug_in_for_netbeans&quot;&gt;Roumen&amp;#39;s Weblog: Android plug-in for NetBeans&lt;/a&gt;&lt;br&gt;&amp;quot;the screenshots look promising&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jroller.com/robwilliams/entry/few_random_rants&quot;&gt;Rob Williams&amp;#39; Blog: finally ditched LifeRay&lt;/a&gt;&lt;br&gt; &amp;quot;we have finally ditched Liferay in favor of JBoss Portal. So far so good. It is much more stable. The code base is not a rat&amp;#39;s nest of untested Struts goop.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://meraki.com/oursolution/hardware/mini/&quot;&gt;Indoor WiFi Signal Booster by Meraki&lt;/a&gt;&lt;br&gt;&amp;quot;Meraki Mini is a small, easy-to-use wireless mesh repeater.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/opensocial_0_7</guid>
    <title>AtomPub in OpenSocial 0.7</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/opensocial_0_7</link>
    <pubDate>Tue, 5 Feb 2008 11:38:30 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>opensocial</category>
    <category>socialnetworking</category>
<description>&lt;p&gt;I missed this one in my social networking API link-fest yesterday: &lt;a href=&quot;http://opensocialapis.blogspot.com/2008/02/opensocial-07-coming-to-user-near-you.html&quot;&gt;Google announced version 0.7 of the OpenSocial API&lt;/a&gt;, some of the data APIs are outlined in the spec and they&amp;#39;re still using AtomPub protocol (just like GData).&lt;/p&gt;

&lt;p&gt;I had heard there was some push-back against AtomPub, but I really don&amp;#39;t know what is going on because there is no transparency at all in the specification development process. So, who knows, but I really don&amp;#39;t think they have time to invent an all new protocol. In fact, they&amp;#39;d better wrap things up tout de suite because Google&amp;#39;s planning to &lt;a href=&quot;http://opensocialapis.blogspot.com/2008/02/our-doors-are-open-to-opensocial.html&quot;&gt;go live&lt;/a&gt; with OpenSocial on Orkut during the last week of February.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links28</guid>
    <title>Lots of latest links: social networking APIs and more</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links28</link>
    <pubDate>Mon, 4 Feb 2008 14:00:07 +0000</pubDate>
    <category>Links</category>
    <category>abdera</category>
    <category>app</category>
    <category>blogging</category>
    <category>opensocial</category>
    <category>shindig</category>
    <category>socialnetworking</category>
<atom:summary type="html">Here are my links for the past week or so and notes about social networking APIs, using  the web itself as a social network, JMaki, Abdera and more.&amp;nbsp;</atom:summary><description>&lt;p&gt;First, some links from open source projects I&amp;#39;m trying to follow. Check out the JMaki Webtop widget, it looks pretty useful. Now that I&amp;#39;ve got JMaki support in Roller, this could be the basis for some cool drag-and-drop blog layout. Wish I had time for that; I&amp;#39;m still trying to carve out some time to dig into the Abdera server framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jmaki.com/webtop/&quot;&gt;jMaki Webtop&lt;/a&gt;&lt;br&gt; Cool iGoogle style portal interface via JMaki&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jspwiki.org/wiki/JSPWiki3Design&quot;&gt;JSPWiki: JSP Wiki 3 Design&lt;/a&gt;&lt;br&gt; JCR back-end, wiki spaces and more...&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://cwiki.apache.org/ABDERA/server-implementation-guide.html&quot;&gt;Abdera Server Implementation Guide&lt;/a&gt;&lt;br&gt;&amp;quot;The Abdera Server module provides a framework for constructing Atom Publishing Protocol server implementations.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;I&amp;#39;m also following OpenSocial and Shindig (the reference implementation of OpenSocial) pretty closely, but thus far have not had time to dive into the code. There&amp;#39;s lots of activity on the Shindig list, but thus far there&amp;#39;s no server-side and security is still up in the air -- both are pending change to the spec itself. Marc Cantor has an interesting perspective on the OpenSocial.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trac.hyves-api.nl/hyves-api/wiki/ShindigStarted&quot;&gt;ShindigStarted - hyves_api - Trac&lt;/a&gt;&lt;br&gt;&amp;quot;a small guide on how to get started on Shindig.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.news.com/Waiting-for-the-OpenSocial-hammer-to-drop/2010-1032_3-6227796.html?part=rss&amp;tag=2547-1_3-0-5&amp;subj=news&quot;&gt;CNET Mark Cantor: Waiting for the OpenSocial hammer to drop&lt;/a&gt;&lt;br&gt;&amp;quot;We all hope that MySpace, Bebo, and others will open up and go beyond the original scope of OpenSocial to lay the groundwork for a truly open world of social networking.&amp;quot;&lt;/li&gt;

&lt;li&gt;&amp;lt;a href=&amp;quot;http://www.techcrunch.com/2008/01/17/kickapps-publishes-api-kit-adopts-facebook-and-opensocial-platform-
standards/&amp;quot;&amp;gt;KickApps Publishes API, Adopts Facebook and OpenSocial standards&lt;br&gt; &amp;quot;KickApps has adopted Googleâ&#128;&#153;s OpenSocial developer platform standards and is working with Facebook to adopt that companyâ&#128;&#153;s standards as well.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;I&amp;#39;m also following Facebook. While Google and friends scramble to catch up, Facebook Apps are getting easier to write, thanks to a new JavaScript API, and easier to deploy thanks to Amazon Web Services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.allfacebook.com/2008/01/facebook-extends-platform-to-the-web/&quot;&gt;Facebook Extends Platform to the Web - The Unofficial Facebook Blog&lt;/a&gt;&lt;br&gt;&amp;quot;This is a huge step in Facebook extending their platform beyond the Facebook.com domain and letting people leverage the power of the social graph&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.developers.facebook.com/index.php/JavaScript_Client_Library&quot;&gt;JavaScript Client Library - Facebook Developers Wiki&lt;/a&gt;&lt;br&gt;&amp;quot;Applications that use this client library should be configured to load in an iframe, not be rendered with FBML&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://developers.facebook.com/news.php?blog=1&amp;story=73&quot;&gt;Facebook JavaScript Client Library&lt;/a&gt;&lt;br&gt;&amp;quot;This JavaScript client library allows you to make Facebook API calls from any web site and makes it easy to create Ajax Facebook applications&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://aws.typepad.com/aws/2008/01/aws-for-faceboo.html&quot;&gt;Amazon Web Services Blog: AWS For Facebook Applications&lt;/a&gt;&lt;br&gt;&amp;quot;we&amp;#39;ve teamed with  Facebook to collect all of the resources that you need to be the next big success story in one convenient location.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Personally, I really like the idea of the web itself as the social network and your blog as the home for your personal profile. So, I think the new Social Graph API is a step in the right direction, as is the blog-based Distributed Social Networking (DiSo) project. &lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://www.buzzmachine.com/2008/02/02/the-internet-is-the-social-network/&quot;&gt;BuzzMachine:The internet is the social network&lt;/a&gt;&lt;br&gt;&amp;quot;The internet doesnâ&#128;&#153;t need more social networks. The internet is the social network.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/socialgraph/&quot;&gt;Social Graph API - Google Code&lt;/a&gt;&lt;br&gt; Project homepage&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://almaer.com/blog/google-social-graph-api-released&quot;&gt;Google Social Graph API Released on Dion Almaer&amp;#39;s Blog&lt;/a&gt;&lt;br&gt;&amp;quot;Would you like to be able to make a quick call to get a JSON response that ties together a social graph made up of resources available on the Web?&amp;quot;;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/diso/&quot;&gt;diso - Google Code&lt;/a&gt;&lt;br&gt; &amp;quot;DiSo (dee â&#128;¢ zoh) is an umbrella project [for] as Chris puts it: &amp;#39;to build a social network with its skin inside out&amp;#39;&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.vimeo.com/629450&quot;&gt;The Existential DiSo Interview on Vimeo&lt;/a&gt;&lt;br&gt; Factory Joe interviews himself re: Distributed Social Networking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, I&amp;#39;m happy to see support for Twitter-like microblogging in Wordpress and Facebook like activity streams from Movable Type.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://wordpress.com/blog/2008/01/28/introducing-prologue/&quot;&gt;Introducing Prologue: WordPress.com&lt;/a&gt;&lt;br&gt; &amp;quot;Weâ&#128;&#153;re fans of Twitter around here, [but] while the format appealed to us it really just whetted our appetite for something more&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.movabletype.org/2008/01/building_action_streams.html&quot;&gt;Building Action Streams - MovableType.org&lt;/a&gt;&lt;br&gt; &amp;quot;framework for collecting your actions from services around the web into one place for you to share back out as you see fit.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://plugins.movabletype.org/action-streams/&quot;&gt;Action Streams | Plugin Directory | movabletype.org&lt;/a&gt;&lt;br&gt; &amp;quot;aggregate, control, and share your actions around the web &amp;quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And to wrap up: maybe I don&amp;#39;t need to worry about the intersection of Blogging and Social Networking at all. Maybe there&amp;#39;s no need to following all these APIs. Maybe the hype has peaked and Facebook and friends are about to go the way of the CB radio. Apparently, folks aren&amp;#39;t spending quite as much time Facebooking as they used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=7846&quot;&gt;ZDNet.com: Ohmigod! Social networkers just canâ&#128;&#153;t take it any more!&lt;/a&gt;&lt;br&gt; &amp;quot;it is entirely possible that people are beginning to question just how much time they spend socially networking, rather than socially living.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links34</guid>
    <title>Latest Links</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links34</link>
    <pubDate>Tue, 18 Dec 2007 14:00:07 +0000</pubDate>
    <category>Links</category>
    <category>opensocial</category>
    <category>opensource</category>
    <category>roller</category>
<description>Today, I&amp;#39;ve got a couple of additions to my powered-by-Roller list:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gmjjavadesigns.com/gmjd/entry/apache_roller_4_0_released&quot;&gt;GMJ Designs : Apache Roller 4.0 Released&lt;/a&gt;&lt;br&gt;&amp;quot;I love the interface and it works great.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.toasttechnology.com.au/roller/&quot;&gt;Toast Technology Blogs : Weblog&lt;/a&gt;&lt;br&gt;
SOA and business portal consultancy blogging with Roller&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.limlom.com/blog/&quot;&gt;Limlom.com company blog&lt;/a&gt;&lt;br&gt;
Business solutions and J2EE consultancy blogging with Roller&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://journal.biblicalrecorder.org/br/&quot;&gt;Biblical Recorder journals&lt;/a&gt;&lt;br&gt;
Blogs and Baptist Planet all powered by Roller&lt;/li&gt;
&lt;/ul&gt;


More about the opening of the Social Networking platforms of the world:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/12/13/SomeThoughtsOnTheOpeningOfTheFacebookPlatformArchitecture.aspx&quot;&gt;Dare Obasanjo: Thoughts on the Opening of the Facebook Platform&lt;/a&gt;&lt;br&gt;
&amp;quot;looks like Facebook plans to assert their Intellectual Property rights on anyone who clones their platform&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://opensocialapis.blogspot.com/2007/12/lets-get-this-shindig-started.html&quot;&gt;OpenSocial API Blog: Let&amp;#39;s get this Shindig started&lt;/a&gt;&lt;br&gt;
&amp;quot;We&amp;#39;re thrilled to tell you the initial commit to the Shindig repository is in&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://factoryjoe.com/blog/2007/12/13/ruminating-on-diso-and-the-public-domain/&quot;&gt;Ruminating on DiSo and the public domain&lt;/a&gt;&lt;br&gt;
&amp;quot;Iâ&#128;&#153;m hopeful about projects like Shindig that call themselves â&#128;&#156;open sourceâ&#128;&#157; and are able to be sponsored by stringent organizations like the Apache foundation. But...&amp;quot;&lt;/li&gt;
&lt;/ul&gt;

And some more about the intersection of corporate interests and community open source:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoworld.com/article/07/12/12/Open-source-and-the-corporate-elephant_1.html?source=rss&amp;url=http://www.infoworld.com/article/07/12/12/Open-source-and-the-corporate-elephant_1.html&quot;&gt;InfoWorld: Open source and the corporate elephant (FOSS.IN coverage)&lt;/a&gt;&lt;br&gt;
Danese Cooper: &amp;quot;Having a well-read blog is the best defense you can have against any problems you may encounter&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.eweek.com/article2/0,1895,2231465,00.asp&quot;&gt;eWeek: Sun Open-Source Support Questioned&lt;/a&gt;&lt;br&gt; 
&amp;quot;The only reason anyone should be surprised by anything Sun does with [the open-source projects] it controls is because that person has fundamentally created an expectation that access to source code meant more than just thatâ&#128;&#148;and that is a flawed assumption.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.regdeveloper.co.uk/2007/12/05/sun_opends_defining_terms/print.html&quot;&gt;Reg Developer: Bruce Perens on the OpenDS spat&lt;/a&gt;&lt;br&gt;
&amp;quot;In general open source is only going to work if you let it be a community led project. Sun has had a hard time learning this, and some of their open source projects have had a hard time getting outside contributors, because Sun has insisted on owning the [project]&amp;quot;&lt;/li&gt;
&lt;/ul&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links20</guid>
    <title>Latest Links: Feedsync, AtomPub for SOA, OpenSocial and more</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links20</link>
    <pubDate>Thu, 6 Dec 2007 14:00:10 +0000</pubDate>
    <category>Links</category>
    <category>atom</category>
    <category>atompub</category>
    <category>opensocial</category>
    <category>socialsoftware</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.snellspace.com/wp/?p=818&quot;&gt;snellspace.com: Sync!&lt;/a&gt;&lt;br&gt; &amp;quot;Within the course of implementing several Atompub servers, the issue of â&#128;&#156;feed synchronizationâ&#128;&#157; has come up repeatedly&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pzf.fremantle.org/2007/12/new-kind-of-soa-registry.html&quot;&gt;Paul Fremantle&amp;#39;s Blog: A new kind of (SOA) Registry&lt;/a&gt;&lt;br&gt;&amp;quot;as we looked at the REST space, we kept noticing how close the [AtomPub] is to our needs&amp;quot;&lt;/li&gt;
&lt;br&gt;


&lt;li&gt;&lt;a href=&quot;http://www.chanezon.com/pat/presos/OpenSocial_Berlin_Web_2_0_Expo_2007/OpenSocial_Berlin_Web_2_0_.html&quot;&gt;OpenSocial - Berlin Web 2.0 Expo&lt;/a&gt;&lt;br&gt;Google API evangelist Pat Chanezon&amp;#39;s OpenSocial presentation&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/opensocket/&quot;&gt;opensocket - Run OpenSocial Gadgets in Facebook&lt;/a&gt;&lt;br&gt;An OpenSocial container written as a Facebook application.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.elctech.com/2007/11/27/opensocial-container-plugin-0-0-1&quot;&gt;Ruby on Rails: OpenSocial container plugin 0.0.1&lt;/a&gt;&lt;br&gt;&amp;quot;This is a very early version, but it is under very active development &amp;quot;&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://blip.tv/file/508079&quot;&gt;IBM&amp;#39;s Carol Jones on Web 2.0 Research and Collaborative Software&lt;/a&gt;&lt;br&gt;Redmonk video discussion of Lotus Connections, Dogear, internal/private vs. external bookmarking&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/eclectic/entry/roller_google_weblog_blog_translation&quot;&gt;Wayne Horkan&amp;#39;s weblog eclectic: Weblog language translator&lt;/a&gt;&lt;br&gt; With Roller specific functionality. Based on JavaScript and Google translation API&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=7207&quot;&gt;ZDNet.com: Social nets and identity fragmentation&lt;/a&gt;&lt;br&gt;FaberNovel Consulting has mapped out some trends in social networking and digital identity&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.inuus.com/talks/hi5_pug_06122007.pdf&quot;&gt;Postgres at Hi5: June 2007 user group preso&lt;/a&gt;&lt;br&gt; How unique features of PostgreSQL helped Hi5 scale (PDF presentation)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developers.sun.com/events/communityone/pdfs/Scaling_Java_and_PostgreSQL_to_Great_Heights.pdf&quot;&gt;Scaling Java and PostgreSQL with Hyperic&lt;/a&gt;&lt;br&gt; Another perspective on PostgreSQL scalability at Hi5 (PDF presentation)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.skrenta.com/2007/05/scaling_facebook_hi5_with_memc.html&quot;&gt;Skrentablog: Scaling Facebook, Hi5 with memcached&lt;/a&gt;&lt;br&gt;&amp;quot;discussion of high volume [sites] using memcached as a critical scaling tool&amp;quot;&lt;/li&gt;
&lt;/ul&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_shindig_voting_in_progress</guid>
    <title>Apache Shindig voting in progress and more OpenSocial details emerge</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_shindig_voting_in_progress</link>
    <pubDate>Fri, 30 Nov 2007 12:48:25 +0000</pubDate>
    <category>Open Source</category>
    <category>asf</category>
    <category>java</category>
    <category>ning</category>
    <category>opensocial</category>
<description>&lt;p&gt;I wrote about Shindig before, it&amp;#39;s a new open source project to implement the &lt;a href=&quot;http://code.google.com/apis/opensocial/&quot;&gt;Google OpenSocial APIs&lt;/a&gt;. 

Well, now the official voting to accept the Shindig project into the &lt;a href=&quot;http://incubator.apache.org/&quot;&gt;Apache Incubator&lt;/a&gt; is in progress and some interesting details have emerged in the latest version of &lt;a href=&quot;http://markmail.org/message/6hed4akb4jefcdur&quot;&gt;the proposal&lt;/a&gt;. 

First, as you can see by the initial list of committers in the proposal Google has joined the Shindig effort in force. 

Second, the proposal says that Shindig will be the reference implementation of the OpenSocial APIs. 

And third, Shindig will not only include the client-side JavaScript container but also a Java back-end. 

Brian McAllister has already made some &amp;quot;gnarly&amp;quot; initial client-side &lt;a href=&quot;http://markmail.org/message/ypkv4qaksbmpmonh&quot;&gt;container code&lt;/a&gt; available, I can&amp;#39;t wait to see the Google contribution.&lt;/p&gt; </description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/shindig_open_source_implementation_of</guid>
    <title>Shindig: open source implementation of OpenSocial</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/shindig_open_source_implementation_of</link>
    <pubDate>Tue, 13 Nov 2007 11:29:50 +0000</pubDate>
    <category>Open Source</category>
    <category>opensocial</category>
    <category>socialsoftware</category>
<description>&lt;p&gt;Apache member &lt;a href=&quot;http://blog.skife.org/&quot;&gt;Brian McAllister&lt;/a&gt;, who works for Ning, has &lt;a href=&quot;http://markmail.org/message/yzkaf33e4v3ajfwx&quot;&gt;proposed a new project for Apache called Shindig&lt;/a&gt;. Here&amp;#39;s an excerpt from the proposal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenSocial provides a common set of APIs for social applications across multiple websites. With standard JavaScript and HTML,
developers can create social applications that use a social network&amp;#39;s friends and update feeds. A social application, in this context, is an application run by a third party provider and embedded in a web page, or web application, which consumes services provided by the container and by the application host. This is very similar to Portal/Portlet technology, but is based on client-side compositing, rather than server. More information can be found about OpenSocial at &lt;a href=&quot;http://code.google.com/apis/opensocial&quot;&gt;http://code.google.com/apis/opensocial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Shindig is an implementation of an emerging set of APIs for client-side composited web applications. The Apache Software Foundation has proven to have developed a strong system and set of mores for building community-centric, open standards based systems with a wide variety of participants. A robust, community-developed implementation of these APIs will encourage compatibility between service providers, ensure an excellent implementation is available to everyone, and enable faster and easier application development for users.&lt;/p&gt;
&lt;p&gt;. . .&lt;/p&gt;
&lt;p&gt;Ning, Inc. intends to donate code based on their implementation of OpenSocial. The backend systems will be replaced with more generic equivalents in order to not bind the implementation to specifics of the Ning platform.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Brian is pretty excited about OpenSocial as a light-weight client-side alternative to Portal/Portlet technology, not just for social apps but for webapps of all kind. He&amp;#39;d like to see both Apache Roller and Apache JSPWIki (incubating) become OpenSocial containers, despite the fact that neither product stores the social graph of user/friend relationships. Blogs and wikis are already great platforms for web development, OpenSocial could make them even stronger. Very interesting stuff. &lt;/p&gt;

&lt;p&gt;I hadn&amp;#39;t planned on talking OpenSocial during my &lt;a href=&quot;http://us.apachecon.com/us2007/program/talk/2023&quot;&gt;session&lt;/a&gt; tomorrow, but I might have to add a slide or two to illustrate the possibilities.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links_nov_12_2007</guid>
    <title>Latest links Nov. 12, 2007: Glassfish, OpenSocial and more</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links_nov_12_2007</link>
    <pubDate>Mon, 12 Nov 2007 07:23:08 +0000</pubDate>
    <category>Links</category>
    <category>app</category>
    <category>atom</category>
    <category>glassfish</category>
    <category>java</category>
    <category>opensocial</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.soundopinions.com/&quot;&gt;Sound Opinions from Chicago Public Radio and American Public Media&lt;/a&gt;&lt;br&gt; Best podcast ever&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/glassfish_interim_governance_board_now&quot;&gt;The Aquarium: GlassFish Interim Governance Board - Now Complete&lt;/a&gt;&lt;br&gt; &amp;quot;The complete roster is Tony, Greg Luck (Wotif.com) and Pierre Delisle (Google), and Simon and myself (Sun)&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/alexismp/entry/glassfish_sjs_as_in_production&quot;&gt;Bistro!: GlassFish/SJS AS in production - which bundle, which profile, ...?&lt;/a&gt;&lt;br&gt; Explains differences between developer, cluster and enterprise profiles&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/glassfishpodcast/&quot;&gt;GlassFish Podcast: The GlassFish Podcast&lt;/a&gt;&lt;br&gt; Finally, a Glassfish podcast! Props to Alexis Moussine-Pouchkine&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.apple.com/downloads/macosx/unix_open_source/glassfish.html&quot;&gt;Apple - Downloads - UNIX &amp;amp; Open Source - GlassFish&lt;/a&gt;&lt;br&gt; Download Glassfish V2 directly from Apple&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;newsId=20071105005882&amp;newsLang=en&quot;&gt;Red Hat and Sun Collaborate to Advance Open Source Java Technology&lt;/a&gt;&lt;br&gt; &amp;quot;Red Hat has signed Sun&amp;#39;s broad contributor agreement that covers participation in all Sun-led open source projects.&amp;quot;&lt;/li&gt;
&lt;br&gt;


&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/03/first-looks-at-opensocial-part-1-urls/&quot;&gt;Megginson: First looks at OpenSocial: part 1 (URLs)&lt;/a&gt;&lt;br&gt; Lists the URIs for the AtomPub collections available in OpenSocial&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/05/first-looks-at-opensocial-part-2-content-for-members-and-friends/&quot;&gt;Megginson: First looks at OpenSocial: part 2 (members and friends)&lt;/a&gt;&lt;br&gt; How OpenSocial members and friends are represented in Atom format&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/06/first-looks-at-opensocial-part-3-content-for-activities/&quot;&gt;Megginson: First looks at OpenSocial: part 3 (activities)&lt;/a&gt;&lt;br&gt; How OpenSocial activities are represented in Atom format and manipulated via AtomPub protocol&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/08/first-looks-at-opensocial-part-4-content-for-persistence-data/&quot;&gt;Megginson: First looks at OpenSocial: part 4 (persistence data)&lt;/a&gt;&lt;br&gt; How OpenSocial persistence is implemented via AtomPub protocol&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/opensocial-container-sample/wiki/GettingStarted&quot;&gt;Google: OpenSocial Container Sample&lt;/a&gt;&lt;br&gt; Shows &amp;quot;basic demonstration-level OpenSocial container can be implemented&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/11/03/GoogleOpenSocialTechnicalOverviewAndCritique.aspx&quot;&gt;Dare Obasanjo: OpenSocial Tech. Overview and Critique&lt;/a&gt;&lt;br&gt; &amp;quot;Despite these misgivings, I think this is a step in the right direction. Web widget and social graph APIs need to be standardized across the Web.&amp;quot;&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://www.snellspace.com/wp/?p=799&quot;&gt;snellspace.com: Notes, Part 2&lt;/a&gt;&lt;br&gt; &amp;quot;lots and lots of things that can be modeled as collections of web resources&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://netzooid.com/blog/2007/11/08/building-services-with-atompub/&quot;&gt;netzooid: Building Services with AtomPub&lt;/a&gt;&lt;br&gt; &amp;quot;While APP is not the one true protocol, I think I?m hooked&amp;quot;&lt;/li&gt;

&lt;/ul&gt;

</description>  </item>
</channel>
</rss>