<?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=app" />
  <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/latest_links28</guid>
    <title>Lots of latest links: social networking APIs and more</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links28</link>
    <pubDate>Mon, 4 Feb 2008 14:00:07 +0000</pubDate>
    <category>Links</category>
    <category>abdera</category>
    <category>app</category>
    <category>blogging</category>
    <category>opensocial</category>
    <category>shindig</category>
    <category>socialnetworking</category>
<atom:summary type="html">Here are my links for the past week or so and notes about social networking APIs, using  the web itself as a social network, JMaki, Abdera and more.&amp;nbsp;</atom:summary><description>&lt;p&gt;First, some links from open source projects I&amp;#39;m trying to follow. Check out the JMaki Webtop widget, it looks pretty useful. Now that I&amp;#39;ve got JMaki support in Roller, this could be the basis for some cool drag-and-drop blog layout. Wish I had time for that; I&amp;#39;m still trying to carve out some time to dig into the Abdera server framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jmaki.com/webtop/&quot;&gt;jMaki Webtop&lt;/a&gt;&lt;br&gt; Cool iGoogle style portal interface via JMaki&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jspwiki.org/wiki/JSPWiki3Design&quot;&gt;JSPWiki: JSP Wiki 3 Design&lt;/a&gt;&lt;br&gt; JCR back-end, wiki spaces and more...&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://cwiki.apache.org/ABDERA/server-implementation-guide.html&quot;&gt;Abdera Server Implementation Guide&lt;/a&gt;&lt;br&gt;&amp;quot;The Abdera Server module provides a framework for constructing Atom Publishing Protocol server implementations.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;I&amp;#39;m also following OpenSocial and Shindig (the reference implementation of OpenSocial) pretty closely, but thus far have not had time to dive into the code. There&amp;#39;s lots of activity on the Shindig list, but thus far there&amp;#39;s no server-side and security is still up in the air -- both are pending change to the spec itself. Marc Cantor has an interesting perspective on the OpenSocial.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trac.hyves-api.nl/hyves-api/wiki/ShindigStarted&quot;&gt;ShindigStarted - hyves_api - Trac&lt;/a&gt;&lt;br&gt;&amp;quot;a small guide on how to get started on Shindig.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.news.com/Waiting-for-the-OpenSocial-hammer-to-drop/2010-1032_3-6227796.html?part=rss&amp;tag=2547-1_3-0-5&amp;subj=news&quot;&gt;CNET Mark Cantor: Waiting for the OpenSocial hammer to drop&lt;/a&gt;&lt;br&gt;&amp;quot;We all hope that MySpace, Bebo, and others will open up and go beyond the original scope of OpenSocial to lay the groundwork for a truly open world of social networking.&amp;quot;&lt;/li&gt;

&lt;li&gt;&amp;lt;a href=&amp;quot;http://www.techcrunch.com/2008/01/17/kickapps-publishes-api-kit-adopts-facebook-and-opensocial-platform-
standards/&amp;quot;&amp;gt;KickApps Publishes API, Adopts Facebook and OpenSocial standards&lt;br&gt; &amp;quot;KickApps has adopted Googleâ&#128;&#153;s OpenSocial developer platform standards and is working with Facebook to adopt that companyâ&#128;&#153;s standards as well.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;I&amp;#39;m also following Facebook. While Google and friends scramble to catch up, Facebook Apps are getting easier to write, thanks to a new JavaScript API, and easier to deploy thanks to Amazon Web Services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.allfacebook.com/2008/01/facebook-extends-platform-to-the-web/&quot;&gt;Facebook Extends Platform to the Web - The Unofficial Facebook Blog&lt;/a&gt;&lt;br&gt;&amp;quot;This is a huge step in Facebook extending their platform beyond the Facebook.com domain and letting people leverage the power of the social graph&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.developers.facebook.com/index.php/JavaScript_Client_Library&quot;&gt;JavaScript Client Library - Facebook Developers Wiki&lt;/a&gt;&lt;br&gt;&amp;quot;Applications that use this client library should be configured to load in an iframe, not be rendered with FBML&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://developers.facebook.com/news.php?blog=1&amp;story=73&quot;&gt;Facebook JavaScript Client Library&lt;/a&gt;&lt;br&gt;&amp;quot;This JavaScript client library allows you to make Facebook API calls from any web site and makes it easy to create Ajax Facebook applications&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://aws.typepad.com/aws/2008/01/aws-for-faceboo.html&quot;&gt;Amazon Web Services Blog: AWS For Facebook Applications&lt;/a&gt;&lt;br&gt;&amp;quot;we&amp;#39;ve teamed with  Facebook to collect all of the resources that you need to be the next big success story in one convenient location.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Personally, I really like the idea of the web itself as the social network and your blog as the home for your personal profile. So, I think the new Social Graph API is a step in the right direction, as is the blog-based Distributed Social Networking (DiSo) project. &lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://www.buzzmachine.com/2008/02/02/the-internet-is-the-social-network/&quot;&gt;BuzzMachine:The internet is the social network&lt;/a&gt;&lt;br&gt;&amp;quot;The internet doesnâ&#128;&#153;t need more social networks. The internet is the social network.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/socialgraph/&quot;&gt;Social Graph API - Google Code&lt;/a&gt;&lt;br&gt; Project homepage&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://almaer.com/blog/google-social-graph-api-released&quot;&gt;Google Social Graph API Released on Dion Almaer&amp;#39;s Blog&lt;/a&gt;&lt;br&gt;&amp;quot;Would you like to be able to make a quick call to get a JSON response that ties together a social graph made up of resources available on the Web?&amp;quot;;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/diso/&quot;&gt;diso - Google Code&lt;/a&gt;&lt;br&gt; &amp;quot;DiSo (dee â&#128;¢ zoh) is an umbrella project [for] as Chris puts it: &amp;#39;to build a social network with its skin inside out&amp;#39;&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.vimeo.com/629450&quot;&gt;The Existential DiSo Interview on Vimeo&lt;/a&gt;&lt;br&gt; Factory Joe interviews himself re: Distributed Social Networking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, I&amp;#39;m happy to see support for Twitter-like microblogging in Wordpress and Facebook like activity streams from Movable Type.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://wordpress.com/blog/2008/01/28/introducing-prologue/&quot;&gt;Introducing Prologue: WordPress.com&lt;/a&gt;&lt;br&gt; &amp;quot;Weâ&#128;&#153;re fans of Twitter around here, [but] while the format appealed to us it really just whetted our appetite for something more&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.movabletype.org/2008/01/building_action_streams.html&quot;&gt;Building Action Streams - MovableType.org&lt;/a&gt;&lt;br&gt; &amp;quot;framework for collecting your actions from services around the web into one place for you to share back out as you see fit.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://plugins.movabletype.org/action-streams/&quot;&gt;Action Streams | Plugin Directory | movabletype.org&lt;/a&gt;&lt;br&gt; &amp;quot;aggregate, control, and share your actions around the web &amp;quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And to wrap up: maybe I don&amp;#39;t need to worry about the intersection of Blogging and Social Networking at all. Maybe there&amp;#39;s no need to following all these APIs. Maybe the hype has peaked and Facebook and friends are about to go the way of the CB radio. Apparently, folks aren&amp;#39;t spending quite as much time Facebooking as they used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=7846&quot;&gt;ZDNet.com: Ohmigod! Social networkers just canâ&#128;&#153;t take it any more!&lt;/a&gt;&lt;br&gt; &amp;quot;it is entirely possible that people are beginning to question just how much time they spend socially networking, rather than socially living.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links_nov_12_2007</guid>
    <title>Latest links Nov. 12, 2007: Glassfish, OpenSocial and more</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links_nov_12_2007</link>
    <pubDate>Mon, 12 Nov 2007 07:23:08 +0000</pubDate>
    <category>Links</category>
    <category>app</category>
    <category>atom</category>
    <category>glassfish</category>
    <category>java</category>
    <category>opensocial</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.soundopinions.com/&quot;&gt;Sound Opinions from Chicago Public Radio and American Public Media&lt;/a&gt;&lt;br&gt; Best podcast ever&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/glassfish_interim_governance_board_now&quot;&gt;The Aquarium: GlassFish Interim Governance Board - Now Complete&lt;/a&gt;&lt;br&gt; &amp;quot;The complete roster is Tony, Greg Luck (Wotif.com) and Pierre Delisle (Google), and Simon and myself (Sun)&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/alexismp/entry/glassfish_sjs_as_in_production&quot;&gt;Bistro!: GlassFish/SJS AS in production - which bundle, which profile, ...?&lt;/a&gt;&lt;br&gt; Explains differences between developer, cluster and enterprise profiles&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/glassfishpodcast/&quot;&gt;GlassFish Podcast: The GlassFish Podcast&lt;/a&gt;&lt;br&gt; Finally, a Glassfish podcast! Props to Alexis Moussine-Pouchkine&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.apple.com/downloads/macosx/unix_open_source/glassfish.html&quot;&gt;Apple - Downloads - UNIX &amp;amp; Open Source - GlassFish&lt;/a&gt;&lt;br&gt; Download Glassfish V2 directly from Apple&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;newsId=20071105005882&amp;newsLang=en&quot;&gt;Red Hat and Sun Collaborate to Advance Open Source Java Technology&lt;/a&gt;&lt;br&gt; &amp;quot;Red Hat has signed Sun&amp;#39;s broad contributor agreement that covers participation in all Sun-led open source projects.&amp;quot;&lt;/li&gt;
