<?xml version="1.0" encoding='utf-8'?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Blogging Roller</title>
    <subtitle type="html">Dave Johnson on open web technologies, social software and software development</subtitle>
    <id>https://rollerweblogger.org/roller/feed/entries/atom</id>
        <link rel="self" type="application/atom+xml" href="https://rollerweblogger.org/roller/feed/entries/atom?tags=jspwiki" />
    <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/" />
    <updated>2026-06-26T10:54:45+00:00</updated>
    <generator uri="http://roller.apache.org" version="6.1.5">Apache Roller</generator>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/socialsite_on_rollerwebloggerorg</id>
        <title type="html">Socialsite on rollerweblogger.org</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/socialsite_on_rollerwebloggerorg"/>
        <published>2009-03-25T23:59:59+00:00</published>
        <updated>2014-11-28T20:52:52+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsite" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;The value of &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; is that it allows you to add social networking features, including the ability to run &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; gadgets, to existing web sites and have those sites all using the same &amp;quot;social graph&amp;quot; of data about people and relationships. To demonstrate this, I&amp;#39;ve deployed SocialSite to my site, &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org&quot;&gt;http://rollerweblogger.org&lt;/a&gt;, and finally implemented those things I described in my August 2008 &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/social_roller&quot;&gt;Social Roller&lt;/a&gt; post.&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;My site includes a blog and a wiki, &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt;, so it&amp;#39;s a pretty good candidate for demonstrating how SocialSite. It&amp;#39;s not perfect because it&amp;#39;s got only a very small number of users, less than a dozen and because it&amp;#39;s private; you have to login to see the social features. It&amp;#39;ll have to do.
 
In this post, I&amp;#39;ll explain the steps you have to take to add SocialSite to a multi-application web site and I&amp;#39;ll illustrate the steps with examples and screenshots from my work on this site.&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;The value of &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; is that it allows you to add social networking features, including the ability to run &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; gadgets, to existing web sites and have those sites all using the same &amp;quot;social graph&amp;quot; of data about people and relationships. To demonstrate this, I&amp;#39;ve deployed SocialSite to my site, &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org&quot;&gt;http://rollerweblogger.org&lt;/a&gt;, and finally implemented those things I described in my August 2008 &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/social_roller&quot;&gt;Social Roller&lt;/a&gt; post (except for protected entries).&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;My site includes a blog and a wiki, &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt;, so it&amp;#39;s a pretty good candidate for demonstrating how SocialSite can work with multiple existing webapps. It&amp;#39;s not perfect because it&amp;#39;s got a very small number of users, less than a dozen, and because it&amp;#39;s private; you have to login to see the social features, but it&amp;#39;ll have to do.
 
In this post, I&amp;#39;ll explain the steps you have to take to add SocialSite to a multi-application web site and I&amp;#39;ll illustrate the steps with examples, links to source code and screenshots from my work on this site.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/threefish.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/threefish.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;NOTE: this post is based on the current code in the &lt;a class=&quot;external&quot; href=&quot;https://socialsite.dev.java.net/source/browse/socialsite&quot;&gt;Project SocialSite SVN trunk&lt;/a&gt;. The things described below may or may not work with the SocialSite M3 release.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step1SetupAnAuthenticationDelegatePageInYourSite&quot;&gt;Step 1 - Setup an Authentication Delegate page in your site#&lt;/h4&gt;
&lt;p&gt;SocialSite doesn&amp;#39;t do any user management, it leaves that to the sites that it enables. In my case, I&amp;#39;ve got Roller and JSPWiki setup to authenticate against the same database table of usernames and passwords, and I&amp;#39;ve got Tomcat&amp;#39;s simple SSO setup so that logins work across both webapps. I want SocialSite to depend on Roller to verify that users are logged. SocialSite&amp;#39;s Authentication Delegation mechanism makes this possible. 
&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s how SocialSite Authentication works. You add a delegate page, a dynamic page (JSP, PHP, etc.) to the webapp that is to do the authentication, configure SocialSite to trust that webapp and then at runtime, SocialSite will call that delegate page to verify user logins. In my case, I want Roller to do the authentication so I added a delegate page to Roller called &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_roller/copyover/socialsite_context.jsp&quot;&gt;socialsite_context.jsp&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;When a SocialSite gadget running inside of Roller needs to call back to the OpenSocial API provided by SocialSite it will pass Roller&amp;#39;s login cookie with the call, an assertion about who the logged-in user is and the URL of Roller&amp;#39;s authentication delegate page (socialsite_context.jsp). SocialSite will then call that delegate, pass the cookie and verify that assertion. SocialSite expects the delegate to return some JSON data like this:
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Example: JSON data from socialsite_context.jsp&lt;/i&gt;
&lt;/p&gt;
&lt;pre&gt;

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

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

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

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

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

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

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

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

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

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

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

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

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

  !!!SocialSite Group: Atomic

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

  Demonstrates the SocialSite Group gadgets, running in JSPWiki.

  !!Group Profile Gadget

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

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

  !!Installed Gadgets

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

