<?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=atompub" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Mon, 18 May 2026 08:23:39 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wip_links</guid>
    <title>WIP: Links</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wip_links</link>
    <pubDate>Mon, 21 Mar 2011 06:49:23 +0000</pubDate>
    <category>Web Development</category>
    <category>atompub</category>
    <category>html</category>
    <category>linkeddata</category>
    <category>links</category>
    <category>rdf</category>
    <category>wip</category>
<atom:summary type="html">&lt;p style=&quot;font-style:italic;&quot;&gt;This is the first in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Synopsis&lt;/p&gt;
&lt;p&gt;Use links as a way to integrate web sites &amp;amp; applications via navigation and relationships between resources.&lt;/p&gt;</atom:summary><description>&lt;p style=&quot;font-style:italic;&quot;&gt;This is the first in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Synopsis&lt;/p&gt;
&lt;p&gt;Use links as a way to integrate web sites &amp;amp; applications via navigation and relationships between resources.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Motivations&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide navigation between integrated web sites &amp;amp; applications&lt;/li&gt;
&lt;li&gt;Create meaningful relationships between web resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Related patterns&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_common_navigation&quot;&gt;Common Navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_embedded_properties_in_html&quot;&gt;Embedded Properties in HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_resource_preview&quot;&gt;Resource Preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delegated Selection &amp;amp; Creation&lt;/li&gt;
&lt;li&gt;Linked Data &amp; REST&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/World_Wide_Web&quot;&gt;web&lt;/a&gt; is the web and &lt;a href=&quot;http://en.wikipedia.org/wiki/Hypertext&quot;&gt;hypertext&lt;/a&gt; is hyper because of links. Links allow for the most deep and also the most shallow forms of integration. Links enable navigation and with some discipline, links can also express relationships between resources. There are a variety of ways to express links; the standard and most popular way is to use HTML, but there are others and I&#146;ll cover them below.&lt;/p&gt;

&lt;h4&gt;Links enable navigation&lt;/h4&gt;

&lt;p&gt;With links, you can provide navigation between web applications at the application, or the feature level. One example is providing a link from the blog application of a social software suite to the wiki, forums and other component applications. Another is providing a link from one application to one specific part or feature of another application. This type of linking is easy to implement but fairly shallow. It&#146;s convenience and not much more.&lt;/p&gt;

&lt;h4&gt;Links can express relationships&lt;/h4&gt;

&lt;p&gt;What&#146;s more useful and powerful, is using links to create meaningful relationships between the resources provided by web applications. For example, there&amp;#39;s obvious value linking a defect in a bug tracking system to the source code changes that fixed the bug in a source code management system. Or, you might link a Requirement resource to the Work-Item resources that implement it. By the way, those example are drawn from the &lt;a href=&quot;http://open-services.net/&quot;&gt;OSLC specs&lt;/a&gt; for &lt;a href=&quot;http://en.wikipedia.org/wiki/Application_lifecycle_management&quot;&gt;ALM&lt;/a&gt; / &lt;a href=&quot;http://en.wikipedia.org/wiki/Product_lifecycle_management&quot;&gt;PLM&lt;/a&gt; integration.&lt;/p&gt;

&lt;p&gt;If you want to use links to establish relationships, then you do have to have some discipline about the URLs you offer and the URLs you link to. You have to treat links with the same rigor and respect you&#146;d give primary and foreign keys in a relational database. For example, if you make a resource available in different formats, and each at a different URL, one that ends in &#147;.html&#148; and one with &#147;.xml&#148; and one with &#147;.json&#148; then you&#146;ve got three URLs that refer same resource. In this case, it&#146;s better to use Content Negotiation so you can offer one URL that others can use to link to the resource. &lt;/p&gt;

&lt;p&gt;One way to get yourself some link discipline is to adopt &lt;a href=&quot;http://www.w3.org/DesignIssues/LinkedData.html&quot;&gt;Linked Data&lt;/a&gt; and the &lt;a href=&quot;http://www.w3.org/RDF/&quot;&gt;RDF&lt;/a&gt; data model, which &#148;extends the linking structure of the Web to use URIs to name the relationship between things as well as the two ends of the link.&#148; See also the Web Annotations and Linked Data &amp;amp; REST pattern.&lt;/p&gt;

&lt;h4&gt;Links can be expressed in standard formats&lt;/h4&gt;

&lt;p&gt;The standard way to represent links on the web is through HTML and in HTML, links are expressed in a variety of ways, via anchor tags, via image tags, the link tag and others. There are other standard ways to express links, but none as popular as HTML. &lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;HTML&lt;/p&gt;

&lt;p&gt;In HTML, links can be expressed via the &lt;code&gt;&lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/#the-a-element&quot;&gt;&amp;lt;a&amp;gt;&lt;/a&gt;&lt;/code&gt; element, for expressing a hyperlink in text, and the &lt;code&gt;&lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/#the-link-element&quot;&gt;&amp;lt;link&amp;gt;&lt;/a&gt;&lt;/code&gt; element, for expressing a link to a resource associated with the page.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; links can specify not only the URL of the link but also the relationship type of the link, as well as content-type and language for the resource that lies at the other end of the link. For example, a link type of &lt;code&gt;rel=&#148;next&#148;&lt;/code&gt; indicates that a link points to the next page in a series of pages, or multi-page article. A link type of &lt;code&gt;rel=&#148;stylesheet&#148;&lt;/code&gt; indicates that the link is to style-sheet to be applied to the current page. There are a standard set of &lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#linkTypes&quot;&gt;link relationship types in the HTML spec&lt;/a&gt;. Here&amp;#39;s an example from this very blog page, the link to this blogs Atom feed:&lt;/p&gt;

&lt;pre&gt;


&amp;lt;link rel=&amp;quot;alternate&amp;quot; type=&amp;quot;application/atom+xml&amp;quot; title=&amp;quot;Recent Entries (Atom)&amp;quot;     
   href=&amp;quot;http://rollerweblogger.org/roller/feed/entries/atom&amp;quot; /&amp;gt; 