&lt;br&gt;


&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/03/first-looks-at-opensocial-part-1-urls/&quot;&gt;Megginson: First looks at OpenSocial: part 1 (URLs)&lt;/a&gt;&lt;br&gt; Lists the URIs for the AtomPub collections available in OpenSocial&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/05/first-looks-at-opensocial-part-2-content-for-members-and-friends/&quot;&gt;Megginson: First looks at OpenSocial: part 2 (members and friends)&lt;/a&gt;&lt;br&gt; How OpenSocial members and friends are represented in Atom format&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/06/first-looks-at-opensocial-part-3-content-for-activities/&quot;&gt;Megginson: First looks at OpenSocial: part 3 (activities)&lt;/a&gt;&lt;br&gt; How OpenSocial activities are represented in Atom format and manipulated via AtomPub protocol&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.megginson.com/blogs/quoderat/2007/11/08/first-looks-at-opensocial-part-4-content-for-persistence-data/&quot;&gt;Megginson: First looks at OpenSocial: part 4 (persistence data)&lt;/a&gt;&lt;br&gt; How OpenSocial persistence is implemented via AtomPub protocol&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/opensocial-container-sample/wiki/GettingStarted&quot;&gt;Google: OpenSocial Container Sample&lt;/a&gt;&lt;br&gt; Shows &amp;quot;basic demonstration-level OpenSocial container can be implemented&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/11/03/GoogleOpenSocialTechnicalOverviewAndCritique.aspx&quot;&gt;Dare Obasanjo: OpenSocial Tech. Overview and Critique&lt;/a&gt;&lt;br&gt; &amp;quot;Despite these misgivings, I think this is a step in the right direction. Web widget and social graph APIs need to be standardized across the Web.&amp;quot;&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://www.snellspace.com/wp/?p=799&quot;&gt;snellspace.com: Notes, Part 2&lt;/a&gt;&lt;br&gt; &amp;quot;lots and lots of things that can be modeled as collections of web resources&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://netzooid.com/blog/2007/11/08/building-services-with-atompub/&quot;&gt;netzooid: Building Services with AtomPub&lt;/a&gt;&lt;br&gt; &amp;quot;While APP is not the one true protocol, I think I?m hooked&amp;quot;&lt;/li&gt;

&lt;/ul&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogapps_2_1_released</guid>
    <title>Blogapps 2.1 released</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogapps_2_1_released</link>
    <pubDate>Tue, 2 Oct 2007 21:49:40 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>blogapps</category>
    <category>blogging</category>
    <category>java</category>
    <category>jspwiki</category>
    <category>roller</category>
    <category>rss</category>
<description>&lt;p&gt;&amp;lt;a href=
&amp;quot;http://www.amazon.com/dp/1932394494?tag=bloggingrolle-20&amp;link_code=as3&amp;creativeASIN=1932394494&amp;creative=373489&amp;camp=211189&amp;quot;&amp;gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/resource/dmjohnson_3d.gif&quot; alt=&quot;RSS and Atom in Action image&quot; align=&quot;right&quot;&gt;
The next releases that I&amp;#39;d like to announce are the &lt;a href=&quot;http://blogapps.dev.java.net&quot;&gt;Blogapps&lt;/a&gt; 2.1 Examples and the Blogapps 2.1 Server.&lt;/p&gt;


&lt;p&gt;If you&amp;#39;d like to learn more about the Blogapps examples and server then read &lt;a href=&quot;http://today.java.net/pub/a/today/2006/10/17/the-blogapps-project.html&quot;&gt;The Blogapps Project&lt;/a&gt; article at Java.net. Here&amp;#39;s a quick summary:&lt;/p&gt;

&lt;blockquote&gt;
            The Blogapps project hosts a collection of &lt;b&gt;useful RSS and Atom utilities and 
            examples&lt;/b&gt; from &lt;a href=&quot;http://manning.com/dmjohnson&quot;&gt;RSS and Atom In Action&lt;/a&gt; 
            by Dave Johnson.  They&amp;#39;re 
            designed to be useful even if you haven&amp;#39;t read the book and they&amp;#39;re available 
            under the Apache License 2.0 so you can use the code in your applications and 
            you can modify and redistribute them as you wish. 
&lt;/blockquote&gt;

&lt;p&gt;What&amp;#39;s changed since 2.0? The examples have been updated to include the latest version of ROME Propono, which means that most of them now support the final Atom protcol spec. The server has been updated to include Roller 4.0 RC5, which also includes Atom protocol support and JSPWiki 2.4. And of course, various bugs have been fixed. Here are the release files, installation instructions and release notes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blogapps.dev.java.net/server.html&quot;&gt;Blogapps server install instructions&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://blogapps.dev.java.net/files/documents/4151/70491/blogapps-server-2.1.tar.gz&quot;&gt;Blogapps Server-2.1.tar.gz&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://blogapps.dev.java.net/files/documents/4151/70516/blogapps-server-2.1.zip&quot;&gt;Blogapps-Server-2.1.zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blogapps.dev.java.net/java/blogapps_2.x/README.html&quot;&gt;Blopapps example release notes&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://blogapps.dev.java.net/files/documents/4151/70489/blogapps-java-examples-2.1.tar.gz&quot;&gt;Blogapps-Examples-2.1.tar.gz&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://blogapps.dev.java.net/files/documents/4151/70490/blogapps-java-examples-2.1.zip&quot;&gt;Blogapps Examples-2.1.zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This blog entry was posted via Atom protocol and the MatisseBlogger blog-client, which you can see in the screen-shot below (which was also posted via Atom.&lt;/p&gt;

&lt;a href=&quot;http://rollerweblogger.org/roller/resource/roller-2007100222411.jpg&quot;&gt;
   &lt;img src=&quot;http://rollerweblogger.org/roller/resource/matisse-blogger-2.1.jpg&quot; alt=&quot;screenshot of MatisseBlogger&quot;&gt;
&lt;/a&gt;

&lt;p&gt;What&amp;#39;s next? Not sure at this point, but I will do another Blogapps release once ROME 1.0 is released.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_exerciser_ape_setup</guid>
    <title>Atom Protocol Exerciser (Ape) setup notes</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_exerciser_ape_setup</link>
    <pubDate>Thu, 28 Jun 2007 20:23:06 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>atom</category>
