<?xml version="1.0" encoding='utf-8'?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Blogging Roller</title>
    <subtitle type="html">Dave Johnson on open web technologies, social software and software development</subtitle>
    <id>https://rollerweblogger.org/roller/feed/entries/atom</id>
        <link rel="self" type="application/atom+xml" href="https://rollerweblogger.org/roller/feed/entries/atom?tags=shindig" />
    <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/" />
    <updated>2026-05-18T08:23:39+00:00</updated>
    <generator uri="http://roller.apache.org" version="6.1.5">Apache Roller</generator>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/apacheconus_2009_registration_open</id>
        <title type="html">ApacheConUS 2009 registration open, sign up now!</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/apacheconus_2009_registration_open"/>
        <published>2009-08-11T20:09:21+00:00</published>
        <updated>2009-08-12T03:48:12+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="apachecon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsite" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wookie" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/the_future_of_project_socialsite</id>
        <title type="html">The future of Project SocialSite: Apache?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/the_future_of_project_socialsite"/>
        <published>2009-03-27T13:17:27+00:00</published>
        <updated>2010-03-27T15:56:36+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsite" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/talking_shindig_at_apacheconeu</id>
        <title type="html">Upcoming: Shindig for Blogs and Wikis, ApacheCon EU</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/talking_shindig_at_apacheconeu"/>
        <published>2009-01-21T15:39:46+00:00</published>
        <updated>2009-02-06T20:44:54+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="apachecon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="conferences" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;The other day I got the happy news that my one of my proposed sessions was accepted for ApacheCon EU. ApacheCon and Amsterdam are definitely among my favorite places to be, so I&amp;#39;m thrilled. You ought to go too; here&amp;#39;s the information on the conference, which will include training, the hackathon and a BarCamp.&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;

&lt;p&gt;My session is titled &amp;lt;a href=&amp;quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184
&amp;quot;&amp;gt;Shindig for Blogs and Wikis. I&amp;#39;ll cover different approaches to adding social features to blogs and wikis and I&amp;#39;ll zoom-in on OpenSocial related options Shindig and Project SocialSite. Here&amp;#39;s the abstract, with some formatting that is missing from the ApacheCon site:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Blogs, wikis and feeds helped to make the web more social by making it easy for folks to read, write and have conversations on the web; and now social networking technologies are making the web and even more social.&lt;/p&gt;

&lt;p&gt;In this session you&amp;#39;ll learn about OpenSocial, a new standard for interacting with social networking data via Web Service and via JavaScript Gadgets that can be embedded into social networking sites. You&amp;#39;ll learn about Apache Shindig (incubating), which is the reference implementation of OpenSocial, and how it can be used to add support for social networking and gadgets to existing web applications and specifically Apache Roller and Apache JSPWiki. The session will cover:&lt;/p&gt; 
&lt;ul&gt;
&lt;li&gt;Quick introduction to OpenSocial and Shindig &lt;/li&gt;
&lt;li&gt;Overview of products/services that leverage OpenSocial &lt;/li&gt;
&lt;li&gt;Benefits of social networking in blogs and wikis &lt;/li&gt;
&lt;li&gt;How to support Google Gadgets in Roller and JSPWiki via Shindig &lt;/li&gt;
&lt;li&gt;How to enable social features in Roller and JSPWiki via Shindig &lt;/li&gt;
&lt;li&gt;How to add comprensive social graph support to Roller and JSPWiki via SocialSite &lt;/li&gt;
&lt;li&gt;How to create an OpenSocial Applications that access Roller and JSPWiki &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#39;m already working on the demos and slides for this as it&amp;#39;s going to be quite a bit of work. Fortunately, I&amp;#39;ll be able to recycle some of the material in some other upcoming gigs.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/re_shindig_java_internals</id>
        <title type="html">re: Shindig/Java internals</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/re_shindig_java_internals"/>
        <published>2008-09-24T08:59:09+00:00</published>
        <updated>2008-09-25T14:23:02+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated</id>
        <title type="html">Shindig/Java internals diagram updated</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated"/>
        <published>2008-09-23T16:09:52+00:00</published>
        <updated>2008-09-24T14:46:55+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="atompub" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rest" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <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;</summary>
        <content 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. 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;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/re_how_the_shindig_rest</id>
        <title type="html">re: How the Shindig REST API works</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/re_how_the_shindig_rest"/>
        <published>2008-08-11T17:02:15+00:00</published>
        <updated>2008-08-12T00:02:15+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="atompub" scheme="http://roller.apache.org/ns/tags/" />
        <category term="json" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rest" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsite" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Here&amp;#39;s a diagram I worked up over the weekend to explain Shindig REST API internals to my team mates. See the &lt;a href=&quot;http://blogs.sun.com/socialsite/entry/how_the_shindig_rest_api&quot;&gt;Project SocialSite blog&lt;/a&gt; for the full story.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://blogs.sun.com/socialsite/resource/how-shindig-works-200808.png&amp;quot; 
alt=&amp;quot;diagram of key classes and interfaces of Apache Shinding REST API&amp;quot; /&amp;gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/latest_links28</id>
        <title type="html">Lots of latest links: social networking APIs and more</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links28"/>
        <published>2008-02-04T14:00:07+00:00</published>
        <updated>2008-02-05T07:29:53+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="abdera" scheme="http://roller.apache.org/ns/tags/" />
        <category term="app" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shindig" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialnetworking" scheme="http://roller.apache.org/ns/tags/" />
        <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;</summary>
        <content type="html">&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;
</content>
    </entry>
</feed>