&lt;/pre&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Atom&lt;/p&gt;

&lt;p&gt;The Atom Syndication Format defines a &lt;code&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc4287#page-21&quot;&gt;&amp;lt;link&amp;gt;&lt;/a&gt;&lt;/code&gt; element, modeled on the one in HTML. Atom adds a length attribute, the size in bytes of the resource at the other end of the link. Atom defines some new links types, alternate, related, self and enclosure. Atom also allows new links to be added and a Atom &lt;a href=&quot;http://www.iana.org/assignments/link-relations/link-relations.xml&quot;&gt;link-type registry&lt;/a&gt; is maintained at IANA.org.  Here&#146;s an example link from the Atom comments feed for this blog:&lt;/p&gt;

&lt;pre&gt;


&amp;lt;link rel=&amp;quot;alternate&amp;quot; type=&amp;quot;text/html&amp;quot; href=
&amp;quot;http://rollerweblogger.org/roller/entry/apache_roller_5_0_rc3#comment-12941523&amp;quot; /&amp;gt;


&lt;/pre&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;RDF&lt;/p&gt;

&lt;p&gt;Another standard way to express links is RDF, using any of the RDF serializations: RDF/XML, Turtle, N3 and soon, there will be a &lt;a href=&quot;http://www.w3.org/QA/2010/12/new_rdf_working_group_rdfjson.html&quot;&gt;W3C standard for RDF/JSON&lt;/a&gt;. Yes, there will be a standard way to express links in JSON and that&amp;#39;s good news. For now, we&amp;#39;re stuck with RDF/XML. In RDF/XML a link is expressed via the &lt;code&gt;rdf:resource&lt;/code&gt; attribute, so for example a link from a Requirement to the user that created the requirement might look like this:&lt;/p&gt;

&lt;pre&gt;


&amp;lt;dc:creator rdf:resource=&amp;quot;https://localhost:9443/user/676&amp;quot; /&amp;gt;


&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://www.w3.org/RDF/&quot;&gt;RDF&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Resource_Description_Framework&quot;&gt;Wikipedia page&lt;/a&gt;) goes way beyond the couple dozen link attributes and relationship types provided by HTML and Atom. RDF provides ways to specify property values about any linked resource, and property values of each link.  RDF also provides ways to define &lt;a href=&quot;http://www.w3.org/TR/rdf-concepts/&quot;&gt;vocabularies&lt;/a&gt; of properties.&lt;/p&gt;

&lt;h4&gt;Wrapping up &lt;/h4&gt;

&lt;p&gt;It&amp;#39;s time to wrap-up. For better or worse, I&#146;ve written more than I expected to write and I&#146;m nowhere near done with the topic of links. I hope I&#146;ve covered the important parts. Comments are open so please correct me and make suggestions if you got some. This is the first pattern that I&#146;ve written up, so I&#146;m also interested in comments about the format, level of abstraction, value, etc. as well. &lt;/p&gt;

&lt;p&gt;Next up: Common Navigation.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/more_than_bloggy</guid>
    <title>More than bloggy</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/more_than_bloggy</link>
    <pubDate>Mon, 7 Mar 2011 06:00:00 +0000</pubDate>
    <category>Web Development</category>
    <category>asf</category>
    <category>atom</category>
    <category>atompub</category>
    <category>rdf</category>
    <category>rss</category>
    <category>wip</category>
<atom:summary type="html">&lt;p&gt;I&#146;ve been meaning to write on this topic for a some time and to explain how I&#146;ve gone from being an advocate of RSS/Atom feeds, Atom Publishing Protocol and things bloggy to being a proponent of Linked Data (&lt;a href=&quot;http://www.readwriteweb.com/archives/linked_data_is_blooming_why_you_should_care.php&quot;&gt;video&lt;/a&gt;), Semantic Web, RDF and other things that I previously considered to be nuisances. I&amp;#39;ve also got a new topic and blog series to announce, so here goes.&lt;/p&gt;</atom:summary><description>&lt;p&gt;I&#146;ve been meaning to write on this topic for a some time and to explain how I&#146;ve gone from being an advocate of RSS/Atom feeds, Atom Publishing Protocol and things bloggy to being a proponent of Linked Data (&lt;a href=&quot;http://www.readwriteweb.com/archives/linked_data_is_blooming_why_you_should_care.php&quot;&gt;video&lt;/a&gt;), Semantic Web, RDF and other things that I previously considered to be nuisances. I&amp;#39;ve also got a new topic and blog series to announce, so here goes.&lt;/p&gt;

&lt;a href=&quot;http://rollerweblogger.org/roller/entry/tri_xml_2006_presentation&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/563b18df-9abf-4354-9fe8-ea9fd26070bd&quot; align=&quot;right&quot; alt=&quot;screenshot of Intro to RSS/Atom presentation&quot;&gt;&lt;/a&gt;

&lt;p&gt;Once upon a time, I actually said &#147;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/tri_xml_2006_presentation&quot;&gt;the web is bloggy&lt;/a&gt;&#148; in conference presentations and without shame. It sounds silly and, for a blog server developer self-serving, but it&#146;s true and it&#146;s still true to this day. So much of what we do on the web can be made more useful via feeds. That&#146;s because so many things can be usefully represented as a &lt;a href=&quot;http://www.intertwingly.net/blog/1472.html&quot;&gt;well formed log&lt;/a&gt; entry, i.e. a URL, title, date, description and a chunk of content. No matter whether your web application is Flickr, Twitter or IBM/Rational Team Concert, you can enable all sorts of interesting integrations and mashups by providing feeds.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot;&gt;Atom Publishing Protocol&lt;/a&gt; (APP) applied the feed concept to web APIs, using a feed to represent a collection of entries and allowing API callers to use HTTP to create, retrieve, update and delete entries. Entries could be anything of course. In the case of Google&#146;s APP-based &lt;a href=&quot;http://code.google.com/apis/gdata/&quot;&gt;GData Protocol&lt;/a&gt;, entries are Calendar Events, Picasa Photo uploads or YouTube videos. In the case of the IBM/Lotus &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/index.jsp?topic=/com.ibm.connections.25.help/c_api_common_overview.html&quot;&gt;Connections API&lt;/a&gt;, entries are Forum Posts, Social  Network Profiles, File Uploads and more.&lt;/p&gt;