&lt;/pre&gt;
&lt;p&gt;And here are links to the source code for the two plugins: &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_jspwiki/src/org/rollerweblogger/plugins/SocialSiteGroupContext.java&quot;&gt;SocialSiteContext.java&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_jspwiki/src/org/rollerweblogger/plugins/SocialSiteAddGadget.java&quot;&gt;SocialSiteAddGadget.java&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Conclusion&quot;&gt;Conclusion#&lt;/h4&gt;
&lt;p&gt;That should give you a pretty good idea of what you can do with SocialSite. Don&amp;#39;t be dissappointed if the gadgets don&amp;#39;t look like exactly what you want. The important thing is that &lt;b&gt;SocialSite gives you a centralized social graph service and the infrastructure needed to add social networking features to your sites via OpenSocial gadgets&lt;/b&gt;. If you don&amp;#39;t like the gadgets that come with SocialSite, you easily write your own using the standard OpenSocial APIs and the SocialSite extensions to those APIs.
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/apachecon_eu_2009</id>
        <title type="html">ApacheCon EU 2009!</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/apachecon_eu_2009"/>
        <published>2009-03-22T14:19:16+00:00</published>
        <updated>2014-11-28T20:55:34+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="apachecon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="oauth" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/snoopdave/481130847/&quot; title=&quot;View of art center (foreground) and Movenpick Hotel by snoopdave, on Flickr&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/202/481130847_87a45d2910_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; vpsace=&quot;10&quot; hspace=&quot;10&quot; alt=&quot;View of art center (foreground) and Movenpick Hotel&quot; align=&quot;right&quot;&gt;&lt;/a&gt;&lt;/p&gt;


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


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


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


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


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

</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/preparing_for_shindig_talk</id>
        <title type="html">Preparing for my Shindig talk next month</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/preparing_for_shindig_talk"/>
        <published>2009-02-06T12:58:34+00:00</published>
        <updated>2009-03-09T16:06:16+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/234x60-aceu2008-speaker.gif&amp;quot; 
alt=&amp;quot;ApacheCon speaker badge&amp;quot; align=&amp;quot;right&amp;quot; hspace=&amp;quot;8&amp;quot; vspace=&amp;quot;5&amp;quot; /&amp;gt;

&lt;p&gt;The day before the layoff axe fell at Sun, I blogged about my upcoming &lt;a href=&quot;http://rollerweblogger.org/roller/entry/talking_shindig_at_apacheconeu&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt; talk at &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/&quot;&gt;ApacheCon EU&lt;/a&gt; in March. Since then, I&amp;#39;ve been working almost non-stop on finding a new gig and have had little time to work on my presentation. That&amp;#39;s not good, because I have fairly ambitious plans for this talk. I&amp;#39;ll explain.&lt;/p&gt;

&lt;p&gt;I want to be able to show how to add social features including &lt;a href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; support to a blog server and a wiki server by using plain old &lt;a href=&quot;http://incubator.apache.org/shindig/&quot;&gt;Shindig&lt;/a&gt; and then &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt;. I&amp;#39;m targeting &lt;a href=&quot;http://rollerweblogger.org&quot;&gt;Roller&lt;/a&gt; and &lt;a href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt; because they&amp;#39;re the blog and wiki source code bases that I know best right now and they&amp;#39;re both Apache efforts, but the same techniques should work with other systems like Wordpress or Drupal. If I have time I might be able to demo those too (but I wouldn&amp;#39;t count on it).&lt;/p&gt;

&lt;p&gt;I&amp;#39;m not sure how far I can go with plain old Shindig because, like most blog and wiki servers, neither Roller nor JSPWiki has detailed profile data, social relationships or activities. I should be able to get Google Gadgets working via Shindig, but OpenSocial Gadgets will take a lot more thought and effort.&lt;/p&gt;

&lt;p&gt;I&amp;#39;m much more confident in the Project SocialSite approach. SocialSite provides for storage of detailed profile information, groups, activities and app data as well as the necessary UI. I&amp;#39;m confident enough that I&amp;#39;m going to deploy it on this site. So, stay tuned. I hope to have something to show by the end of next week.&lt;/p&gt;

&lt;p&gt;Oh, and by the way. Today is the last day to register for ApacheCon EU with the early-bird discount. So sign-up already!&lt;/p&gt;

&lt;div style=&quot;margin:0 0 1em 2em;&quot;&gt;
&lt;h4&gt;ApacheCon Europe 2009 &lt;a href=&quot;http://www.eu.apachecon.com&quot;&gt;(link)&lt;/a&gt;&lt;/h4&gt;
23-27 March 2009 | MÃ¶venpick Hotel, Amsterdam&lt;br&gt;
&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/articles/prices&quot;&gt;Pricing&lt;/a&gt; 
(register before Feb 6 for discount)
&lt;/div&gt;

</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/new_era_for_jspwiki</id>
        <title type="html">New era for JSPWiki</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/new_era_for_jspwiki"/>
        <published>2008-11-26T08:46:20+00:00</published>
        <updated>2009-01-06T07:03:43+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;img src=&quot;http://rollerweblogger.org/roller/resource/jspwiki_logo_s.png&quot; align=&quot;right&quot; alt=&quot;JSPWiki logo&quot;&gt;