<atom:summary type="html">&lt;p&gt;There&amp;#39;s some very cool Atom news from Tim Bray this week. First, there&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://www.tbray.org/ongoing/When/200x/2007/06/25/mod_atom&quot;&gt;mod_atom&lt;/a&gt;, a plugin for the Apache HTTPD web server that provides a stripped down Atom server (written in C) that stores Atom entries as files. So now any HTTPD server can serve as a simple Atom store. 
&lt;/p&gt;&lt;p&gt;Second, Tim &lt;a class=&quot;external&quot; href=&quot;http://www.tbray.org/ongoing/When/200x/2007/06/26/Ape-Rev&quot;&gt;mentioned&lt;/a&gt; that he&amp;#39;s updated his Atom Protocol Exerciser (Ape) to support the new Atom protocol namespace and to add a couple of new tests. That&amp;#39;s perfect timing for me because I&amp;#39;m starting to work on Roller&amp;#39;s APP implementation and some other APP based things.
&lt;/p&gt;
&lt;p&gt;I need my own local copy of the Ape, so I decided to download the code an get it up and running. To make things easy, I decided to do this work on my Ubuntu system because it&amp;#39;s already setup with gcc, cvs, Apache HTTPD and Ruby. For my future reference and to help other Atom fans to get started, here are my notes from my Ape setup experience.&lt;/p&gt;</atom:summary><description>&lt;p&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;UPDATE: things have changed quite a bit since I published this blog entry. There is now a Ruby Gem for installing Ape and the process is &lt;i&gt;much&lt;/i&gt; easier than the one I describe here. See Sam Ruby&amp;#39;s post &lt;a class=&quot;external&quot; href=&quot;http://intertwingly.net/blog/2008/02/28/Migratory-Ape&quot;&gt;Migratory Ape&lt;/a&gt; for details - Dave (March 1, 2008)&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;&lt;p&gt;There&amp;#39;s some very cool Atom news from Tim Bray this week. First, there&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://www.tbray.org/ongoing/When/200x/2007/06/25/mod_atom&quot;&gt;mod_atom&lt;/a&gt;, a plugin for the Apache HTTPD web server that provides a stripped down Atom server (written in C) that stores Atom entries as files. So now any HTTPD server can serve as a simple Atom store. 
&lt;/p&gt;
&lt;p&gt;Second, Tim &lt;a class=&quot;external&quot; href=&quot;http://www.tbray.org/ongoing/When/200x/2007/06/26/Ape-Rev&quot;&gt;mentioned&lt;/a&gt; that he&amp;#39;s updated his Atom Protocol Exerciser (Ape) to support the new Atom protocol namespace and to add a couple of new tests. That&amp;#39;s perfect timing for me because I&amp;#39;m starting to work on Roller&amp;#39;s APP implementation and some other APP based things.
&lt;/p&gt;
&lt;p&gt;I need my own local copy of the Ape, so I decided to download the code an get it up and running. To make things easy, I decided to do this work on my Ubuntu system because it&amp;#39;s already setup with gcc, cvs, Apache HTTPD and Ruby. For my future reference and to help other Atom fans to get started, here are my notes from my Ape setup experience.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-SettingUpTheLatestRuby&quot;&gt;Setting up the latest Ruby#&lt;/h4&gt;
&lt;p&gt;Tim told me that the Ape needs Ruby 1.8.6, but Ubuntu has only 1.8.4 and apt-get upgrade ruby didn&amp;#39;t help so I downloaded and built 1.8.6 myself. Here&amp;#39;s what I did:
&lt;/p&gt;
&lt;pre&gt;
% wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
% tar xzvf ruby-1.8.6.tar.gz
% cd ruby-1.8.6
% ./configure
% make
% sudo make install
&lt;/pre&gt;
&lt;p&gt;Once the make install finished, I found that I had a fresh new copy of Ruby in /usr/local. Next, I set up my environment for running Ruby by adding the following three lines to my .bashrc file.
&lt;/p&gt;
&lt;pre&gt;
export RUBY_HOME=/usr/local
export RUBYLIB=$RUBY_HOME/lib/ruby:$PREFIX/lib/site_ruby/1.8
PATH=$RUBY_HOME/bin:$PATH
&lt;/pre&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-SettingUpTheLatestRubyGemsAndBuilder&quot;&gt;Setting up the latest RubyGems and Builder#&lt;/h4&gt;
&lt;p&gt;But that&amp;#39;s not all the Ruby you need for the Ape, you also need some RubyGems so I downloaded and built the latest version of that too. I followed nearly the same steps as with Ruby:
&lt;/p&gt;
&lt;pre&gt;
% wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
% tar xzvf rubygems-0.9.4.tgz
% cd rubygems-0.9.4
% ./configure
% make
% sudo make install
&lt;/pre&gt;
&lt;p&gt;Next, I setup environment for running RubyGems by adding GEM_HOME to my .bashrc. I did this by adding the following line after the definition of RUBY_HOME.
&lt;/p&gt;
&lt;pre&gt;
export GEM_HOME=$RUBY_HOME/lib/ruby/gems/1.8 
&lt;/pre&gt;
&lt;p&gt;Ape needs the RubyGems Builder, so I ran this command to get the latest version of the Builder from the RubyGems repository:
&lt;/p&gt;
&lt;pre&gt;
% sudo gem install builder
&lt;/pre&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-DownloadingApe&quot;&gt;Downloading Ape#&lt;/h4&gt;
&lt;p&gt;Finally, I&amp;#39;ve got enough Ruby in place to get going. So next I got the latest source for the Ape. Unfortunately, I think you need a Java.net account for this part. Here&amp;#39;s what I did:
&lt;/p&gt;
&lt;pre&gt;
% cd /home/dave/src.downloads
% cvs -d :pserver:snoopdave@cvs.dev.java.net:/cvs login
% cvs -d :pserver:snoopdave@cvs.dev.java.net:/cvs checkout ape 
&lt;/pre&gt;
&lt;h4 id=&quot;section-dummyPage-SettingUpAnHTTPDScriptAliasForRunningTheApe&quot;&gt;Setting up an HTTPD ScriptAlias for running the Ape #&lt;/h4&gt;
&lt;p&gt;Next, I created a ScriptAlias so I can run the Ape via CGI. I did this by adding the following to the end of my Apache config file (/etc/apache2/apache2.conf on Ubuntu):
&lt;/p&gt;
&lt;pre&gt;
ScriptAlias /apecgi/ /home/dave/src.downloads/ape/src/
&amp;lt;Directory /home/dave/src.downloads/ape/src/&amp;gt;
   Options +ExecCGI
&amp;lt;/Directory&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The Ape scripts don&amp;#39;t the have the #!/path/to/ruby line that you&amp;#39;d expect to find in a CGI script, so initially I couldn&amp;#39;t figure out how to get them to run. I pinged Tim and he told me that he uses a bash CGI script to run the Ape&amp;#39;s entry-point go.rb script. Following Tim&amp;#39;s example, I created a file named &amp;quot;go&amp;quot; in the Ape src directory with the following contents:
&lt;/p&gt;
&lt;pre&gt;
#!/bin/bash
export RUBY_HOME=/usr/local
export GEM_HOME=$RUBY_HOME/lib/ruby/gems/1.8 
export RUBYLIB=$RUBY_HOME/lib/ruby:$PREFIX/lib/site_ruby/1.8
PATH=$RUBY_HOME/bin:$PATH
export PATH
ruby go.rb
&lt;/pre&gt;
&lt;h4 id=&quot;section-dummyPage-PuttingTheApeHTMLFormInPlace&quot;&gt;Putting the Ape HTML form in place#&lt;/h4&gt;
&lt;p&gt;So the Ape code is in place and ready to run, but I still need to serve Ape&amp;#39;s HTML form. I decided to serve the form from HTTPD docroot, so I created a directory for it mkdir /var/www/ape. Then I went looking for the HTML form. Turns out, it&amp;#39;s not in CVS. So I browsed to &lt;a class=&quot;external&quot; href=&quot;http://tbray.org/ape&quot;&gt;http://tbray.org/ape&lt;/a&gt; and used Firefox&amp;#39;s &amp;quot;Save Page As...&amp;quot; and &amp;quot;Web Page, complete&amp;quot; to save index.html. Then I copied that index.html file into /var/www/ape and modified the  action to point to /apecgi/go.
&lt;/p&gt;
&lt;h4 id=&quot;section-dummyPage-AndOffWeGo...&quot;&gt;And off we go...#&lt;/h4&gt;
&lt;p&gt;Finally, I restarted Apache via sudo apache2ctl restart, browsed to http://localhost/ape and found Ape there, ready to roll. 
&lt;/p&gt;
&lt;p&gt;That was a lot more complicated that I had expected; makes me wonder if I&amp;#39;m the first person (other than Tim, of course) to deploy the Ape.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/joe_s_q_a_do</guid>
    <title>Joe&amp;#39;s Q&amp;A: Do we need WADL?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/joe_s_q_a_do</link>
    <pubDate>Tue, 5 Jun 2007 17:57:22 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>rest</category>
    <category>wadl</category>
<description>&lt;p&gt;
Joe turns a #redmonk IRC chat-room discussion into an insightful &lt;a href=&quot;http://bitworking.org/news/193/Do-we-need-WADL&quot;&gt;Steven O&amp;#39;Grady style Q&amp;amp;A on REST, WADL, interfaces and APP&lt;/a&gt;. For the record, I still think &lt;a href=&quot;https://wadl.dev.java.net/&quot;&gt;WADL&lt;/a&gt; is going to be useful to many, but I think &lt;a href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-15.html&quot;&gt;APP&lt;/a&gt; is going to be a whole lot more useful and it doesn&amp;#39;t need or use WADL.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: Pat Meuller has &lt;a href=&quot;http://www-03.ibm.com/developerworks/blogs/page/pmuellr?entry=wadl_waffling&amp;amp;ca=dat-bl&quot;&gt;more on the WADL question&lt;/a&gt;. Apparently, there were some interesting hallway discussions about about out at IBM RTP. I just caught the tail-end of that on IRC.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/friday_atom_and_rest_links</guid>
    <title>Friday Atom and REST links</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/friday_atom_and_rest_links</link>
    <pubDate>Fri, 25 May 2007 22:30:40 +0000</pubDate>
    <category>Links</category>
    <category>app</category>
    <category>atom</category>
    <category>rest</category>
    <category>webservices</category>