&lt;h4&gt;Feeds only get you so far&lt;/h4&gt;

&lt;p&gt;I&#146;m not going to argue that &lt;a href=&quot;http://www.techcrunchit.com/2009/05/05/rest-in-peace-rss/&quot;&gt;RSS is dead&lt;/a&gt; (or Atom) because I don&amp;#39;t believe that, but the feeds approach only gets you so far. With feeds, we agree on a small set of 
common properties, e.g. URL, title, date, description and content. Not all resources on the web have those properties and many resources have a lot more. So in some cases applying Atom means forcing things to fit into the Atom model and in some cases it means inventing new properties for Atom, something that is supported by Atom format.&lt;/p&gt;

&lt;h4&gt;APIs only get you so far&lt;/h4&gt;

&lt;p&gt;I&#146;m not going to argue that APP is dead or a &lt;a href=&quot;http://bitworking.org/news/425/atompub-is-a-failure&quot;&gt;failure&lt;/a&gt; either, but APP is an API approach and, for web integration, APIs only get you so far. It&#146;s definitely a good thing for developers when a web site or application provides an API, but if you have to integrate a set of N web sites and each has it&#146;s own API and (even if they&#146;re all based on APP) you&#146;re stuck doing N x N point-to-point integrations. APIs are not necessarily the best way, and certainly not the only way, to enable integrations on the web.&lt;/p&gt;

&lt;h4&gt;Linked Data&lt;/h4&gt;

&lt;a href=&quot;http://semanticweb.com/linked-data-an-introduction_b17148&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/6e1ca578-b5d4-4561-af0d-5a53409e941a&quot; align=&quot;right&quot; alt=&quot;Linked Data cloud diagram&quot;&gt;
&lt;/a&gt;