&lt;blockquote&gt;
&lt;a href=&quot;http://www.ecyrd.com/ButtUgly/wiki/Main_blogentry_261108_2&quot;&gt;Janne Jalkanen&lt;/a&gt;: We are now beginning a whole new era with becoming an Apache project and JSPWiki v3, which will signal the first major overhaul of the entire software since v2.0 in 2002. We&amp;#39;ve got a bunch of good committers (with a new one added this weekend - welcome, Florian!) and a bunch of pretty exciting things we want to do.
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#39;m so happy to see &lt;a href=&quot;http://www.jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt; thrive &lt;a href=&quot;http://incubator.apache.org/jspwiki/&quot;&gt;at Apache&lt;/a&gt;, even in the incubator. You may remember that I wrote to Janne back in Summer 2007 and suggested the move, and I&amp;#39;ve &lt;a href=&quot;http://rollerweblogger.org/roller/entry/jspwiki_apache&quot;&gt;crowed about it&lt;/a&gt; before, but &lt;a href=&quot;http://www.linkedin.com/pub/0/2a0/71b&quot;&gt;Craig Russell&lt;/a&gt; is the one who stepped up to mentor the project and, from what I&amp;#39;ve seen, he&amp;#39;s doing a great job.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/jspwiki_vs_xwiki</id>
        <title type="html">JSPWiki vs. XWiki</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/jspwiki_vs_xwiki"/>
        <published>2008-06-25T08:49:48+00:00</published>
        <updated>2008-06-25T15:49:48+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsoftware" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wikis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="xwiki" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;via &amp;lt;a href=
&amp;quot;http://blogs.sun.com/jimgris/entry/jspwiki_and_xwiki_evaluations&amp;quot;&amp;gt;Jim Grisanzio: Chris Phelan has done evaluations of &amp;lt;a href=
&amp;quot;http://opensolaris.org/jive/thread.jspa?threadID=64619&amp;amp;tstart=0&amp;quot;&amp;gt;JSPWiki and XWiki for use on the OpenSolaris.org site. Based on his 32 requirements, XWiki came out on top.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;On balance, XWiki wins by virtue of having better support for
management, searching, page taxonomies, virtual servers, content export
and language translation/localization support.&lt;/p&gt;

&lt;p&gt;JSPWiki has slightly better support for identifying orphaned pages and
accesskey support (XWiki 1.4 will have support for access keys).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Confluence was not considered because requirement #0 is &amp;quot;the software must be free and open source,&amp;quot; which seems like a reasonable request when selecting software for an open source community site.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/blogapps_2_1_released</id>
        <title type="html">Blogapps 2.1 released</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/blogapps_2_1_released"/>
        <published>2007-10-02T21:49:40+00:00</published>
        <updated>2008-01-04T19:46:17+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="app" scheme="http://roller.apache.org/ns/tags/" />
        <category term="atom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogapps" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rss" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/re_jspwiki_apache</id>
        <title type="html">re: JSPWiki@Apache?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/re_jspwiki_apache"/>
        <published>2007-09-18T22:26:13+00:00</published>
        <updated>2007-09-19T05:26:13+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="foss" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wikis" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Congrats are also in order for the JSPWiki team. 

As &lt;a href=&quot;http://www.ecyrd.com/ButtUgly/wiki/Main_blogentry_180907_1&quot;&gt;Janne Jalkanen&lt;/a&gt; notes, &lt;a href=&quot;http://jspwiki.org&quot;&gt;JSPWiki&lt;/a&gt; was accepted into the Apache Incubator yesterday. 

I&amp;#39;m proud to be one of the four mentors who will guide the project through the incubation process. Janne and the JSPWiki team put together a great proposal and I think it was clear to everybody involved in the vote that these folks know what they&amp;#39;re doing. They&amp;#39;ll master the Apache way in no time.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/blogapps_2_0_released</id>
        <title type="html">Blogapps 2.0 released</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/blogapps_2_0_released"/>
        <published>2007-04-23T15:26:34+00:00</published>
        <updated>2007-04-23T22:26:34+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jspwiki" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wiki" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">I just uploaded the files for the &lt;a href=&quot;https://blogapps.dev.java.net/&quot;&gt;Blogapps&lt;/a&gt; 2.0 release. It includes the new Blogapps Examples, which have been reorganized, expanded and modified to use ROME Propono instead of the old Blogapps Blog Client. It also a new Blogapps Server, a super easy-to-install blog/wiki server based on Roller (4.0 code-base), JSPWiki 2.4 and Derby. You can find the &lt;a href=&quot;https://blogapps.dev.java.net/servlets/NewsItemView?newsItemID=4905&quot;&gt;full release annoucement&lt;/a&gt; here on the &lt;a href=&quot;https://blogapps.dev.java.net/&quot;&gt;Blogapps&lt;/a&gt; site.</content>
    </entry>
</feed>