<description>A bunch of Atom and REST related links that I came across while catching up with my blog reading today:&lt;br&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/treydrake/entry/atom_and_ldap_sitting_in&quot;&gt;Atom and LDAP sitting in a tree&lt;/a&gt;. Trey Drake has released his OpenDS based Atom store as an open source project on Java.net at &lt;a href=&quot;http://atom.dev.java.net/&quot;&gt;http://atom.dev.java.net&lt;/a&gt;. It&amp;#39;s a directory server distributed as a Java web application that supports both Atom Publishing Protocol (APP) and Lightweight Directory Access Protocol (LDAP).&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/xml/library/x-atomencryption/&quot;&gt;Signing, encrypting and decrypting Atom&lt;/a&gt;. On IBM developerWorks, Nicolas Chase explains how &amp;quot;digital signatures and encryption can easily mesh with Atom data using the Apache Abdera API.&amp;quot; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a class=&quot;TitleLinkStyle&quot; href=&quot;http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=2a46fd53-67bf-4363-9c65-370984aaa79b&quot;&gt;Google GData: A Uniform Web API for All Google Services&lt;/a&gt;. Dare Obasanjo praises Google for creating a single uniform and RESTful web services API for eight of its key services, the APP based GData API. He writes &amp;quot;not only is it now possible to create a single library that knows how to talk to all of Google&amp;#39;s existing &lt;i&gt;and future &lt;/i&gt;Web
services since they all use GData. It is also a lot easier to provide &amp;#39;tooling&amp;#39; for these services than it would be for Yahoo&amp;#39;s family of Web
services given that they use a simple and uniform interface.&amp;quot;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/geertjan/entry/rest&quot;&gt;RESTful web services support in Netbeans&lt;/a&gt;. Geertjan links to blog entries and a screen-cast that explain Netbeans 6.0 support for RESTful web services, including the early access &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=311&quot;&gt;JSR-311&lt;/a&gt; REST API.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/rest_compile_now_generating_php&quot;&gt;Generate code from your WADL REST API&lt;/a&gt;. Eduardo at The Aquarium links to &lt;a href=&quot;http://blog.tomayac.de/index.php?date=2007-05-23#17:08:48&quot;&gt;Thomas Steiner&lt;/a&gt; who is making progress on a WADL editor and a generator, bringing WSDL-like code generation to RESTful web services.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/the_apache_lucene_gdata_server</guid>
    <title>The Apache Lucene GData server project</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/the_apache_lucene_gdata_server</link>
    <pubDate>Tue, 15 May 2007 22:18:21 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>atom</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;blockquote&gt;&lt;a href=&quot;http://planetgerman.blogspot.com/2007/05/apache-lucene-gdata-server-uses-db4o.html&quot;&gt;German Viscuso&lt;/a&gt;: Generally spoken &lt;a href=&quot;http://code.google.com/apis/gdata/overview.html&quot;&gt;GData&lt;/a&gt; provides a
general interface to make information available even beyond a browser
context by providing a single API that could be used to query, update,
and index structured data anywhere on the web.&lt;span style=&quot;font-family:arial;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; Could GData become a &lt;/span&gt;&lt;a style=&quot;font-family:arial;&quot; href=&quot;http://jeremy.zawodny.com/blog/archives/006687.html&quot;&gt;simple and open replacement&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; for all the proprietary communications  protocols currently in use by database vendors?&lt;/span&gt;&lt;/blockquote&gt;

Interesting thoughts. I&amp;#39;ve heard about the Atom Publishing Protocol (APP) based &lt;a href=&quot;http://dev.lucene-ws.net/wiki/API&quot;&gt;Lucene Web Services API&lt;/a&gt;, but I hadn&amp;#39;t heard about the Apache Lucene GData server project. Atom protocol is moving fast, especially considering the fact that it&amp;#39;s not finished.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/app_and_openid_at_javaone</guid>
    <title>APP and OpenID at JavaOne</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/app_and_openid_at_javaone</link>
    <pubDate>Mon, 7 May 2007 14:43:56 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>javaone2007</category>
    <category>openid</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/treydrake/entry/atom_app_openid_and_opends&quot;&gt;Trey Drake&lt;/a&gt;: How do you demo a directory server?  Build cool apps around it.  To that end, we&amp;#39;ve built an &lt;a href=&quot;http://en.wikipedia.org/wiki/Atom_%28standard%29&quot;&gt;Atom/APP&lt;/a&gt;
server, a lightweight OpenID server, a blogging and &amp;quot;twitter&amp;quot; like app
- all powered by OpenDS. Drop by our booth (Glassfish alley at
CommunityONE and .org section of the pavilion during JavaONE). &lt;a href=&quot;http://blogs.sun.com/ludo&quot;&gt;Ludo&lt;/a&gt; and I will introduce OpenDS and show off the demos in two talks; today at &lt;a href=&quot;http://developers.sun.com/events/communityone/track2.jsp&quot;&gt;CommunityONE&lt;/a&gt; at 5PM and Wednesday at 1:30 in the CommunityCorner.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Very cool. I&amp;#39;m not going to be the only one talking about Atom protocol at JavaOne. I&amp;#39;ll have to stop by the CommunityCorner, that sounds too good to miss.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/app_interop_follow_up</guid>
    <title>APP interop follow-up</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/app_interop_follow_up</link>
    <pubDate>Sun, 22 Apr 2007 19:59:19 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>java</category>
    <category>propono</category>
    <category>rome</category>
<description>&lt;p&gt;Following up on the APP interop event last week, here are the &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt; APP client issues we found:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://rome.dev.java.net/issues/show_bug.cgi?id=66&quot;&gt;ROME #66 BUG - don&amp;#39;t expect entry to be returned from update (FIXED)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;https://rome.dev.java.net/issues/show_bug.cgi?id=67&quot;&gt;
ROME #67 BUG - handle relative URIs in Service Doc
&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;https://rome.dev.java.net/issues/show_bug.cgi?id=68&quot;&gt;
ROME #68 BUG - handle out-of-line categories in Service Doc
&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://rome.dev.java.net/issues/show_bug.cgi?id=69&quot;&gt;
ROME #69 RFE - use pluggable auth. scheme w/Google and WSSE support&lt;br&gt;
&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;





&lt;p&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;/p&gt;&lt;p&gt;And here are the Roller APP server issues:&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://opensource.atlassian.com/projects/roller/browse/ROL-1393&quot;&gt;
ROL-1393 BUG - attributes in service doc should not be namespaced (FIXED)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;http://opensource.atlassian.com/projects/roller/browse/ROL-1394&quot;&gt;
ROL-1394 BUG - wrong content-type for service doc (FIXED)&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;http://opensource.atlassian.com/projects/roller/browse/ROL-1395&quot;&gt;
ROL-1395 BUG - support slugs for entries too&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;
&lt;a href=&quot;http://opensource.atlassian.com/projects/roller/browse/ROL-1396&quot;&gt;
ROL-1396 RFE - RSD support, auto-discovery for APP&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://opensource.atlassian.com/projects/roller/browse/ROL-1397&quot;&gt;
ROL-1397 BUG - null byte 0x0 getting into entry contents&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;I plan on fixing the Roller issues for this summer&amp;#39;s Roller 4.0 release. I won&amp;#39;t have time to fix the Propono issues for the upcoming Propono 0.5 release (due this week), so they&amp;#39;ll be in 0.6 sometime after JavaOne.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wso2_web_services_mashup_server</guid>
    <title>WSO2 Web Services Mashup Server</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wso2_web_services_mashup_server</link>
    <pubDate>Wed, 18 Apr 2007 01:17:17 +0000</pubDate>
    <category>General</category>
    <category>app</category>
    <category>atom</category>
    <category>webservices</category>
<description>I was wondering what web services vendor &lt;a href=&quot;http://wso2.org/&quot;&gt;WSO2&lt;/a&gt; was doing at the APP interop event. &lt;a href=&quot;http://www.bloglines.com/blog/sanjiva?id=201&quot;&gt;Turns out&lt;/a&gt;, they&amp;#39;ve got a &amp;quot;&lt;a href=&quot;http://wso2.org/library/1078&quot;&gt;Web Services Mashup Server&lt;/a&gt;&amp;quot; in the works.</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/app_interop_day_2</guid>
    <title>APP interop event day #2</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/app_interop_day_2</link>
    <pubDate>Wed, 18 Apr 2007 01:16:33 +0000</pubDate>
    <category>Sun</category>
    <category>app</category>
    <category>atom</category>
    <category>webservices</category>
<description>&lt;p&gt;The Atom Publishing Protocol interop event is over and now I&amp;#39;m catching up on blogs and email in my hotel room in Mountain View, CA. In the end, I was able to run &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_propono_0_4_released&quot;&gt;ROME Propono&lt;/a&gt; successfully against Blogger/GData, AOL Journals and Wordpress. I also found a dozen small problems in Propono and in the Roller APP server.&lt;/p&gt;&lt;p&gt;For more information on the event, check O&amp;#39;Reilly&amp;#39;s Keith Fahlgren&amp;#39;s summary of the event titled &lt;a href=&quot;http://www.oreillynet.com/xml/blog/2007/04/atom_publishing_protocol_inter.html&quot;&gt;Atom Publishing Protocol a Success&lt;/a&gt;. Keith mentions that &amp;quot;big industry players like AOL, Google, IBM, Microsoft, Oracle, and Sun
are working on APP clients and servers and sent people to the interop
event with interesting code&amp;quot; and I agree that&amp;#39;s definitely a good sign for the protocol. &lt;/p&gt;&lt;p&gt;I thought it was particularly interesting that database vendors IBM and Oracle
showed up with DB2 and Oracle-backed Atom stores. If Google&amp;#39;s half-dozen
or so Atom protocol based services aren&amp;#39;t enough make you stand up and
take notice, surely that should get your attention. &lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/app_interop_event_day_1</guid>
    <title>APP interop event day #1</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/app_interop_event_day_1</link>
    <pubDate>Tue, 17 Apr 2007 10:24:47 +0000</pubDate>
    <category>Roller</category>
    <category>app</category>
    <category>atom</category>
    <category>webservices</category>