&lt;p&gt;Linked Data (&lt;a href=&quot;http://www.w3.org/DesignIssues/LinkedData.html&quot;&gt;W3C page&lt;/a&gt;) is a different approach. Instead of forcing everything to fit the blog model, Linked Data gives us a way to define common vocabularies of properties about resources on the web and, most importantly, the links between them. Linked Data enables integration by allowing sites to weave their resources into the interlinked web of data that is the web.&lt;/p&gt;

&lt;h4&gt;Next: Web Integration Patterns&lt;/h4&gt;

&lt;p&gt;These days, what&amp;#39;s important to me at work is &lt;a href=&quot;http://open-services.net&quot;&gt;integration&lt;/a&gt; and in my mind, Feeds, APIs and Linked Data are different &#147;patterns&#148; for web-based integrations. They can be used in complementary ways. Just as we have defined and cataloged &lt;a href=&quot;http://www.enterpriseintegrationpatterns.com/toc.html&quot;&gt;Enterprise Integration Patterns&lt;/a&gt;, I think it will be useful to do the same for Web Integration Patterns. I know I&amp;#39;ll learn something in the process. In my next posts, I&amp;#39;ll expand on this concept and after that, I&amp;#39;ll start cataloging, in an informal and bloggy way, the patterns that I&amp;#39;m familiar with. More later...&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/marsedit_3_and_roller_5</guid>
    <title>MarsEdit 3 and Roller 5</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/marsedit_3_and_roller_5</link>
    <pubDate>Wed, 5 May 2010 17:01:17 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
<description>&lt;p&gt;&lt;img style=&quot;float:right;&quot; src=&quot;http://rollerweblogger.org/roller/mediaresource/077eea8c-ff6f-4f7a-8397-0ffa06d03b46&quot; alt=&quot;MarsEdit3Icon128.png&quot; width=&quot;128&quot; height=&quot;128&quot;&gt;&lt;/p&gt;

&lt;p&gt;Mac-based weblog editor &lt;a href=&quot;http://www.red-sweater.com/marsedit/new3.html&quot;&gt;MarsEdit v3.0&lt;/a&gt; has just been released by &lt;a href=&quot;http://www.red-sweater.com/blog/282/red-sweater-acquires-marsedit&quot;&gt;Red Sweater Software&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Because MarsEdit v3.0 supports the &lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot;&gt;Atom Publishing Protocol&lt;/a&gt; (APP), it works with &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; 5.0RC1&amp;#39;s new and improved AtomPub support right out of the box. I&amp;#39;m writing this post in MarsEdit right now and publishing to Roller 5 via APP.&lt;/p&gt;

&lt;p&gt;MarsEdit includes a rich text editor and supports image upload via drag-and-drop into the editor. You can edit a draft post locally or use Send to Blog to send the draft to the server for further editing before publish. You can specify multiple tags for your post and MarsEdit will send them to Roller as tags.&lt;/p&gt;

&lt;p&gt;Generally, I prefer to edit my HTML by hand but for somebody who wants simplicity and a familiar Mac interface, MarsEdit v3.0 looks like a great choice. And the HTML it generates doesn&amp;#39;t look too bad.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s a screenshot that shows what MarsEdit looks like when editing a post:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/117567b2-7882-4d63-85c6-fc0d53bf56cf&quot; alt=&quot;marsedit-roller.png&quot; width=&quot;585&quot; height=&quot;459&quot;&gt;&lt;/p&gt;

&lt;p&gt;Here are the settings I&amp;#39;m using (URLs changed to protect the innocent).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/fdeb6b09-c7d1-406d-8691-dc18f5ac5ae6&quot; alt=&quot;marsedit-settings.png&quot; width=&quot;312&quot; height=&quot;388&quot;&gt;&lt;/p&gt;

&lt;p&gt;MarsEdit is $39.95 and there&amp;#39;s a &lt;a href=&quot;http://www.red-sweater.com/marsedit/&quot;&gt;30-day free and fully-function trial version&lt;/a&gt; available too.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc1</guid>
    <title>Apache Roller 5.0 RC1</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc1</link>
    <pubDate>Mon, 3 May 2010 08:39:13 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
    <category>propono</category>
    <category>rome</category>
<description>&lt;p&gt;It&amp;#39;s been a while since the BETA (over 6 months) but we &lt;a href=&quot;http://markmail.org/message/kmeuidvtjzhbdznn&quot;&gt;now have a release candidate for Apache Roller 5.0&lt;/a&gt; available for testing. This site is running Apache Roller 5.0 RC1 right now, as you can see in the itty bitty screenshot below:&lt;/p&gt;



&lt;p&gt;Here&amp;#39;s a &lt;a href=&quot;https://cwiki.apache.org/confluence/display/ROLLER/What&apos;s+new+in+Roller+5.0&quot;&gt;What&amp;#39;s New in Roller 5.0&lt;/a&gt; page that summarizes what has changed since 4.0. One thing I forgot to mention on that page was that Roller now uses ROME Propono 1.0 for AtomPub and Roller 5.0&amp;#39;s AtomPub support has been successfully tested with &lt;a href=&quot;http://www.red-sweater.com/marsedit/&quot;&gt;MarsEdit&lt;/a&gt; and &lt;a href=&quot;http://windowslivewriter.spaces.live.com/&quot;&gt;Windows Live Writer&lt;/a&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/oauth_for_rome_propono</guid>
    <title>OAuth for ROME Propono</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_for_rome_propono</link>
    <pubDate>Tue, 24 Mar 2009 12:00:00 +0000</pubDate>
    <category>Feeds</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>propono</category>
    <category>roller</category>
    <category>rome</category>
<description>&lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;
&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/rome-logo.png&amp;quot; 
alt=&amp;quot;ROME logo&amp;quot; align=&amp;quot;right&amp;quot; vspace=&amp;quot;10px&amp;quot; hspace=&amp;quot;10px&amp;quot; /&amp;gt;
&lt;/a&gt;

&lt;p&gt;Yesterday I wrote about &lt;a href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth support in the upcoming Roller 5.0 release&lt;/a&gt;. Today I&amp;#39;m following up with a post about &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; support in &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As you may remember, ROME Propono is a subproject of &lt;a href=&quot;http://rome.dev.java.net&quot;&gt;ROME&lt;/a&gt;, the Java-based RSS/Atom feed library. ROME Propono includes an &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt; server library and an AtomPub client. I added OAuth support to the AtomPub client and in this post, I&amp;#39;ll show how you can use it to post to the Roller 5.0-dev (i.e. the snapshot build that I made available yesterday).&lt;/p&gt;

&lt;h4&gt;ROME 1.0 and coming soon: ROME Propono 1.0&lt;/h4&gt;

&lt;p&gt;In case you haven&amp;#39;t already heard, thanks to the recent hard work of Nick Lothian, &lt;a href=&quot;http://nicklothian.com/blog/2009/03/11/rome-10-released&quot;&gt;ROME 1.0 is now available&lt;/a&gt;. You can find downloads at &lt;a href=&quot;http://rome.dev.java.net&quot;&gt;rome.dev.java.net&lt;/a&gt; and a list of changes in the &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomeChangesLog&quot;&gt;Change Log&lt;/a&gt; there. To celebrate this momentous event, I&amp;#39;m planning on releasing ROME Propono 1.0 as well, and in preparation, I&amp;#39;ve made a release candidate available. The new Propono includes ROME 1.0 and support for OAuth. You can get it via the links below:&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;https://rome.dev.java.net/source/browse/*checkout*/rome/www/dist/rome-propono-1.0RC1.tar.gz&quot;&gt;rome-propono-1.0RC1.tar.gz&lt;/a&gt; (2.0 mb)
&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;https://rome.dev.java.net/source/browse/*checkout*/rome/www/dist/rome-propono-1.0RC1.zip&quot;&gt;rome-propono-1.0RC1.zip&lt;/a&gt; (3 mb)
&lt;/p&gt;


&lt;h4&gt;Posting to Roller via AtomPub and OAuth&lt;/h4&gt;

&lt;p&gt;To use the Propono AtomPub client, you place the Propono jars in your Java VM classpath and then call the &lt;code&gt;AtomClientFactory&lt;/code&gt; to get started, as described in the &lt;a href=&quot;https://rome.dev.java.net/apidocs/subprojects/propono/1.0/com/sun/syndication/propono/atom/client/package-summary.html&quot;&gt;ROME Propono 1.0 Javadocs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Below is a &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; example that shows how to post a blog entry to Roller via AtomPub and OAuth. You can get the consumer key, secret and URLs you need to call your instance of Roller from the OAuth Credentials page in the Roller admin interface.&lt;/p&gt;

&lt;pre&gt;

  import com.sun.syndication.propono.atom.client.*
  import com.sun.syndication.feed.atom.*

  def authStrategy = new OAuthStrategy(
    &amp;quot;roller&amp;quot;,                               // username
    &amp;quot;55132608a2fb68816bcd3d1caeafc933&amp;quot;,     // consumer key
    &amp;quot;bb420783-fdea-4270-ab83-36445c18c307&amp;quot;, // consumer secret
    &amp;quot;HMAC-SHA1&amp;quot;,                            // key type
    &amp;quot;http://blogs.example.com/roller-services/oauth/requestToken&amp;quot;,
    &amp;quot;http://blogs.example.com/roller-services/oauth/authorize&amp;quot;,
    &amp;quot;http://blogs.example.com/roller-services/oauth/accessToken&amp;quot;)

  // get the AtomPub service
  def appService = AtomClientFactory.getAtomService(
    &amp;quot;http://blogs.example.com/roller-services/app&amp;quot;, authStrategy)

  // find workspace of my blog
  def blog = appService.findWorkspace(&amp;quot;Blogging Roller&amp;quot;)

  // find collecton that will accept entries
  def entries = blog.findCollection(null, &amp;quot;application/atom+xml;type=entry&amp;quot;)

  // create and post an entry
  def entry = entries.createEntry()
  entry.title = &amp;quot;TestPost&amp;quot;
  def content = new Content()
  content.setValue(&amp;quot;This is a test post. w00t!&amp;quot;)
  entry.setContent([content])
  entries.addEntry(entry)

&lt;/pre&gt;


&lt;p&gt;If you have questions or feedback about ROME Propono 1.0 RC1, please post them to the &lt;a href=&quot;https://rome.dev.java.net/servlets/ProjectMailingListList&quot;&gt;ROME dev mail list&lt;/a&gt; and I&amp;#39;ll do my best to respond there.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_for_roller</guid>
    <title>OAuth for AtomPub in Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_for_roller</link>
    <pubDate>Mon, 23 Mar 2009 12:00:00 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>roller</category>
<description>&lt;a href=&quot;http://roller.apache.org&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/images/rollerbadge.png&quot; alt=&quot;powered by Roller badge&quot; align=&quot;right&quot; hspace=&quot;10&quot; vspace=&quot;10&quot; border=&quot;0&quot;&gt;
&lt;/a&gt;

&lt;p&gt;Over the past month or so I&amp;#39;ve been adding &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; support to just about every open source project that I can commit to. I added OAuth support to &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; so that you can now use OAuth to protect Roller&amp;#39;s &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt; server and other things. I also added OAuth support to &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt;&amp;#39;s AtomPub client so you can now use Propono to post to Roller (more about that later). Here&amp;#39;s a quick overview of how OAuth in Roller works.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;NOTE that this post applies to Roller 5.0, which has not yet been officially released.&lt;/i&gt;&lt;/p&gt;


&lt;h4&gt;Setting up OAuth for AtomPub in Roller&lt;/h4&gt;

&lt;p&gt;If you want to use OAuth with AtomPub on your Roller site, go to the Server Admin page and find the Web Services section, enable AtomPub and specify &amp;#39;oauth&amp;#39; as the authentication mechanism, like so:&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/rol_oauthconfig.jpg&amp;quot; 
    alt=&amp;quot;OAuth config in Roller 5.0-dev&amp;quot; /&amp;gt; 


&lt;h4&gt;Getting your OAuth key, secret and URLs&lt;/h4&gt;

&lt;p&gt;Once you&amp;#39;ve done the setup, you&amp;#39;ll find an OAuth Credentials link on the Roller Main Menu page, which will lead you a page like the one below showing your OAuth consumer key &amp;amp; secret and, if you are a site admin user, the site-wide key &amp;amp; secret. Currently, there&amp;#39;s only one set of site-wide credentials; I plan to fix that.&lt;/p&gt; 

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/rol_oauthkeys.jpg&quot; alt=&quot;OAuth keys page in Roller 5.0-dev&quot;&gt;

&lt;p&gt;Of course, those aren&amp;#39;t my real keys. You&amp;#39;ll want to keep your OAuth keys secret as they can enable anybody to access your Roller account via AtomPub.&lt;/p&gt;


&lt;h4&gt;Want to try it yourself?&lt;/h4&gt;

&lt;p&gt;I mentioned that Roller 5.0 has not yet been released and that&amp;#39;s true. There&amp;#39;s still a lot of work to be done on 5.0, but that doesn&amp;#39;t mean you can&amp;#39;t get your hands on the code and binaries now. To make it easy, I&amp;#39;ve made an &lt;b&gt;unofficial snapshot&lt;/b&gt; version of Roller 5.0-dev available for testing purposes only. It&amp;#39;s what I&amp;#39;m running on my site. You can get it here in two flavors:&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;http://people.apache.org/~snoopdave/snapshots/apache-roller-5.0-dev-20090321-SNAPSHPOT.tar.gz&quot;&gt;apache-roller-5.0-dev-20090321-SNAPSHPOT.tar.gz&lt;/a&gt; (31 mb)
&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;http://people.apache.org/~snoopdave/snapshots/apache-roller-5.0-dev-20090321-SNAPSHPOT.zip&quot;&gt;apache-roller-5.0-dev-20090321-SNAPSHPOT.zip&lt;/a&gt; (31 mb)
&lt;/p&gt;

&lt;p&gt;The instructions in the old &lt;a href=&quot;http://roller.apache.org/download.cgi#roller40&quot;&gt;Roller 4.0 installation guide&lt;/a&gt; should work fine, so follow them to install and configure the 5.0-dev SNAPSHOT. Please send questions and feedback to either the &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists&quot;&gt;Roller dev mail list&lt;/a&gt; and I&amp;#39;ll do my best to respond there.&lt;/p&gt;

&lt;p&gt;You&amp;#39;ll also need an OAuth capable AtomPub client. More on that topic tomorrow...&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/apache_abdera_graduates</guid>
    <title>Atom news: Apache Abdera graduates</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_abdera_graduates</link>
    <pubDate>Fri, 21 Nov 2008 15:54:48 +0000</pubDate>
    <category>Java</category>
    <category>asf</category>
    <category>atom</category>
    <category>atompub</category>
    <category>feeds</category>
    <category>java</category>
    <category>opensource</category>
    <category>rome</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/resource/atom-logo75px.gif&quot; align=&quot;right&quot; alt=&quot;Atom logo&quot; title=&quot;Atom logo&quot;&gt;

&lt;p&gt;Congratulations to the &lt;a href=&quot;http://incubator.apache.org/abdera/&quot;&gt;Apache Abdera&lt;/a&gt; team, who&amp;#39;ve just &lt;a href=&quot;http://mail-archives.apache.org/mod_mbox/incubator-abdera-dev/200811.mbox/%3C4585c4a60811191238t52bd9840q845653578eb0690d@mail.gmail.com%3E&quot;&gt;graduated&lt;/a&gt; to full Apache top level project status. The don&amp;#39;t have the new site at &lt;b&gt;abdera.apache.org&lt;/b&gt; up yet and they&amp;#39;re still not quite at 1.0 yet, but this is a  major milestone. They&amp;#39;ve got the best Atom format and protocol toolkit around, &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_vs_abdera&quot;&gt;in my opinion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;via &lt;a href=&quot;http://asdf.blogs.com/asdf/2008/11/abdera-graduation.html&quot;&gt;Garett&lt;/a&gt; and &lt;a href=&quot;http://www.snellspace.com/wp/?p=979&quot;&gt;James&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/re_delicious_com_blog_posting</guid>
    <title>re: delicious.com Blog Posting tool</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/re_delicious_com_blog_posting</link>
    <pubDate>Mon, 22 Sep 2008 17:56:32 +0000</pubDate>
    <category>Feeds</category>
    <category>atompub</category>
    <category>metaweblog</category>
    <category>rss</category>
<description>&lt;a href=&quot;http://delicious.com&quot;&gt;
&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/delface.jpg&amp;quot; 
title=&amp;quot;delicious.com face graphic&amp;quot; align=&amp;quot;right&amp;quot; hspace=&amp;quot;20&amp;quot; /&amp;gt;&lt;/a&gt;

&lt;p&gt;Oh and by the way, I have not given up on that &lt;a href=&quot;http://rollerweblogger.org/roller/entry/delicous_com_blog_posting_tool&quot;&gt;Delicious.com Blog Posting tool&lt;/a&gt; that I wrote about in August. I&amp;#39;ve got the feed fetching, entry composing parts done now and I&amp;#39;m currently working on the blog posting code. I hope to have something ready to blog about this week.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/re_how_the_shindig_rest</guid>
    <title>re: How the Shindig REST API works</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/re_how_the_shindig_rest</link>
    <pubDate>Mon, 11 Aug 2008 17:02:15 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>json</category>
    <category>rest</category>
    <category>shindig</category>
    <category>socialsite</category>
<description>&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;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links30</guid>
    <title>Latest Links: Friday March 7, 2008</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links30</link>
    <pubDate>Fri, 7 Mar 2008 14:00:05 +0000</pubDate>
    <category>Links</category>
    <category>atompub</category>
    <category>foss</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.snellspace.com/wp/?p=912&quot;&gt;snellspace.com: Contact!&lt;/a&gt;&lt;br&gt;&amp;quot;So Google announced it?s Contacts API? based on Atompub of course&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://netzooid.com/blog/2008/03/05/writing-your-first-atompub-service-with-abdera/&quot;&gt;netzooid: Writing Your First AtomPub Service with Abdera&lt;/a&gt;&lt;br&gt;&amp;quot;This shows the much simplified server code base in action, so beware - this requires the latest trunk/ code. 0.4.0 should be out soon though&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/astoriateam/archive/2008/02/13/atompub-support-in-the-ado-net-data-services-framework.aspx&quot;&gt;Astoria: AtomPub support in the ADO.NET&lt;/a&gt;&lt;br&gt;&amp;quot;We have been looking for the last few months at adding first-class support for AtomPub to Project Astoria&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://weblogs.java.net/blog/mhadley/archive/2008/03/authentication.html&quot;&gt;Marc Hadley&amp;#39;s Blog: Authentication in Jersey&lt;/a&gt;&lt;br&gt;&amp;quot;Actions on some resources require authentication and I need access to the name of the authenticated user in the resource method&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/jersey_0_6_released&quot;&gt;The Aquarium: Jersey 0.6 released&lt;/a&gt;&lt;br&gt;&amp;quot;the Jersey client API, enhanced JSON suport, and better integration of Jersey with IoC containers&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://project.carrot2.org/&quot;&gt;Carrot2 - Open Source Search Results Clustering Engine&lt;/a&gt;&lt;br&gt;&amp;quot;Carrot2 is an Open Source Search Results Clustering Engine. It can automatically organize (cluster) search results into thematic categorie&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://forums.mysql.com/list.php?106&quot;&gt;MySQL Forums: Partitioning&lt;/a&gt;&lt;br&gt;
The official discussion forum for those interested in or experimenting with MySQL Partitioning technology&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://ralpartha.blogspot.com/search/label/mysql%20partition&quot;&gt;Partha&amp;#39;s Blog: MySQL Table Partitioning&lt;/a&gt;&lt;br&gt; Nice series of posts on table partitioning in MySQL 5.1&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/webmink/entry/the_adoption_led_market&quot;&gt;Simon Phipps: The Adoption-Led Market&lt;/a&gt;&lt;br&gt;&amp;quot;emerging approach which is rapidly spreading for smaller software projects and in my view is the future of all software acquisition&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/open-source/?p=2087&quot;&gt;Will Acquia ruin Drupal? | Open Source | ZDNet.com&lt;/a&gt;&lt;br&gt;
&amp;quot;Acquia, a commercial version with all the bells and whistles, including venture capital partners, whoâ&#128;&#153;ve put in $7 million.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogcentral.jpost.com/&quot;&gt;JPost.com | BlogCentral&lt;/a&gt;&lt;br&gt;
Jerusalem Post is blogging with Roller!&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://triangletweetup.pbwiki.com/FrontPage&quot;&gt;triangletweetup wiki&lt;/a&gt;&lt;br&gt;Triangle Tweetup Attendance &amp;amp; information&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/abdera_atompub_server_refactoring</guid>
    <title>Abdera AtomPub server refactoring</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/abdera_atompub_server_refactoring</link>
    <pubDate>Mon, 28 Jan 2008 09:05:45 +0000</pubDate>
    <category>Java</category>
    <category>abdera</category>
    <category>atompub</category>
<description>&lt;p&gt;I&amp;#39;ve got to carve out some time ASAP to take a close look at this. 
The code is in Abdera SVN and there&amp;#39;s &amp;lt;a href=
&amp;quot;http://cwiki.apache.org/confluence/download/attachments/69763/abderaserverguide.pdf&amp;quot;&amp;gt;
20-minute implementation guide (PDF) too:&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href=&quot;http://www.snellspace.com/wp/?p=863&quot;&gt;James Snell&lt;/a&gt;: Dan Diephouse and I have been spending the last week refactoring the Abdera server framework with the goal of making is less complicated, easier, and generally better.
&lt;/blockquote&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/abdera</guid>
    <title>Abdera rocks on</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/abdera</link>
    <pubDate>Fri, 11 Jan 2008 18:18:08 +0000</pubDate>
    <category>Feeds</category>
    <category>abdera</category>
    <category>atom</category>
    <category>atompub</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/resource/atom-logo75px.gif&quot; align=&quot;right&quot;&gt;

&lt;p&gt;There have been some interetsing Atom items recently on &lt;a href=&quot;http://www.snellspace.com&quot;&gt;James Snell&amp;#39;s blog&lt;/a&gt;. 

There was a link to a nice IBM DeveloperWorks article on 
&lt;a href=&quot;http://www.ibm.com/developerworks/library/x-atom2json.html&quot;&gt;using Abdera to write Atom feeds to  JSON&lt;/a&gt;. (I was kinda hoping for an XSL/T, but not matter how you do it, it&amp;#39;s a definitely feature that belongs in Abdera.)

And there&amp;#39;s a good 
&lt;a href=&quot;http://www.snellspace.com/wp/?p=846&quot;&gt;quote&lt;/a&gt; from Adrian Sutton&amp;#39;s blog post about the Atom features in IBM&amp;#39;s Roller and Abdera based Lotus Connections product. 

And most recently, James linked to the new 
&lt;a href=&quot;http://code.google.com/p/google-feedserver/&quot;&gt;Google Feed Server&lt;/a&gt; project: an Abdera based AtomPub server from Google. All good stuff. 

&lt;p&gt;Gotta say, 
&lt;a href=&quot;http://incubator.apache.org/abdera/&quot;&gt;Abdera&lt;/a&gt;&amp;#39;s looking better and better. It&amp;#39;s got the features (IRI support, encrytion, pluggable auth, STAX parsing, etc.) and it&amp;#39;s got &lt;a href=&quot;http://www.snellspace.com/wp/?p=782&quot;&gt;Dan&lt;/a&gt; and appears to have some good momentum going. 

At this rate, I&amp;#39;m not sure how much more work I&amp;#39;ll be putting into 
&lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt;. If somebody were to, just for example, contribute an Abdera based AtomPub implementation to Roller, I might have to stop entirely.&lt;/p&gt;&lt;/p&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/more_on_atompub_and_windows</guid>
    <title>More on AtomPub and Windows Live Writer</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/more_on_atompub_and_windows</link>
    <pubDate>Sat, 20 Oct 2007 17:08:19 +0000</pubDate>
    <category>Blogging</category>
    <category>atompub</category>
    <category>blogging</category>
    <category>microsoft</category>
<description>&lt;p&gt;Joe Cheng posted another entry in his series explaining the details of AtomPub support in Windows Live Writer (WLM), titled  
&lt;a href=&quot;http://jcheng.wordpress.com/2007/10/19/wlwatompub-part-2-authentication/&quot;&gt;
WLW+AtomPub, Part 2: Authentication&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Wondering what WLM looks like? &lt;a href=&quot;http://www.travelinlibrarian.info/&quot;&gt;Travelin&amp;#39; Librarian&lt;/a&gt; has a nice set of &lt;a href=&quot;http://flickr.com/photos/travelinlibrarian/tags/windowslivewriter&quot;&gt; screen-shots of WLM&lt;/a&gt; on Flickr including shots of the installation process, HTML mode, preview mode and more. Looks pretty sweet.&lt;/p&gt;

&lt;a href=&quot;http://flickr.com/photo_zoom.gne?id=1366689098&amp;size=o&quot;&gt;
&amp;lt;img src=&amp;quot;http://farm2.static.flickr.com/1321/1366689098_8323af9281.jpg&amp;quot;
    alt=&amp;quot;Screen-shot of Windows Live Writer&amp;quot; /&amp;gt;
&lt;/a&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_news_round_up</guid>
    <title>Latest links: AtomPub news round-up edition</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_news_round_up</link>
    <pubDate>Fri, 12 Oct 2007 12:31:13 +0000</pubDate>
    <category>Blogging</category>
    <category>atom</category>
    <category>atompub</category>
    <category>feeds</category>
    <category>gdata</category>
    <category>java</category>
    <category>movabletype</category>
    <category>roller</category>
    <category>wordpress</category>
<atom:summary type="html">I&amp;#39;ve been in crunch-mode working on a new project, but I&amp;#39;ve been trying to keep an eye on what&amp;#39;s going on the world of &lt;a href=&quot;http://tools.ietf.org/wg/atompub/&quot;&gt;Atom Publishing Protocol&lt;/a&gt; or AtomPub as the cool kids &lt;a href=&quot;http://blog.ianbicking.org/2007/08/12/atom-publishing-protocol-atompub/&quot;&gt;call it&lt;/a&gt;. Here&amp;#39;s a wrap-up of some of the AtomPub news I&amp;#39;ve picked up on the past month or so.&amp;nbsp;</atom:summary><description>&lt;p&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/resource/atom-logo75px.gif&quot; alt=&quot;atom logo&quot; align=&quot;right&quot;&gt;
I&amp;#39;ve been in crunch-mode working on a new project, but I&amp;#39;ve been trying to keep an eye on what&amp;#39;s going on the world of &lt;a href=&quot;http://tools.ietf.org/wg/atompub/&quot;&gt;Atom Publishing Protocol&lt;/a&gt; or AtomPub as the cool kids &lt;a href=&quot;http://blog.ianbicking.org/2007/08/12/atom-publishing-protocol-atompub/&quot;&gt;call it&lt;/a&gt;. Here&amp;#39;s a wrap-up of some of the AtomPub news I&amp;#39;ve picked up on the past month or so.

&lt;h3&gt;Specifications&lt;/h3&gt;

&lt;p&gt;
The big news is, of course, that AtomPub has been granted an RFC number &lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot;&gt;RFC-5023&lt;/a&gt; and is now an IETF &amp;quot;proposed standard&amp;quot; like Atom format (RFC-4287). The folks at Ricoh have provided a &lt;a href=&quot;http://www.ricoh.co.jp/src/rd/webtech/rfc5023_ja.html&quot;&gt;Japanese translation&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Extensions to AtomPub are under development and you can find a good list of them at the &lt;a href=&quot;http://xml.coverpages.org/atom.html&quot;&gt;XML Cover Pages page for Atom&lt;/a&gt;. 

One I find interesting is James Snell&amp;#39;s AtomPub &lt;a href=&quot;http://tools.ietf.org/html/draft-snell-atompub-feature-10&quot;&gt;Feature Discovery&lt;/a&gt; spec, which is designed to help AtomPub clients determine what features are supported and required by servers. The features spec is controversial and has sparked a lot of good discussion including, Brian Smith&amp;#39;s email &lt;a href=&quot;http://www.imc.org/atom-protocol/mail-archive/msg10265.html&quot;&gt;Atom Weblog Publishers Guide&lt;/a&gt; and &lt;a href=&quot;http://sberyozkin.blogspot.com/2007/09/atom-and-ws-policy.html&quot;&gt;Sergey Beryozkin&lt;/a&gt; and &lt;a href=&quot;http://netzooid.com/blog/2007/09/25/atompub-ws-policy/&quot;&gt;Dan Diephouse&amp;#39;s discussion of AtomPub and WS-Policy&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;Server implementations&lt;/h3&gt;

&lt;p&gt;
More big news to report here: the new Wordpress 2.3 release provides full support for AtomPub. Sam Ruby blogged about it in &lt;a href=&quot;http://intertwingly.net/blog/2007/08/30/WordPress-2-3-AtomPub&quot;&gt;Wordpress 2.3 loves AtomPub&lt;/a&gt; and the &lt;a href=&quot;http://codex.wordpress.org/AtomPub&quot;&gt;Wordpress 2.3 AtomPub docs&lt;/a&gt; provide a good summary and cover some limitations. 

Yesterday, Sam posted &lt;a href=&quot;http://intertwingly.net/blog/2007/10/11/Wordpress-Vigilance-and-Plans&quot;&gt;Wordpress vigilance and plans&lt;/a&gt;. He wants to get Wordpress to score a perfect 0 errors and 0 warnings on the APE tests, which means among other things preserving foreign markup.
&lt;/p&gt;

&lt;p&gt;
New releases of Apache Roller have also been updated for the final AtomPub spec. The upcoming Roller 3.1.1 and &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/What%27s+New+in+Roller+4.0&quot;&gt;Roller 4.0&lt;/a&gt; releases include AtomPub support. Both releases are up for vote now, so they should be out Real Soon 

Now. And I&amp;#39;m working on adding AtomPub support for comments for Roller 4.1, building on top of the Atom Threading Extension (&lt;a href=&quot;http://www.ietf.org/rfc/rfc4685.txt&quot;&gt;RFC-4685&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
I&amp;#39;ve been googling and browsing the SixApart site, but I can&amp;#39;t figure out if Movable Type 4.0 supports the final AtomPub spec. Anybody know?
&lt;/p&gt;

&lt;p&gt;
And Google has added another AtomPub based API. Read about it on &lt;span style=&quot;color:#3c3c3c;&quot;&gt;Bill de hÃ&#147;ra&amp;#39;s blog &lt;/span&gt;&lt;a href=&quot;http://www.dehora.net/journal/2007/08/youtube_via_gdata.html&quot;&gt;YouTube via GData&lt;/a&gt; and on the YouTube Developer API blog: &lt;a href=&quot;http://apiblog.youtube.com/2007/08/new-youtube-api-released-into-wild.html&quot;&gt;New YouTube API Released into the Wild&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;Client implementations&lt;/h3&gt;

&lt;p&gt;
In &lt;a href=&quot;http://jcheng.wordpress.com/2007/10/09/stick-a-fork-in-it/&quot;&gt;Stick a fork in it&lt;/a&gt; Joe Cheng writes &amp;quot;The Windows Live Writer team is still on track to deliver AtomPub support in the next version, which I am looking forward to immensely. Itâ&#128;&#153;s definitely an exciting time to be in the blogging tools space!&amp;quot; Based on what I saw at the last face-to-face AtomPub interop, it looks like Microsoft may have the best AtomPub-based blog client around. I wonder when MarsEdit and Ecto will get on board with AtomPub.
&lt;/p&gt;

&lt;h3&gt;Toolkits and programming libraries&lt;/h3&gt;

&lt;p&gt;I already blogged about the &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_propono_0_6_released&quot;&gt;Propono 0.6&lt;/a&gt;, a Java-based client and server library for AtomPub, which has been updated for final spec. 

Since then the Apace Abdera project has released &lt;a href=&quot;http://www.nabble.com/-Announce--Apache-Abdera-0.3.0-t4577068.html&quot;&gt;Apache Abdera (incubating) 0.3 release&lt;/a&gt; is available with a long list of improvements and new features. 
There are also a couple of &lt;a href=&quot;http://www.snellspace.com/wp/?p=770&quot;&gt;usage&lt;/a&gt; &lt;a href=&quot;http://www.snellspace.com/wp/?p=773&quot;&gt;notes&lt;/a&gt; from James Snell. 

Also on the topic of Abdera, Dan Diephouse has done some work to make &lt;a href=&quot;http://netzooid.com/blog/2007/09/04/spring-abdera/&quot;&gt;Spring and Abdera&lt;/a&gt; work well together.
&lt;/p&gt;

&lt;p&gt;The Perl &lt;a href=&quot;http://search.cpan.org/~takeru/Atompub/lib/Atompub/Client.pm#NAME&quot;&gt;AtomPub::Client at CPAN&lt;/a&gt;&lt;span style=&quot;color:#3c3c3c;&quot;&gt; has updated for final AtomPub too.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;That&amp;#39;s all I&amp;#39;ve got for now. Did I miss any important AtomPub news?&lt;/p&gt;&lt;/p&gt;</description>  </item>
</channel>
</rss>