<description>&lt;p&gt;Day one of the &lt;a href=&quot;http://www.ietf.org/html.charters/atompub-charter.html&quot;&gt;Atom&lt;/a&gt; Publishing Protocol (APP) &lt;a href=&quot;http://www.intertwingly.net/wiki/pie/April2007Interop&quot;&gt;interop event&lt;/a&gt; was a success, at least from my point-of-view. I was able to test the &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_propono_0_4_released&quot;&gt;Propono&lt;/a&gt; client against Blogger.com/GData, AOL Journals and an implementation from Oracle. I found and fixed problems in Roller&amp;#39;s APP implementation. Plus, it was great to meet all of the good folks implementing Atom and to get a close look at the Google campus. I&amp;#39;m getting ready to drive back to Google now so... gotta go. &lt;/p&gt;&lt;p&gt;Check out Tim Bray&amp;#39;s blog for some &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2007/04/16/Interop&quot;&gt;photos of the event&lt;/a&gt;. &lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/rome_propono_0_4_released</guid>
    <title>ROME Propono 0.4 released</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/rome_propono_0_4_released</link>
    <pubDate>Tue, 10 Apr 2007 15:20:26 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>java</category>
    <category>rome</category>
    <category>rss</category>
<description>&lt;p&gt;&lt;a href=&quot;http://rome.dev.java.net&quot;&gt;&lt;img vspace=&quot;0&quot; hspace=&quot;0&quot; border=&quot;0&quot; align=&quot;right&quot; src=&quot;http://rollerweblogger.org/roller/resource/rome-logo.png&quot;&gt;&lt;/a&gt;I&amp;#39;m happy to announce the first release of the &lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;ROME&lt;/a&gt; subproject Propono. Propono is a ROME-based Java class library that supports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API.&lt;br&gt;&lt;br&gt;Here&amp;#39;s the project page&lt;br&gt; &amp;nbsp; &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot; target=&quot;_blank&quot;&gt;http://wiki.java.net/bin/view/Javawsxml/RomePropono&lt;/a&gt;&lt;br&gt;&lt;br&gt;Here&amp;#39;s the Propono 0.4 release page:&lt;br&gt; &amp;nbsp; &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomeProponoRelease04&quot; target=&quot;_blank&quot;&gt;http://wiki.java.net/bin/view/Javawsxml/RomeProponoRelease04&lt;/a&gt;&lt;br&gt;&lt;br&gt;And here&amp;#39;s a link to the API docs, which include details, diagrams and code examples:&lt;br&gt; &amp;nbsp; &lt;a href=&quot;https://rome.dev.java.net/apidocs/subprojects/propono/0.4/overview-summary.html&quot; target=&quot;_blank&quot;&gt;https://rome.dev.java.net/apidocs/subprojects/propono/0.4/overview-summary.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;I&amp;#39;ll be testing Propono this week and next (at the Google-hosted &lt;a href=&quot;http://www.intertwingly.net/wiki/pie/April2007Interop&quot;&gt;APP interop meeting&lt;/a&gt;) so now is a great time to provide feedback and bug reports. I plan on releasing Propono 0.5 in the *very* near future.
&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_interop_event</guid>
    <title>Atom protocol interop event</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_interop_event</link>
    <pubDate>Thu, 5 Apr 2007 17:16:06 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>atom</category>
    <category>feeds</category>
    <category>webservices</category>
<description>I just got approval to attend the &lt;a href=&quot;http://www.intertwingly.net/wiki/pie/April2007Interop&quot;&gt;Atom protocol interop event&lt;/a&gt; at Google April 16 and 17. I&amp;#39;ll be bringing at least three Atom protocol implementations: Roller&amp;#39;s Atom server, Propono&amp;#39;s simple file-based Atom server and Propono&amp;#39;s Atom client. &lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_as_the_substrate</guid>
    <title>Atom protocol as the substrate for reliable messaging</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_as_the_substrate</link>
    <pubDate>Thu, 5 Apr 2007 16:48:03 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>atom</category>
    <category>webservices</category>
<description>&lt;p&gt;I&amp;#39;ve heard the argument before that the &lt;a href=&quot;http://en.wikipedia.org/wiki/Representational_State_Transfer&quot;&gt;REST&lt;/a&gt; approach to web services doesn&amp;#39;t give you reliable messaging and that&amp;#39;s the reason you need to stick with WS-*. Today Bill de hÃ&#147;ra &lt;a href=&quot;http://www.dehora.net/journal/2007/04/step_3.html&quot;&gt;disputes that notion&lt;/a&gt; with an interesting and somewhat provocative post that mentions a couple of specs for messaging via HTTP (&lt;a href=&quot;http://www.dehora.net/doc/httplr/draft-httplr-01.html&quot;&gt;HTTPLR&lt;/a&gt; and &lt;a href=&quot;http://www.microsoft.com/biztalk/techinfo/whitepapers/2000/framwork20.mspx&quot;&gt;BTF&lt;/a&gt;) and argues that Atom protocol can serve as the basis for web-scale reliable messaging. &lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.dehora.net/journal/2007/04/step_3.html&quot;&gt;Bill de hÃ&#147;ra&lt;/a&gt;: There are a number of reasons to choose Atom Protocol as the substrate for web-scale reliable messaging. First, &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2007/04/02/APP-Interop&quot;&gt;a ton of software will be written to target  APP&lt;/a&gt;
in the next few years, and there is plenty of scope for extending the
protocol; this suggests openly available and flexible software stacks.
Second, since all document collections in Atom Protocol are served as &lt;a href=&quot;http://www.ietf.org/rfc/rfc4287&quot;&gt;Atom Feeds&lt;/a&gt;,
it has inherent support for systems management and end to end
reconciliation. Third, Atom entries have identity and are natural
envelopes, unlike SOAP, where identity and true enveloping requires
further specification (essentially raw Atom presents a better basis for
interoperation than raw SOAP). Fourth, Atom Protocol can support binary
content transmission not just XML, and thus can transmit arbitrary
payloads. Finally, because Atom Protocol respects media types and
deployed HTTP infrastructure, independent proxy inspection and security
check-pointing can be installed cleanly, also eliminating the need to
rewrite 2 stack layers and buy XML appliances to support and secure
SOAP backed web services. It seems to be a question of when, rather
than if, this will get built out. &lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I would have blogged about this earlier today, but Bill&amp;#39;s blog looked foobar and I didn&amp;#39;t realize that today is &lt;a href=&quot;http://naked.dustindiaz.com/&quot;&gt;CSS Naked Day&lt;/a&gt;. My blog doesn&amp;#39;t look half bad naked. &lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links14</guid>
    <title>Latest links: March 21, 2007</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links14</link>
    <pubDate>Wed, 21 Mar 2007 22:42:13 +0000</pubDate>
    <category>Links</category>
    <category>app</category>
    <category>atom</category>
    <category>java</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://weblogs.java.net/blog/davidvc/archive/2007/03/why_use_atom_pu_1.html&quot;&gt;David Van Couvering: Why use Atom Publishing Protocol for REST?&lt;/a&gt;&lt;br&gt; &amp;quot;Why not just use HTTP and JSON and have done with it?&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://google-code-updates.blogspot.com/2007/03/ode-to-hibernate.html&quot;&gt;Max Ross: Ode to Hibernate (and Shards)&lt;/a&gt;&lt;br&gt; &amp;quot;Shards, a framework that adds support for horizontal partitioning (or in Google parlance, &amp;quot;sharding&amp;quot;) to Hibernate Core&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.snellspace.com/wp/?p=625&quot;&gt;James Snell: Don&amp;#39;t Panic&lt;/a&gt;&lt;br&gt; &amp;quot;it is possible to get very far with nothing but the base APP protocol.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://torrez.us/archives/2007/03/21/525/&quot;&gt;Elias Torres: Is AtomPP for or not for blogs?&lt;/a&gt;&lt;br&gt; &amp;quot;we&amp;#39;ll probably have to do some good amount of extra work in defining how blogging clients will interact with a blogging service&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://robubu.com/?p=26&quot;&gt;Rob Yates: Atom Publishing Protocol - not enough for blogs?&lt;/a&gt;&lt;br&gt; Rob wants a guide that &amp;quot;allows blogging clients to be interoperable with blogging servers&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.imc.org/atom-protocol/mail-archive/msg08755.html&quot;&gt;Re: I-D ACTION:draft-ietf-atompub-protocol-14.txt&lt;/a&gt;&lt;br&gt; Roy Fielding: &amp;quot;the sky is not falling, and AtomPP implementations will interoperate just fine&amp;quot;&lt;/li&gt;
&lt;/ul&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_powered_blogging_portlet</guid>
    <title>Atom protocol powered Blogging Portlet</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_powered_blogging_portlet</link>
    <pubDate>Mon, 12 Feb 2007 23:17:17 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogging</category>
    <category>java</category>
    <category>portlet</category>
    <category>roller</category>
<description>Jeffrey Blattman has put together a &lt;a href=&quot;http://blogs.sun.com/jtb/entry/blogging_portlet&quot;&gt;new Portlet&lt;/a&gt; that makes it possible to blog via Atom Publishing Protocol (APP) from a portal page. He&amp;#39;s added it to the &lt;a href=&quot;https://portlet-repository.dev.java.net/&quot;&gt;Open Source Portlet Repository&lt;/a&gt; on Java.net so you can try it out against your favorite APP server.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/app_interop</guid>
    <title>APP interop at E-Tech</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/app_interop</link>
    <pubDate>Mon, 29 Jan 2007 23:42:10 +0000</pubDate>
    <category>Roller</category>
    <category>app</category>
    <category>atom</category>
    <category>roller</category>
<description>&lt;a href=&quot;http://www.snellspace.com/wp/?p=599&quot;&gt;
James Snell&lt;/a&gt; brings news of an &lt;a href=&quot;http://www.imc.org/atom-protocol/mail-archive/msg08068.html&quot;&gt;Atom Publishing Protocol (APP) interop&lt;/a&gt; event to occur in March at the &lt;a href=&quot;http://conferences.oreillynet.com/etech/&quot;&gt;O&amp;#39;Reilly E-Tech&lt;/a&gt; conference. I&amp;#39;d love to use that as an excuse to go to to E-Tech, since my current work involves APP in ROME and Roller, but it sounds like I can participate remotely. &lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/new_atom_spec_and_queen</guid>
    <title>New Atom protocol spec draft and Queen City planets</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/new_atom_spec_and_queen</link>
    <pubDate>Wed, 27 Dec 2006 16:50:19 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogging</category>
    <category>rest</category>
    <category>webdev</category>
    <category>webservices</category>
<description>&lt;p&gt;&lt;a href=&quot;http://bitworking.org/news/Atom_Publishing_Protocol_Draft_12&quot;&gt;Joe Gregorio announces&lt;/a&gt; a new &lt;a href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-12.html&quot;&gt;Atom Publishing Protocol Spec (draft #12)&lt;/a&gt; and he says it might end up being the final. I guess it&amp;#39;s time for a new &lt;a href=&quot;http://blogapps.dev.java.net&quot;&gt;Blogapps&lt;/a&gt; release with APP draft #12 and &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_0_9_beta_is&quot;&gt;ROME 0.9&lt;/a&gt; support.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Plus, Joe has put together a set of new &lt;a href=&quot;http://bitworking.org/news/Charlotte_Mecklenburg_County__NC&quot;&gt;planet sites for towns in the Charlotte, NC area&lt;/a&gt;; all based on feeds from Google Base, Google Blogs, Google News, Craigs List, Flickr and the Weather Service. The sites look useful, but the ads combined with the minimalist design make them look a little spammy on first glance. Perhaps a short &amp;quot;about this site&amp;quot; paragraph is in order.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_publishing_protocol_draft_10</guid>
    <title>Atom Publishing Protocol, draft #10</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_publishing_protocol_draft_10</link>
    <pubDate>Wed, 13 Sep 2006 10:33:01 +0000</pubDate>
    <category>Blogging</category>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>webservices</category>
<description>&lt;a href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-10.html&quot; target=&quot;_self&quot;&gt;APP draft #10&lt;/a&gt; is available. I&amp;#39;m still reading it over, but the major changes appear to be:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Categories can be specified at the &lt;s&gt;workspace and&lt;/s&gt; collection level. Multiple category schemes are allowed and both fixed and free-form categories (e.g. tags) are allowed.&lt;/li&gt;&lt;li&gt;Collection titles are now specified by an &amp;lt;atom:title&amp;gt; instead of an attribute on the &amp;lt;collection&amp;gt; element.&lt;/li&gt;&lt;li&gt;A new &amp;quot;slug&amp;quot; header has been added for media posts so that clients can specify the file-name to be used for the uploaded file.&lt;/li&gt;&lt;/ul&gt;I&amp;#39;m especially happy about the category support -- now Atom protocol can do everything that MetaWeblog API can do, and much more. I&amp;#39;ll be updating my &lt;a href=&quot;http://blogapps.dev.java.net/&quot; target=&quot;_self&quot;&gt;client and server implementations&lt;/a&gt; during the next week.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/tri_xml_2006_presentation</guid>
    <title>Tri-XML 2006 presentation</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/tri_xml_2006_presentation</link>
    <pubDate>Sat, 29 Jul 2006 12:12:20 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogapps</category>
    <category>rss</category>
<description>&lt;br&gt;Here&amp;#39;s the abstract of the talk I gave this morning at &lt;a href=&quot;http://www.trixml.org/confindex.shtml&quot; target=&quot;_self&quot;&gt;Tri-XML 2006&lt;/a&gt;:&lt;br&gt;&lt;blockquote&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Beyond blogging: Atom format and protocol&lt;/span&gt;. Like XML-RPC and SOAP before, feeds and publishing protocols were born in the 
        blogopshere and quickly moved beyond blogging. Nowadays, web service providers are using
        RSS/Atom feeds and REST-based publishing protocols as lightweight alternatives to SOAP. And 
        developers are finding new ways to combine web services from different sites into new
        applications, known as &amp;quot;mash-ups&amp;quot; in the lingo of Web 2.0. If you&amp;#39;d like to do the same,
        then attend this talk to learn about the new IETF Atom feed format (RFC-4287) and the
        soon-to-be-finalized Atom protocol, which together form a strong foundation for REST-based
        web services development.&lt;/blockquote&gt;Here&amp;#39;s a rough outline of the talk:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Introduction&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Beyond blogging&lt;/li&gt;&lt;li&gt;Blogs hit the hit time&lt;/li&gt;&lt;li&gt;The web is bloggy&lt;/li&gt;&lt;li&gt;Atom as an alternative to WS-*&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Understanding feeds&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Birth of RSS&lt;/li&gt;&lt;li&gt;RSS 1.0: the RDF fork&lt;/li&gt;&lt;li&gt;The simple fork and RSS 2.0&lt;br&gt;&lt;/li&gt;&lt;li&gt;Atom: the standard&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Parsing feeds&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Fetching and parsing feeds&lt;/li&gt;&lt;li&gt;Universal Feed Parser&lt;/li&gt;&lt;li&gt;ROME utilities&lt;/li&gt;&lt;li&gt;Windows RSS platform&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Serving feeds&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Approaches for generating and serving feeds&lt;br&gt;&lt;/li&gt;&lt;li&gt;Feed autodiscovery&lt;/li&gt;&lt;li&gt;Styled feeds&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Atom protocol&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Compared to MetaWeblog&lt;/li&gt;&lt;li&gt;REST based approach&lt;/li&gt;&lt;li&gt;Introspection&lt;/li&gt;&lt;li&gt;Collections&lt;/li&gt;&lt;li&gt;Extending Atom&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Atom protocol in action&lt;br&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Getting a service doc&lt;/li&gt;&lt;li&gt;Getting collections&lt;/li&gt;&lt;li&gt;Posting an entry&lt;/li&gt;&lt;li&gt;Posting an image&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Demo: interacting with an Atom server via command-line&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;And here are the slides: &lt;a href=&quot;http://rollerweblogger.org/downloads/presentations/TriXML2006-BeyondBlogging.pdf&quot; target=&quot;_self&quot;&gt;TriXML2006-BeyondBlogging.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;Tags: topic:[Atom Publishing Protocol], topic:[Atom], topic:[APP], topic:[RSS], topic:[feeds]&lt;br&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_and_wadl</guid>
    <title>Atom protocol and WADL</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_and_wadl</link>
    <pubDate>Fri, 28 Apr 2006 16:47:44 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>java</category>
    <category>rest</category>
<description>&lt;br&gt;Via &lt;a href=&quot;http://blogs.sun.com/roller/page/theaquarium?entry=wadl_a_simple_description_of&quot; target=&quot;_self&quot;&gt;The Aquarium&lt;/a&gt; I see that &lt;a href=&quot;http://weblogs.java.net/blog/mhadley/archive/2006/04/wadl_now_a_sun.html&quot; target=&quot;_self&quot;&gt;Mark Hadley&lt;/a&gt;&amp;#39;s work on Web Application Description Language (WADL) is now a &lt;a href=&quot;http://research.sun.com/spotlight/2006/2006-04-24-TR153.html&quot; target=&quot;_self&quot;&gt;Sun Technical Report&lt;/a&gt;. WADL provides a way to describe a REST based web application or service so that tools can discover services, generate proxies, etc. As I understand it, WADL is to REST as WSDL is to SOAP.&lt;br&gt;&lt;br&gt;There&amp;#39;s also something new since the last time I looked at WADL. Mark has added a section on the &lt;a href=&quot;http://www.ietf.org/html.charters/atompub-charter.html&quot; target=&quot;_self&quot;&gt;Atom protocol&lt;/a&gt; and examples that show how to use a WADL file to replace an Atom introspection document. Looks like good stuff to me. If you need an introspection doc for your REST based web service, why not use WADL?&lt;br&gt;&lt;br&gt;Via Google, I found that there&amp;#39;s also a &lt;a href=&quot;http://www.idealliance.org/proceedings/xml05/slides/hadley.pdf&quot; target=&quot;_self&quot;&gt;WADL presentation&lt;/a&gt; on-line.&lt;br&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/pebble_and_atom_protocol</guid>
    <title>Pebble and Blojsom and Atom protocol</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/pebble_and_atom_protocol</link>
    <pubDate>Fri, 3 Mar 2006 09:31:00 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>roller</category>
<description>&lt;br&gt;I&amp;#39;ve used code from the excellent &lt;a target=&quot;_self&quot; href=&quot;http://pebble.sourceforge.net/&quot;&gt;Pebble&lt;/a&gt; and &lt;a href=&quot;http://blojsom.sf.net/&quot; target=&quot;_self&quot;&gt;Blojsom&lt;/a&gt; blog servers in the past (and given credit in the Roller CREDITS file). I&amp;#39;d love to be able to contribute back and now there&amp;#39;s an opportunity to do that. So to &lt;a target=&quot;_self&quot; href=&quot;http://www.simongbrown.com/&quot;&gt;Simon&lt;/a&gt; and &lt;a href=&quot;http://www.blojsom.com/blog/&quot; target=&quot;_self&quot;&gt;David&lt;/a&gt; (or anybody else hacking those servers), if you want to get Atom protocol working in your server, the easiest way &lt;span style=&quot;font-style:italic;&quot;&gt;might&lt;/span&gt; be for you to bring in some code from Roller. I specifically designed our Atom protocol implementation to allow for sharing and to be free of Roller dependencies. &lt;br&gt;&lt;br&gt;For example, here&amp;#39;s how you&amp;#39;d do it for Pebble:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Bring the classes from the package &lt;a target=&quot;_self&quot; href=&quot;http://svn.apache.org/viewcvs.cgi/incubator/roller/trunk/sandbox/atomprotocol/src/org/roller/presentation/atomapi/&quot; style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;org.roller.presentation.atomapi&lt;/a&gt; into Pebble (except for &lt;span style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;RollerAtomHandler&lt;/span&gt;, you won&amp;#39;t need that one). &lt;br&gt;&lt;/li&gt;
&lt;li&gt;You&amp;#39;ll also need to bring in the &lt;a href=&quot;http://rome.dev.java.net/&quot; target=&quot;_self&quot;&gt;ROME&lt;/a&gt; and &lt;a href=&quot;http://jdom.org/&quot; target=&quot;_self&quot;&gt;JDOM&lt;/a&gt; jars if you&amp;#39;re not aleady using them.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Implement the interface &lt;a target=&quot;_self&quot; href=&quot;http://svn.apache.org/viewcvs.cgi/incubator/roller/trunk/sandbox/atomprotocol/src/org/roller/presentation/atomapi/AtomHandler.java?rev=359659&amp;amp;view=markup&quot; style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;AtomHandler&lt;/a&gt; with calls to the Pebble backend, call it &lt;span style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;PebbleAtomHandler&lt;/span&gt; or something similar.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Change one line of code in the &lt;span style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;AtomServlet&lt;/span&gt; method &lt;span style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;createAtomRequestHandler()&lt;/span&gt; to create your new &lt;span style=&quot;font-family:Courier New,Courier,mono;&quot;&gt;PebbleAtomHandler&lt;/span&gt; instead of the Roller one.&lt;/li&gt;&lt;/ul&gt;And feel free to pepper me with questions along the way. I&amp;#39;d be happy to help and happy to make changes to make this sharing easier. I&amp;#39;m also considering the idea of an &lt;span style=&quot;font-style:italic;&quot;&gt;Atom Server Kit &lt;/span&gt;package in my &lt;a target=&quot;_self&quot; href=&quot;http://blogapps.dev.java.net/&quot;&gt;Blogapps&lt;/a&gt; project (on second thought, ROME might be a better home).&lt;br&gt;&lt;br&gt;When you&amp;#39;re done, head over to the #atom channel on irc.freenode.net so we can do some interop testing with MatisseBlogger and other Atom protocol clients.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_opensearch_and_microformats</guid>
    <title>Atom protocol, OpenSearch and Microformats</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_opensearch_and_microformats</link>
    <pubDate>Fri, 24 Feb 2006 11:00:23 +0000</pubDate>
    <category>Blogging</category>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
<description>&lt;blockquote&gt;&lt;a target=&quot;_self&quot; href=&quot;http://bitworking.org/news/Lucene_Web_Service_API&quot;&gt;Joe Gregorio&lt;/a&gt;: APP, OpenSearch and Microformats. Get used to seeing them; those small 
  pieces loosely joined are the future of web services.&lt;/blockquote&gt;Joe&amp;#39;s talking about the new &lt;a target=&quot;_self&quot; href=&quot;http://dev.lucene-ws.net/wiki/API&quot;&gt;Lucene Web Services API&lt;/a&gt;, which is based on &lt;a target=&quot;_self&quot; href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-08.html&quot;&gt;Atom protocol&lt;/a&gt; (APP), &lt;a target=&quot;_self&quot; href=&quot;http://opensearch.a9.com/spec/1.1/&quot;&gt;OpenSearch&lt;/a&gt; and &lt;a target=&quot;_self&quot; href=&quot;http://www.microformats.org/&quot;&gt;Microformats&lt;/a&gt;. It&amp;#39;s very cool to see the APP already applied outside of the realm of blogs.
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_draft_7</guid>
    <title>Atom protocol draft 7</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_draft_7</link>
    <pubDate>Mon, 2 Jan 2006 10:41:23 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogapps</category>
<description>&lt;br&gt;I was planning on submitting Chapter 8 of &lt;a href=&quot;http://manning.com/dmjohnson&quot; target=&quot;_self&quot;&gt;RSS and Atom in Action&lt;/a&gt; to Manning today, but &lt;a target=&quot;_self&quot; href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-07.html&quot;&gt;Atom protocol draft 7&lt;/a&gt; has appeared. The &lt;a href=&quot;http://dehora.net/doc/app/draft-ietf-atompub-protocol-07-from-6.diff.html&quot; target=&quot;_self&quot;&gt;changes&lt;/a&gt; look good and the only really significant one for me is the move from list templates, which allowed indexing into a collection, to next/previous paging as we had in draft 4. I&amp;#39;m going to revise my implementation, Chapter 8 and turn it in on Wednesday. Once that&amp;#39;s done, I&amp;#39;ll release &lt;a href=&quot;http://blogapps.dev.java.net/&quot; target=&quot;_self&quot;&gt;Blogapps&lt;/a&gt; v0.1.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_draft_05</guid>
    <title>Atom Protocol draft 05</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_draft_05</link>
    <pubDate>Wed, 12 Oct 2005 18:27:45 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogapps</category>
<description>&lt;p&gt;
There&amp;#39;s a &lt;a href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-05.html&quot;&gt;new draft&lt;/a&gt; of the Atom Protocol available and I&amp;#39;ve already started working on updating my client (the BlogClient example from my upcoming book &lt;a href=&quot;http://manning.com/dmjohnson&quot;&gt;RSS and Atom in Action&lt;/a&gt;) and server (in the Roller sandbox) implementations. Surprisingly, the new spec doesn&amp;#39;t look all that different from the previous one,  so perhaps a weekend of work will do the trick. 

&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/how_atom_works</guid>
    <title>How Atom Publishing Protocol works</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/how_atom_works</link>
    <pubDate>Fri, 3 Jun 2005 11:00:14 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogapps</category>
<description>&lt;p&gt;&lt;i&gt;Unlike the other RSS and Atom books that are hitting the shelves these days, 
&lt;a class=&quot;external&quot; href=&quot;http://www.manning.com/dmjohnson&quot;&gt;RSS and Atom in Action&lt;/a&gt; is going to cover the Atom Publishing Protocol. 
So, I&amp;#39;m following the protocol development very closely.
This blog entry is a summary of Atom as it stands today 
(based on &lt;a class=&quot;external&quot; href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-04.html&quot;&gt;Draft 04&lt;/a&gt; 
released May 10, 2005). It&amp;#39;s a follow up to my post earlier post
&lt;a class=&quot;external&quot; href=&quot;http://www.rollerweblogger.org/comments/roller/blog/atom_in_a_nutshell&quot;&gt;Atom in a nutshell&lt;/a&gt; which explained Atom API 0.9.&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;Atom Publishing Protocol (a work in progress) is a new web services protocol for interacting with a blog, wiki or other type of content management system by simply sending XML over HTTP, no SOAP or XML-RPC required. Your code interacts with collections of web resources by using HTTP verbs GET, POST, PUT and DELETE as they are meant to be used. Here&amp;#39;s how it works.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Discovering your workspaces and collections&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;To start out, you do an authenticated GET on a server&amp;#39;s Atom URL to get a description of the services available to you. You get back an an Atom Services XML document that lists the workspaces and within each the collections available. A workspace could be a blog, a wiki namespace or content collection that you have access to via your username/password. 
&lt;/p&gt;
&lt;p&gt;Each workspace can contain two types of collections: entries and resources. Eventually, the spec will probably allow for (at least) five types of collections: entries, categories, templates, users, and generic resources.  
&lt;/p&gt;
&lt;p&gt;Here is an example of a services document XML for a blog user with access to two blogs &amp;quot;My Blog&amp;quot; and &amp;quot;Marketing Team Blog&amp;quot;:
&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;#39;utf-8&amp;#39;?&amp;gt;
&amp;lt;service xmlns=&amp;quot;http://purl.org/atom/app#&amp;quot;&amp;gt;
     &amp;lt;workspace title=&amp;quot;My Blog&amp;quot; &amp;gt; 
        &amp;lt;collection contents=&amp;quot;entries&amp;quot; title=&amp;quot;Blog Entries&amp;quot; 
            href=&amp;quot;http://localhost:8080/roller/atom/myblog/entries&amp;quot; /&amp;gt;
        &amp;lt;collection contents=&amp;quot;generic&amp;quot; title=&amp;quot;File Uploads&amp;quot; 
            href=&amp;quot;http://localhost:8080/roller/atom/myblog/resources&amp;quot; /&amp;gt;
     &amp;lt;/workspace&amp;gt;
     &amp;lt;workspace title=&amp;quot;Marketing Team Blog&amp;quot;&amp;gt;
         &amp;lt;collection contents=&amp;quot;entries&amp;quot; title=&amp;quot;Blog Entries&amp;quot; 
             href=&amp;quot;http://localhost:8080/roller/atom/marketingblog/entries&amp;quot; /&amp;gt;
         &amp;lt;collection contents=&amp;quot;generic&amp;quot; title=&amp;quot;File Uploads&amp;quot; 
             href=&amp;quot;http://localhost:8080/roller/atom/marketingblog/entries&amp;quot; /&amp;gt;
     &amp;lt;/workspace&amp;gt;
&amp;lt;/service&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Working with collections&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;So, a workspace is a blog and a blog contains collections of things like entries, uploaded file resources, categories, etc. All of these collections are handled the same way and respond the same way to the HTTP verbs. All support paging, so the server can return a collection in easy to digest chunks. All support query by date, so you can filter collections by start and end date.
&lt;/p&gt;
&lt;p&gt;To get a collection, do a GET on it&amp;#39;s URI (that&amp;#39;s the collection&amp;#39;s &amp;#39;href&amp;#39; as listed in the services document).
&lt;/p&gt;
&lt;p&gt;The services document specifies a URI for each collection. If you do a GET on a collection URI, you&amp;#39;ll get back an Atom Collection XML document that lists the first X number of members in the collection. If there are more than X members, then the document will include a next URI which you can use to get the next batch of members. You can also specify an HTTP Range header to restrict a collection to only those between specific start and end dates. 
&lt;/p&gt;
&lt;p&gt;Here is an example of a the collection document XML you might receive by doing a GET on the Blog Entries collection from My Blog above.
&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;#39;utf-8&amp;#39;?&amp;gt;
&amp;lt;collection xmlns=&amp;quot;http://purl.org/atom/app#&amp;quot;
   next=&amp;quot;http://localhost:8080/roller/atom/myblog/entry/77088a1&amp;quot; &amp;gt;
   &amp;lt;member title=&amp;quot;The Connells: Fun and Games&amp;quot;
         href=&amp;quot;http://localhost:8080/roller/atom/myblog/entry/7700a0&amp;quot; 
         updated=&amp;quot;2005-04-16T23:07:08-0400&amp;quot; /&amp;gt;
   &amp;lt;member title=&amp;quot;The Connells: Boylan Heights&amp;quot;
         href=&amp;quot;http://localhost:8080/roller/atom/myblog/entry/7700c9&amp;quot; 
         updated=&amp;quot;2005-04-15T23:06:09-0400&amp;quot; /&amp;gt;
   &amp;lt;member title=&amp;quot;The Connells: Gladiator&amp;quot;
         href=&amp;quot;http://localhost:8080/roller/atom/myblog/entry/7700c8&amp;quot; 
         updated=&amp;quot;2005-04-14T14:05:31-0400&amp;quot; /&amp;gt;
&amp;lt;/collection&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Each member in a collection document has a title and a URI. To get a member of a collection, you do a GET on the member&amp;#39;s URI. To delete it you use DELETE. To update it you use PUT. Here&amp;#39;s an example of the entry XML you might receive by doing a GET on the first member of the Blog Entries collection example above:
&lt;/p&gt;
&lt;pre&gt;
&amp;lt;entry xmlns=&amp;quot;http://purl.org/atom/ns#&amp;quot;&amp;gt;
  &amp;lt;title&amp;gt;The Connells: Fun and Games&amp;lt;/title&amp;gt;
  &amp;lt;id&amp;gt;7700a0&amp;lt;/id&amp;gt;
  &amp;lt;updated&amp;gt;2005-06-01T19:07:45Z&amp;lt;/updated&amp;gt;
  &amp;lt;content type=&amp;quot;html&amp;quot;&amp;gt;
     Let me tear down into your heart
     Let me take a seat and stay awhile
     Let me have a half of your whole  
     Let me keep it for myself awhile  
  &amp;lt;/content&amp;gt;
&amp;lt;/entry&amp;gt;
&lt;/pre&gt;
&lt;p&gt;To add a member to a collection, you simply POST the member to the collection&amp;#39;s URI. If you&amp;#39;re POSTing a new entry, send the XML for the entry (example entry XML shown below). If you&amp;#39;re POSTing a file upload, then send the file.
&lt;/p&gt;
&lt;p&gt;That&amp;#39;s it. Pretty simple huh?
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What about authentication?&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;The Atom spec requires that a server support either HTTP digest authentication, which can be difficult for some bloggers to implement (depending on their ISP and web server), or CGI authentication, which can be a lot easier to implement (I believe &lt;a class=&quot;external&quot; href=&quot;http://www.xml.com/pub/a/2003/12/17/dive.html&quot;&gt;WSSE&lt;/a&gt; qualifies as CGI authentication, and that&amp;#39;s what my Atom implementation uses).
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What about devices with limited HTTP support?&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;Some devices have crippled HTTP client capabilities. For example, some Java J2ME powered cell phones can&amp;#39;t do an HTTP PUT or DELETE.  If you can&amp;#39;t do a PUT or a DELETE, you can use POST instead with a SOAP wrapper that specifies a Web-Method of PUT or DELETE. Atom servers are required to support SOAP POSTS and returning results in SOAP envelopes.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What about draft vs. published states for entries?&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;Still undecided. Some folks suggest using different collections for entries in different states (draft, approved, published, etc.). But it&amp;#39;s more likely that a new element will be introduced in the Atom format to specify the state of an entry.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;That&amp;#39;s my summary of Atom protocol as it stands today. I think it&amp;#39;s a great improvement over existing blog APIs in terms of features and design. And it&amp;#39;s not very difficult to implement. I know because I&amp;#39;m almost done with my server and client implementations. I hope to release them shortly for review. The release will probably be a standalone release of Roller (the Atom server) and my BlogClient UI (the Atom client). 
&lt;/p&gt;
&lt;p&gt;If you see some opportunities for improvement in the protocol, please join the Atom Protocol &lt;a class=&quot;external&quot; href=&quot;http://www.imc.org/atom-protocol/index.html&quot;&gt;mailing list&lt;/a&gt; and help out. Last call for spec changes in now &lt;a class=&quot;external&quot; href=&quot;http://www.imc.org/atom-protocol/mail-archive/msg00866.html&quot;&gt;slated for October&lt;/a&gt;. 
And for the Atom experts out there: what did I get wrong? Leave a &lt;a class=&quot;external&quot; href=&quot;http://www.rollerweblogger.org/comments/roller/blog/how_atom_works#comments&quot;&gt;comment&lt;/a&gt;.
&lt;/p&gt;</description>  </item>
</channel>
</rss>