<?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=opensource" />
    <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/" />
    <updated>2026-04-07T09:28:33+00:00</updated>
    <generator uri="http://roller.apache.org" version="6.1.5">Apache Roller</generator>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/blogql-google-login</id>
        <title type="html">BlogQL, Apollo Server and Google Login</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/blogql-google-login"/>
        <published>2023-03-31T14:30:00+00:00</published>
        <updated>2023-03-31T14:30:00+00:00</updated> 
        <category term="Web Development" label="Web Development" />
        <category term="graphql" scheme="http://roller.apache.org/ns/tags/" />
        <category term="nodejs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="reactjs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="typescript" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;The BlogQL server uses Apollo Server to provide a GraphQL API. Initially, I was using Apollo Server standalone, but when I stared integrating Google Login I realized I needed a couple of REST APIs so I added Express&amp;nbsp;&lt;a href=&quot;https://expressjs.com/&quot; rev=&quot;en_rl_none&quot;&gt;https://expressjs.com&lt;/a&gt;&amp;nbsp;for that. On the frontend, I&amp;#39;m using &lt;a href=&quot;https://www.npmjs.com/package/@react-oauth/google&quot; target=&quot;_blank&quot;&gt;React Oauth2&lt;/a&gt;&amp;nbsp;which makes adding Google Login support very easy to implement.&amp;nbsp; This all works fine, but if I were to start over I might consider using a server-side framework like Next.js&amp;nbsp;&lt;a href=&quot;https://nextjs.org/&quot; rev=&quot;en_rl_none&quot;&gt;https://nextjs.org&lt;/a&gt;&amp;nbsp;instead of rolling my own Apollo Server and Express setup.&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This is part of a series of short posts about BlogQL:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/blogql&quot; rev=&quot;en_rl_none&quot;&gt;https://github.com/snoopdave/blogql&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/blogql-create-react-app</id>
        <title type="html">BlogQL and create-react-app</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/blogql-create-react-app"/>
        <published>2023-03-29T17:35:21+00:00</published>
        <updated>2023-03-29T17:35:21+00:00</updated> 
        <category term="Web Development" label="Web Development" />
        <category term="graphql" scheme="http://roller.apache.org/ns/tags/" />
        <category term="node" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="react" scheme="http://roller.apache.org/ns/tags/" />
        <category term="typescript" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;div slice=&quot;0 1 []&quot; clipboard=&quot;true&quot;&gt;When I first started with &lt;a href=&quot;https://github.com/snoopdave/blogql&quot; target=&quot;_blank&quot;&gt;BlogQL&lt;/a&gt;, I used&amp;nbsp;&lt;a href=&quot;https://create-react-app.dev/&quot; target=&quot;_blank&quot;&gt;create-react-app&lt;/a&gt;&amp;nbsp;(CRA) to generate the code. It worked well and allowed me to focus on learning React, but eventually I found it too constraining. I wanted to learn the underlying technologies of WebPack and Babel and CRA tucks those away. It took some time, but was able to remove CRA and replace it with my own WebPack and Babel setup. &lt;/div&gt;&lt;div slice=&quot;0 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;0 1 []&quot; clipboard=&quot;true&quot;&gt;If I had to start again, I might consider using&amp;nbsp;&lt;a href=&quot;https://vitejs.dev/&quot; target=&quot;_blank&quot;&gt;Vite&lt;/a&gt;, which is growing in popularity as an alternative to WebPack.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This is part of a series of short posts about BlogQL:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/blogql&quot; rev=&quot;en_rl_none&quot;&gt;https://github.com/snoopdave/blogql&lt;/a&gt;.&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/building-an-open-source-j2ee</id>
        <title type="html">Building an Open Source J2EE Weblogger</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/building-an-open-source-j2ee"/>
        <published>2022-04-17T16:42:50+00:00</published>
        <updated>2023-03-16T22:55:41+00:00</updated> 
        <category term="General" label="General" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">I wrote this article for O&amp;#39;Reilly&amp;#39;s OnJava.com over twenty years ago and it was published on April 17, 2002. Roller would not become Apache Roller until about five years later. Publishing this article changed my life and set my career on a new trajectory. I can&amp;#39;t find it online anymore so to celebrate this anniversay, i&amp;#39;m going to publish it here on Roller.

As a Java developer, you should be aware of the tremendous wealth of open source development software that is available for your use -- even if you have no desire to release any of your own software as open source. In this article, I will introduce you to some of the most useful open source Java development tools by showing you how I used these tools to develop a complete database-driven Web application called Roller.</summary>
        <content type="html">&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;I wrote this article for O&amp;#39;Reilly&amp;#39;s OnJava.com over twenty years ago and it was published on April 17, 2002. Roller would not become Apache Roller until about five years later. Publishing this article changed my life and set my career on a new trajectory. I can&amp;#39;t find it online anymore so to celebrate this anniversay, i&amp;#39;m going to publish it here on Roller.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;

 
&lt;/p&gt;&lt;p&gt;As a Java developer, you should be aware of the tremendous
wealth of open source development software that is available for your use
-- even if you have no desire to release any of your own software as open
source. In this article, I will introduce you to some of the most useful
open source Java development tools by showing you how I used these tools
to develop a complete database-driven Web application called Roller.&lt;/p&gt;
 
&lt;p&gt;Roller fits into the relatively new category of software called webloggers: applications that make it
easy for you to maintain a weblog, also known as a &lt;i&gt;blog&lt;/i&gt; -- a public diary where you link to recent reading on the Web and comment on items of interest to you.&lt;/p&gt;
 
&lt;p&gt;The Roller Web application
allows you to maintain a Web site that consists of a weblog, an organized collection of favorite Web bookmarks,
and a collection of favorite news feeds. You can define Web pages
to display your weblog, bookmarks, and news feeds. By editing the HTML templates
that define these pages, you have almost total control over the layout and
appearance of these pages. Most importantly, you can do all of this without
leaving the Roller Web application -- no programming is required.&lt;/p&gt;
 
&lt;p&gt;I used over a dozen open source development tools to develop
Roller, the most useful of which are listed in Table 1; however,
this article focuses on just four tools: the XDoclet code generator,
the Castor persistence framework, the Struts Servlet/JSP
framework, and the Velocity code-generation engine. In this article
I will describe the Roller application, its architecture, and specifically
how I used XDoclet, Castor, Struts, and Velocity in its development.&lt;/p&gt;
 
&lt;p&gt;&lt;i&gt;Table 1: Open source tools used in Roller Development&lt;/i&gt;&lt;/p&gt;
 
&lt;table border=&quot;1&quot; bordercolor=&quot;#cccccc&quot; cellpadding=&quot;4&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td valign=&quot;top&quot; bgcolor=&quot;#e6e6e6&quot;&gt;
&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; bgcolor=&quot;#e6e6e6&quot;&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; bgcolor=&quot;#e6e6e6&quot;&gt;
&lt;p&gt;&lt;strong&gt;Developer&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; bgcolor=&quot;#e6e6e6&quot;&gt;
&lt;p&gt;&lt;strong&gt;Type of License*&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Castor&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Persistence framework&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Exolab&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Similar to BSD license&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;HSQL&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Small but powerful Java database&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Thomas Meuller&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Similar to BSD license&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Jakarta Ant&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;XML-driven Java build system&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Jakarta Commons&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Collections, utilities&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Jakarta Struts&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Servlet/JSP framework&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Jakarta Tomcat&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Servlet/JSP Server&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Jakarta Velocity&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Template-driven code generator&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Netbeans&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Integrated Dev. Environment&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&amp;nbsp;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Sun Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Xerces&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;XML parser&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Apache Public License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;XDoclet&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Code generator&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Dreambean&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Similar to MIT License&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
 
&lt;p class=&quot;smalltext2&quot;&gt;* For more information on open source licenses see &lt;a href=&quot;http://www.opensource.org/&quot;&gt;&lt;i&gt;opensource.org&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;The Roller Application&lt;/h3&gt;

&lt;p&gt;Roller does not support
all of the features of commercial weblogging software (such as Userland&amp;#39;s
&lt;a href=&quot;http://onjava.com/onjava/2002/04/17/radio.userland.com&quot;&gt;Radio&lt;/a&gt; or Pyra Labs&amp;#39; &lt;a href=&quot;http://www.blogger.com/&quot;&gt;Blogger&lt;/a&gt; products), but Roller does support what I consider the essential weblogging features. With Roller you
can:&lt;/p&gt;
 
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Maintain a weblog, with user-defined categories.&lt;/b&gt; You can write new weblog entries and edit entries that have already been posted. You can define a set of weblog categories and can assign weblog entries to different categories. This allows you to maintain several different weblogs, each covering a different topic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Publish your weblog as an RSS news feed.&lt;/b&gt; Roller
makes your weblog available as a standard Rich Site Summary (RSS) news feed
so that readers can subscribe to and read your weblog without visiting your
Roller site.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Maintain a collection of favorite bookmarks, organized
by bookmark folders.&lt;/b&gt; You can define new bookmark folders and can add,
delete, and edit the bookmarks within these folders. You can then display
these bookmarks on one or more of your Roller site&amp;#39;s pages. This allows you to do &lt;i&gt;blogrolling&lt;/i&gt; -- displaying links to your favorite weblogs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Maintain a collection of favorite RSS news feeds.&lt;/b&gt; This allows you
to display headlines with links to news stories from your favorite news
sources or weblogs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Define a set of Web pages to display your weblog, bookmarks, and news feeds.&lt;/b&gt; Pages are defined using HTML templates with embedded macros for each type of data. For example, there is a &lt;code&gt;$Bookmarks&lt;/code&gt; macro that will draw a portion of your bookmark collection on a Web page and a &lt;code&gt;$WeblogCalendar&lt;/code&gt; macro that will draw a calendar view of your past weblog entries. These templates allow you almost complete control over the layout and look-and-feel of your Web pages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
 
&lt;p&gt;There are two types of Roller users: readers and editors.  Readers are simply anonymous visitors to the Roller Web site. Editors have user accounts and must log in by providing a user name and password.  Editors have the ability to edit their weblog entries, bookmarks, newsfeeds, and page templates.&lt;/p&gt;


 
&lt;p&gt;Figure 1 illustrates the Roller application by showing the Roller Web page navigation tree. The boxes represent Web pages and the arrows represent links between pages. The gray pages are the public pages that any visitor may access, the yellow pages are the login pages, and the red pages are the pages that only editors can access.&lt;/p&gt;
 
&lt;table width=&quot;645&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 1: Roller Web Pages&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;h3&gt;Roller Architecture&lt;/h3&gt;
 
&lt;p&gt;Internally, Roller is divided into a presentation
tier and a business tier, as recommended in Sun&amp;#39;s J2EE Pattern Catalog. The presentation tier is responsible for Roller&amp;#39;s user interface,
and the business tier is responsible for Roller&amp;#39;s application logic and the 
persistence of application data. Figure 2 provides an overview of
the Roller architecture.&lt;/p&gt;
 
&lt;table width=&quot;391&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 2: Roller Architecture&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The presentation tier is implemented using the Model-View-Controller (MVC) pattern and the Struts MVC framework.  The Model is an abstraction of the
application logic and application data and is represented by a set of interfaces 
defined in the &lt;code&gt;org.roller.model&lt;/code&gt; package.  The View is implemented using Servlets, JSP pages, and Velocity page templates.  The Controller is Struts, which is responsible for receiving incoming requests and dispatching them to the View.  The implementation of the presentation tier is further discussed in the sections on Struts and Velocity.&lt;/p&gt;
 
&lt;p&gt;The business tier implements the interfaces in the &lt;code&gt;org.roller.model&lt;/code&gt; package, using the Castor JDO persistence framework. The business tier exchanges data with the presentation tier in the form of simple, lightweight JavaBeans known as Value Objects. Value Objects are yet another of the Sun J2EE patterns. Each Value Object maps to a table in the Roller database.&lt;/p&gt;
 
&lt;p&gt;Figure 3 shows the Roller Value Objects, their properties, and the relationships between them. Each editor is represented by a User object.  Each User has a Website object, which represents the editor&amp;#39;s Web site and which has weblog entries, bookmark folders, newsfeeds, and page templates.  The Website object also specifies the default page template of the Web site and which page template is used for rendering a day of weblog entries.&lt;/p&gt;
 
&lt;table width=&quot;466&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 3: Roller Value Objects&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;


 
&lt;p&gt;The business tier uses Castor JDO to store and retrieve Value Objects to and from a JDBC-accessible database. Castor JDO is part of the larger Castor data-binding framework, which according to the Castor Web site is &amp;quot;the shortest path between Java objects, XML documents, SQL databases, and LDAP.&amp;quot;&lt;/p&gt;

&lt;p&gt;As a persistence framework, Castor JDO is similar to commercial object-relational mappers such as TopLink and Cocobase. Castor JDO fulfills a role similar to that of Sun&amp;#39;s Java Data Objects, but Castor JDO is not an implementation of Sun&amp;#39;s JDO specification (JSR-000012). Castor JDO allows you to define a mapping between Java classes and tables in a relational database. You can then issue queries using Castor&amp;#39;s own Object Query Language (OQL) and receive the results as collections of Java objects.&lt;/p&gt;
 



&lt;p&gt;Before you can use Castor JDO, you must provide a mapping file -- an XML file that maps each class to a database table and each class property to a field within a database table. Below is a portion of Roller&amp;#39;s mapping file.&lt;/p&gt;
 
&lt;pre&gt;&lt;code&gt;&amp;lt;mapping&amp;gt; 
&amp;lt;class name=org.roller.model.BookmarkData&amp;quot; identity=&amp;quot;id&amp;quot;
    access=&amp;quot;shared&amp;quot; key-generator=&amp;quot;UUID&amp;quot; auto-complete=&amp;quot;false&amp;quot;&amp;gt;
    &amp;lt;map-to table=&amp;quot;bookmark&amp;quot;/&amp;gt; 
    &amp;lt;cache-type type=&amp;quot;count-limited&amp;quot;/&amp;gt;
    &amp;lt;field name=&amp;quot;folderId&amp;quot; type=&amp;quot;java.lang.String&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;
    &amp;lt;field name=&amp;quot;id&amp;quot; type=&amp;quot;java.lang.String&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;
    &amp;lt;field name=&amp;quot;image&amp;quot; type=&amp;quot;java.lang.String&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;
    &amp;lt;field name=&amp;quot;name&amp;quot; type=&amp;quot;java.lang.String&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;
    &amp;lt;field name=&amp;quot;priority&amp;quot; type=&amp;quot;java.lang.Integer&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;
    &amp;lt;field name=&amp;quot;url&amp;quot; type=&amp;quot;java.lang.String&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;
&amp;lt;/class&amp;gt;
...
&amp;lt;/mapping&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once you provide Castor with a mapping file, retrieving a collection of objects from the database can be as simple
as the code snippet shown below:&lt;/p&gt;
 

&lt;pre&gt;&lt;code&gt;// Construct a new query and bind its parameters
String query = &amp;quot;SELECT p FROM BookmarkData p WHERE websiteId=$&amp;quot;;
OQLQuery oql = db.getOQLQuery( query );
oql.bind( websiteId );

// Retrieve results and print each one
QueryResults results = oql.execute();
while ( results.hasMore() ) {
   BookmarkData bookmark = (BookmarkData)results.next();
   System.out.println( bookmark.toString() );
}&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;XDoclet&lt;/h3&gt;
 
&lt;p&gt;XDoclet is a code generator that is implemented as a Javadoc extension, a &lt;i&gt;Doclet&lt;/i&gt;. To
use XDoclet, you place special Javadoc tags in your Java source code. Based
on these tags, XDoclet can generate additional Java code that supports your
classes, mapping files that map your classes to database tables, and deployment
descriptors that assist in deploying your classes.&lt;/p&gt;
 
&lt;p&gt;XDoclet started out
its life as EJBDoclet, a tool that allows you to implement an Enterprise JavaBean
by writing just one source code file. Now, the XDoclet product includes two
Doclets: EJBDoclet and WebDoclet. EJBDoclet is for generating EJB
classes, value objects, and database mappings. WebDoclet is for generating
all sorts of Servlet Web Application deployment descriptors, including &lt;code&gt;web.xml&lt;/code&gt; files, Tag Library Descriptors, and
Struts configuration files.&lt;/p&gt;
 
&lt;p&gt;The Roller build
process uses both EJBDoclet and WebDoclet, as shown in Figure 4. In
Step 1, EJBDoclet is used to process a set of abstract classes of
type &lt;code&gt;javax.ejb.EntityBean&lt;/code&gt; -- one
for each one of the Roller Value Objects. From these classes, EJBDoclet generates
a Castor mapping file, the Roller Value Object classes, and a set of corresponding
Struts form classes. In Step 2, WebDoclet is used to process a
source directory that contains JSP tags, Servlet classes, and Struts classes.
The output of the WebDoclet is the complete set of Roller Web Application
deployment descriptors.&lt;/p&gt;
 
&lt;table width=&quot;476&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 4: XDoclet and the Roller Build Process&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Below is a simple example bean that shows the EJBDoclet tags necessary to create a Value Object. The &lt;code&gt;@castor&lt;/code&gt; tags provide the information needed to generate the Castor mapping entries for the bean. The &lt;code&gt;@ejb&lt;/code&gt; tags provide the information needed to generate the Value Object and a complete EJB entity bean (which Roller does not use).&lt;/p&gt;
 
&lt;pre&gt;&lt;code&gt;/**
 * Represents a single URL in a user&amp;#39;s favorite web-bookmarks collection.
 * @ejb:bean name=&amp;quot;Bookmark&amp;quot; type=&amp;quot;CMP&amp;quot; jndi-name=&amp;quot;roller/Bookmark&amp;quot;
 * @ejb:data-object extends=&amp;quot;org.roller.model.ValueObject&amp;quot;
 * @struts:form 
 * @castor:class name=&amp;quot;bookmark&amp;quot; table=&amp;quot;bookmark&amp;quot; xml=&amp;quot;bookmark&amp;quot;
 *               id=&amp;quot;id&amp;quot; key-generator=&amp;quot;UUID&amp;quot;&lt;br&gt; */

public abstract class BookmarkBean implements EntityBean 
{

  /** @ejb:interface-method 
   *  @ejb:transaction type=&amp;quot;Required&amp;quot; */
   public abstract void setData(org.roller.model.BookmarkData dataHolder);

  /** @ejb:interface-method */
   public abstract org.roller.model.BookmarkData getData();

  /** @castor:field set-method=&amp;quot;setId&amp;quot;
   *  @castor:field-xml node=&amp;quot;attribute&amp;quot;
   *  @castor:field-sql name=&amp;quot;id&amp;quot; sql-dirty=&amp;quot;check&amp;quot; dirty=&amp;quot;true&amp;quot; 
   *  @ejb:interface-method 
   *  @ejb:pk-field
   *  @ejb:persistent-field */
    public abstract String getId();

  /** @ejb:pk-field
   *  @ejb:persistent-field */
    public abstract void setId( String value );
    ...
}&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Struts&lt;/h3&gt;
 
&lt;p&gt;The Roller presentation tier is implemented using Struts and Velocity. Struts is a Servlet application framework that is based on the MVC pattern. In a typical Struts application, the Model is a set of JavaBeans that hold the data to be presented in the View; the View is a set of JSP pages that render 
HTML; and the Controller is a Servlet and set of action classes that are
registered to handle incoming requests.&lt;/p&gt;
 
&lt;p&gt;Roller&amp;#39;s Edit-Bookmark form provides a nice, simple example of how Struts works. There are four parts to the Edit-Bookmark form implementation: the &lt;code&gt;edit-bookmark.jsp&lt;/code&gt; page, the &lt;code&gt;BookmarkForm&lt;/code&gt; JavaBean class, the &lt;code&gt;BookmarkFormAction&lt;/code&gt; action handler, and some entries in Roller&amp;#39;s &lt;code&gt;struts-config.xml&lt;/code&gt; file that tie the first three items together. So, let&amp;#39;s introduce the players:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;edit-bookmark.jsp&lt;/code&gt; page looks just
like an HTML page, except that it uses the Struts HTML form tags instead
of standard HTML form tags. The Struts HTML form tags know how to find
the &lt;code&gt;BookmarkForm&lt;/code&gt; JavaBean and how to use its properties to populate the form with data.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The &lt;code&gt;BookmarkForm&lt;/code&gt; class is a dumb JavaBean that just holds data -- it has the exact same properties as the Bookmark Value Object. As you may recall, the &lt;code&gt;BookmarkForm&lt;/code&gt; class and all of its sibling form classes are generated by XDoclet. In Struts, form classes must extend &lt;code&gt;org.apache.struts.action.ActionForm&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The &lt;code&gt;BookmarkFormAction&lt;/code&gt; is essentially an action handler. It is registered (in the &lt;code&gt;struts-config.xml&lt;/code&gt; file) to handle incoming requests that include the pattern &lt;code&gt;/bookmark.do&lt;/code&gt;. In Struts, action classes must extend &lt;code&gt;org.apache.struts.action.Action&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
 
&lt;p&gt;Figure 5 shows the sequence of events that occurs when a request for the Edit-Bookmark form comes into the system. Roller needs to respond to this request by creating an HTML form populated with data for the bookmark that is to be edited.&lt;/p&gt;

&lt;table width=&quot;634&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 5: Incoming request for Edit-Bookmark page&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Here are the steps in processing an incoming request for the Edit-Bookmark page:&lt;/p&gt;
 
&lt;ol&gt;&lt;li&gt;&lt;p&gt;The Struts Controller Servlet receives a request for the Edit-Bookmark action. The Controller uses the URI of the request to look up the  &lt;code&gt;FormAction&lt;/code&gt; that should handle the request.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The Struts Controller Servlet dispatches the request to the &lt;code&gt;BookmarkFormAction.edit()&lt;/code&gt; method. Knowing that the user has requested the Edit-Bookmark page, the &lt;code&gt;BookmarkFormAction&lt;/code&gt; looks for a request parameter that specifies the bookmark that is to be edited.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The &lt;code&gt;BookmarkFormAction&lt;/code&gt; calls the &lt;code&gt;BookmarkManager&lt;/code&gt; to retrieve the bookmark information that is to be edited.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The &lt;code&gt;BookmarkFormAction&lt;/code&gt; creates the &lt;code&gt;BookmarkForm&lt;/code&gt;
bean and adds that bean to the request&amp;#39;s attributes so that it can be accessed
by the JSP page.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The &lt;code&gt;BookmarkFormAction&lt;/code&gt; finally forwards the request to &lt;code&gt;edit-bookmark.jsp&lt;/code&gt; so that the page may be rendered.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The Struts form tags on the &lt;code&gt;edit-bookmark.jsp&lt;/code&gt; page reads data from the &lt;code&gt;BookmarkForm&lt;/code&gt; bean and uses that data to populate the Edit-Bookmark form. After that, the HTML page is returned to the user&amp;#39;s browser for display.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Figure 6 shows
the sequence of events that occurs when the request that contains posted
data from the Edit-Bookmark page comes into the system. Roller needs to take
the incoming form data and use it to update the bookmark that is stored in
the data store managed by the business tier.&lt;/p&gt;

&lt;table width=&quot;608&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 6: Request with data posted from Edit-Bookmark page&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Here are the steps in processing a request with data from a posted Edit-Bookmark page:&lt;/p&gt;
 
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Struts Controller
Servlet receives a request for the &lt;code&gt;Update-Bookmark&lt;/code&gt; action. The Struts Controller
determines which action should handle the request and which form bean should
receive the data from the incoming form post.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Struts Controller Servlet populates the &lt;code&gt;BookmarkForm&lt;/code&gt; bean with data from the incoming request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Controller calls the &lt;code&gt;BookmarkFormAction&lt;/code&gt; and passes
in the form bean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;BookmarkFormAction&lt;/code&gt; retrieves the data
from the &lt;code&gt;BookmarkForm&lt;/code&gt; bean.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The action calls upon the &lt;code&gt;BookmarkManager&lt;/code&gt; to store
the updated bookmark information.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
 
&lt;h3&gt;Velocity&lt;/h3&gt;
 
&lt;p&gt;While JSP pages work
well for the Roller editor pages, which rarely change, JSP does not work
so well for the user pages. Weblog authors are not programmers, and they
cannot be required to learn JSP and Java programming just to customize
their weblog and associated Web pages. Furthermore, allowing Roller users
to add new JSP pages, and thus new Java code, to the Roller application at
runtime is a security risk.&lt;/p&gt;
 
&lt;table width=&quot;622&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;p class=&quot;tiny&quot;&gt;&lt;br&gt;
Figure 7: Velocity-generated public page&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The best solution to the user pages problem is Velocity. Velocity is a general purpose template-based code-generation engine. That may sound complicated, but from the user&amp;#39;s point of view, it is simple and easy-to-use. For example, the weblog page shown in Figure 7 is generated by a simple Velocity template. This template is shown below:&lt;/p&gt;
 
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;
&amp;lt;html&amp;gt;
;&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;$macros.showWebsiteTitle()&amp;lt;/title&amp;gt;     
&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;$macros.includePage(&amp;quot;_css&amp;quot;)&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
;&amp;lt;body&amp;gt; 
&amp;lt;table cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;15&amp;quot; &lt;br&gt;   border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;95%&amp;quot;&amp;gt;   
   &amp;lt;tr&amp;gt;    
   &amp;lt;td width=&amp;quot;20%&amp;quot; valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot;&amp;gt;      
      $macros.showNavBar(true)&amp;lt;br&amp;gt;       
      $macros.showEditorNavBar(true)&amp;lt;br&amp;gt;
      $macros.showBookmarks(&amp;quot;Blogrolling&amp;quot;,true)&amp;lt;br&amp;gt;       
      $macros.showBookmarks(&amp;quot;News&amp;quot;,true)    
   &amp;lt;/td&amp;gt;    
   &amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot;&amp;gt;                
      &amp;lt;h2&amp;gt;$macros.showWebsiteTitle()&amp;lt;/h2&amp;gt;                       
      $macros.showWeblogCategoryChooser()&amp;lt;br&amp;gt;       
      $macros.showWeblogEntries()    
   &amp;lt;/td&amp;gt;    
   &amp;lt;td valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#ffffff&amp;quot; width=&amp;quot;20%&amp;quot;&amp;gt;         
      $macros.showWeblogCalendar()&amp;lt;br&amp;gt;       
      $macros.showRSSBadge()    
   &amp;lt;/td&amp;gt; 
   &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;                  
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The items that start with &lt;code&gt;$&lt;/code&gt; are Velocity expressions, most of which result in calls to JSP tags that have been specially designed to work with Velocity. For example, the &lt;code&gt;$macros.showWeblogCategoryChooser()&lt;/code&gt; expression results in the generation of the navigation bar at the top of the page -- the one that reads &amp;quot;All | Technology | News | Entertainment.&amp;quot; The navigation bar is implemented in a custom JSP tag class named &lt;code&gt;org.roller.presentation.tags.NavigationTag&lt;/code&gt;, which is also used in the JSP-based Roller editor pages.&lt;/p&gt;
 


&lt;p&gt;Each user can define
any number of pages, and since these pages are simply HTML pages, they can
be customized using Front Page or any other HTML editor. The user just has
to put the Velocity expressions in the right place. Below is a list of some
of the Velocity expressions that are available for use in user-defined Roller
Web pages.&lt;/p&gt;
 
&lt;table border=&quot;1&quot; bordercolor=&quot;#cccccc&quot; cellpadding=&quot;4&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot; bgcolor=&quot;#e6e6e6&quot;&gt;
&lt;p&gt;&lt;b&gt;Macro&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; bgcolor=&quot;#e6e6e6&quot;&gt;
&lt;p&gt;&lt;b&gt;Emits HTML for:&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;&lt;b&gt;$macros.showNavBar()&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Navigation bar, with a link to each one of the user&amp;#39;s user-defined pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;&lt;b&gt;$macros.showEditorNavBar()&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Editor navigation
bar, with links to the edit-bookmarks,edit-newsfeeds, edit-weblog,
and edit-website pages &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;&lt;b&gt;$macros.showBookmarks()&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Entire bookmark
collection in a multi-column table &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;&lt;b&gt;$macros.showNewsfeeds()&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;Current headlines
and story descriptions for the user&amp;#39;s RSS newsfeeds 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;&lt;b&gt;$macros.showWeblogEntries()&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;The most recent weblog entries &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;&lt;b&gt;$macros.showWeblogCalendar()&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;p&gt;A weblog calendar,
with a link for each day on which there is a weblog entry 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
 
&lt;h3&gt;Conclusion&lt;/h3&gt;
 
&lt;p&gt;In this article,
I have described four open source Java development tools and how these tools
can be used together to develop a fairly sophisticated Web application. I
hope I have given you a good idea of the power and flexibility of these tools.&lt;/p&gt;
 
&lt;p&gt;Although I have not
mentioned any problems with the open source tools that I have discussed,
I did run into a number of bugs.  I was able to find work-arounds and fixes
for these bugs, but it was not always easy.  I had to spend some time browsing
mailing-lists, searching with Google, and, in one case, downloading the latest
source for a product and building it myself. Formal technical support is
not available for many open source tools, so keep in mind that you may have
to solve your own problems.&lt;/p&gt;
 
&lt;p&gt;In closing, I would like to thank the many developers and other contributors that made possible the open source Java development tools that I used in the development of Roller.  The tools are great and they just keep getting better.&lt;/p&gt;
 
&lt;h3&gt;Resources&lt;/h3&gt;
 
&lt;h4&gt;Weblogging&lt;/h4&gt;
 
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://newhome.weblogs.com/historyOfWeblogs&quot;&gt;The History of Weblogs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://radio.userland.com/&quot;&gt;Userland Radio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/&quot;&gt;Pyra Labs Blogger&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Castor&lt;/h4&gt;
 
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://castor.exolab.org/castor&quot;&gt;The Castor Project Homepage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Struts&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://jakarta.apache.org/struts&quot;&gt; The Jakarta Struts Project&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.javaworld.com/javaworld/jw-12-2000/jw-1201-struts.html&quot;&gt;&amp;quot;Strut your stuff with JSP tags&amp;quot;&lt;/a&gt; (JavaWorld article)&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Velocity&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://jakarta.apache.org/velocity&quot;&gt; The Jakarta Velocity Project Homepage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;XDoclet&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://xdoclet.sourceforge.net/&quot;&gt;The XDoclet Project Homepage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://onjava.com/pub/a/onjava/2002/01/30/xdoclet.html&quot;&gt; &amp;quot;Using XDoclet: Developing EJBs with Just the Bean Class&amp;quot;&lt;/a&gt; (onJava.com article)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://onjava.com/pub/a/onjava/2002/01/30/xdoclet.html&quot;&gt; &amp;quot;Deciding Whether EJB is Appropriate&amp;quot;&lt;/a&gt; (OnJava.com article)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Originally published here:&amp;nbsp;&lt;a href=&quot;http://onjava.com/onjava/2002/04/17/wblogosj2ee.html&quot; target=&quot;_blank&quot;&gt;http://onjava.com/onjava/2002/04/17/wblogosj2ee.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;
&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/shiro-not-spring</id>
        <title type="html">Apache Shiro for authentication in Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/shiro-not-spring"/>
        <published>2015-02-09T07:27:50+00:00</published>
        <updated>2018-02-16T12:43:20+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shiro" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/80d2d56d-a8cd-43f2-825d-d0474b67139b&quot; alt=&quot;Shiro logo&quot; align=&quot;right&quot;&gt;


&lt;p&gt;
This is the third of my 2014 side projects that I&amp;#39;m sharing and one that involves the 
&lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; blog server and the 
&lt;a href=&quot;http://shiro.apache.org&quot;&gt;Apache Shiro&lt;/a&gt; security framework. 

You might find this interesting if you&amp;#39;re considering using Shiro for authentication and authorization, or if your interested in how security works in Apache Roller.
&lt;/p&gt;


&lt;p&gt;
Inspired by my work with &lt;a href=&quot;http://emberjs.com&quot;&gt;Ember.js&lt;/a&gt; in Fall 2014, I started thinking about what it would take to build an Ember.js-based editor/admin interface for Apache Roller.

To do that, I&amp;#39;d need to add a comprehensive REST API to Roller, and I&amp;#39;d need a way to implement secrity for the new API.

I&amp;#39;ve enjoyed working with &lt;a href=&quot;http://shiro.apache.org&quot;&gt;Apache Shiro&lt;/a&gt;, so I decided that a good first step would be to figure out how to use Apache Shiro in Roller for Roller&amp;#39;s existing web interface.
&lt;/p&gt;

&lt;p&gt;
Working over the winter break I was able to replace Roller&amp;#39;s existing Spring security implementation with Shiro and remove all Spring dependencies from my &lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;Rollarcus&lt;/a&gt; fork of Roller. 

Below I&amp;#39;ll describe what I had to do get Shiro working for Form-base Authentication in Roller.
&lt;/p&gt;

&lt;h3&gt;Creating a Shiro Authorizing Realm&lt;/h3&gt;

&lt;p&gt;The first step in hooking Shiro into Roller is to implement a Shiro interface called &lt;code&gt;ShiroAuthorizingRealm&lt;/code&gt;. 

This interface enables Shiro to do username and password checks for users when they attempt to login, and to get the user&amp;#39;s roles. 
&lt;/p&gt;

&lt;p&gt;
Below is the first part of the class, which includes the &lt;code&gt;doGetAuthenticationInfo()&lt;/code&gt; method, which returns the &lt;code&gt;AuthenticationInfo&lt;/code&gt; for a user specified by an &lt;code&gt;AuthenticationToken&lt;/code&gt; that includes the user&amp;#39;s username. 

In other words, this method allows Shiro to look-up a user by providing a username and get back the user&amp;#39;s (hashed) password, so that Shiro can validate a user&amp;#39;s username and password.
&lt;/p&gt;

&lt;b&gt;ShiroAuthorizingRealm.java (&lt;a href=&quot;https://github.com/snoopdave/rollarcus/blob/shiro_not_spring/app/src/main/java/org/apache/roller/weblogger/auth/ShiroAuthorizingRealm.java&quot;&gt;link&lt;/a&gt;)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;
public class ShiroAuthorizingRealm extends AuthorizingRealm {

    public ShiroAuthorizingRealm(){
        setName(&amp;quot;ShiroAuthorizingRealm&amp;quot;);
        setCredentialsMatcher(
            new HashedCredentialsMatcher(Sha1Hash.ALGORITHM_NAME));
    }

    @Override
    public AuthenticationInfo doGetAuthenticationInfo(
        AuthenticationToken authToken) throws AuthenticationException {

        UsernamePasswordToken token = (UsernamePasswordToken) authToken;

        User user;
        try {
            user = loadUserByUsername( token.getUsername() );

        } catch (WebloggerException ex) {
            throw new AuthenticationException(
                &amp;quot;Error looking up user &amp;quot; + token.getUsername(), ex);
        }

        if (user != null) {
            return new SimpleAuthenticationInfo( 
                user.getUserName(), user.getPassword(), getName());

        } else {
            throw new AuthenticationException(
                &amp;quot;Username not found: &amp;quot; + token.getUsername());
        }
    }

&lt;/pre&gt;

&lt;p&gt;In the code above you can see how we pull the username out of the &lt;code&gt;authToken&lt;/code&gt; provided by Shiro and we call a method, &lt;code&gt;loadUserByUserName()&lt;/code&gt;, which uses Roller&amp;#39;s Java API to load a Roller user object specified by name.&lt;/p&gt;

&lt;p&gt;The next method of interest is &lt;code&gt;doGetAuthorizationInfo()&lt;/code&gt;, which allows Shiro to look-up a user&amp;#39;s Role. This allows Shiro to detmerine if the user is a Roller admin user or a blog editor.&lt;/p&gt;

&lt;b&gt;ShiroAuthorizingRealm.java (continued)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;

    public AuthorizationInfo doGetAuthorizationInfo(
        PrincipalCollection principals) {

        String userName = (String)
            (principals.fromRealm(getName()).iterator().next());

        User user;
        try {
            user = loadUserByUsername( userName );
        } catch (WebloggerException ex) {
            throw new RuntimeException(&amp;quot;Error looking up user &amp;quot; + userName, ex);
        }

        Weblogger roller = WebloggerFactory.getWeblogger();
        UserManager umgr = roller.getUserManager();

        if (user != null) {
            List roles;
            try {
                roles = umgr.getRoles(user);
            } catch (WebloggerException ex) {
                throw new RuntimeException(
                    &amp;quot;Error looking up roles for user &amp;quot; + userName, ex);
            }
            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            for ( String role : roles ) {
                info.addRole( role );
            }
            log.debug(&amp;quot;Returning &amp;quot; + roles.size() 
                + &amp;quot; roles for user &amp;quot; + userName + &amp;quot; roles= &amp;quot; + roles);
            return info;

        } else {
            throw new RuntimeException(&amp;quot;Username not found: &amp;quot; + userName);
        }
    }
&lt;/pre&gt;

&lt;p&gt;In the code above you can see that we use the &lt;code&gt;loadUserByUsername()&lt;/code&gt; too look-up a user by username, then we use Roller&amp;#39;s Java API to get the user&amp;#39;s roles. We add those roles to an instance of the Shiro class &lt;code&gt;SimpleAuthorizationInfo&lt;/code&gt; and return it to Shir.&lt;/p&gt;

&lt;h3&gt;Creating a Shiro Authorizing Filter&lt;/h3&gt;

&lt;p&gt;Now that we&amp;#39;ve implementated a realm, we&amp;#39;ve provided Shiro with everything needed to authenticate Roller users and get access to Roller user role information. Next, we need to configure Shiro to enforce roles for the URL apths found in Roller. Shiro includes a &lt;code&gt;RolesAuthorizationFilter&lt;/code&gt;, which is close to what we need but not exactly right for Roller. I had to extend Shiro&amp;#39;s roles filter so that we can allow a user who has any (not all) of the required roles for a resource.&lt;/p&gt;

&lt;b&gt;RollerRolesAuthorizationFilter.java (&lt;a href=&quot;https://github.com/snoopdave/rollarcus/blob/shiro_not_spring/app/src/main/java/org/apache/roller/weblogger/rest/auth/RollerRolesAuthorizationFilter.java&quot;&gt;link&lt;/a&gt;)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;
public class RollerRolesAuthorizationFilter 
    extends RolesAuthorizationFilter {

    @Override
    public boolean isAccessAllowed( 
        ServletRequest request, 
        ServletResponse response, 
        Object mappedValue) throws IOException {

        final Subject subject = getSubject(request, response);
        final String[] roles = (String[]) mappedValue;

        if (roles == null || roles.length == 0) {
            return true;
        }

        // user is authorized if they have ANY of the roles
        for (String role : roles) {
            if (subject.hasRole(role)) {
                return true;
            }
        }
        return false;
    }
}
&lt;/pre&gt;


&lt;h3&gt;Configuring Shiro for Roller&lt;/h3&gt;

&lt;p&gt;Now that we&amp;#39;ve seen the Java code needed to hook Shiro into Roller, lets look at how we configure Shiro to use that code. We do that using the Shiro configuration file: shiro.ini, as shown below.&lt;/p&gt;

&lt;b&gt;shiro.ini (&lt;a href=&quot;https://github.com/snoopdave/rollarcus/blob/shiro_not_spring/app/src/main/resources/shiro.ini&quot;&gt;link&lt;/a&gt;)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;
[main]

defaultRealm = org.apache.roller.weblogger.auth.ShiroAuthorizingRealm
securityManager.realms = $defaultRealm

cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
securityManager.cacheManager = $cacheManager

authc = org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc.loginUrl = /roller-ui/login.rol
authc.successUrl = /roller-ui/menu.rol

rollerroles = org.apache.roller.weblogger.rest.auth.RollerRolesAuthorizationFilter

[urls]

/roller-ui/login.rol          = authc
/roller-ui/login-redirect.rol = authc, rollerroles[admin,editor]
/roller-ui/profile**          = authc, rollerroles[admin,editor]
/roller-ui/createWeblog**     = authc, rollerroles[admin,editor]
/roller-ui/menu**             = authc, rollerroles[admin,editor]
/roller-ui/authoring/**       = authc, rollerroles[admin,editor]
/roller-ui/admin/**           = authc, rollerroles[admin]
/rewrite-status/**            = authc, rollerroles[admin]
/roller-services/rest/**      = authcBasic, rollerroles[admin,editor]
&lt;/pre&gt;


&lt;p&gt;
In the configuration file above, you see how we hook in the new &lt;code&gt;ShiroAuthorizingRealm&lt;/code&gt; on line 3.  

The next couple lines are boiler-plate code to hook in Shiro&amp;#39;s caching mechanism and then, on line 9, we configure an authentication method called &lt;code&gt;authc&lt;/code&gt;, which is configured to use Shiro&amp;#39;s Form Authentication feature. 

And, on line 13, we hook in our new &lt;code&gt;RollerRolesAuthorizationFilter&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Next, we tell Shiro that the login page for Roller is &lt;code&gt;/roller-ui/login.rol&lt;/code&gt; and which page to direct a user to on a successful login, &lt;code&gt;/roller-ui/menu.rol&lt;/code&gt;, if the user did not specify which page they wanted to access.

And finally, on lines 17-25, you see the list of Roller URL patterns that need protection, which authentication method to use (authc or authcBasic) and the authorization filter and roles required for access to the URL pattern.
&lt;/p&gt;


&lt;h3&gt;Wrapping up...&lt;/h3&gt;

&lt;p&gt;
That&amp;#39;s all there is to the story of Roller and Shiro so far. 

I was able to get Roller&amp;#39;s form-based authentication working with Shiro, but I did not try to test with OpenID or LDAP, so I assume more work will be necessary to get them working. 

I did the work in my experimental 
&lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;Rollarcus&lt;/a&gt; fork of Roller. 

You can get the code from the 
&lt;a href=&quot;https://github.com/snoopdave/rollarcus/tree/shiro_not_spring&quot;&gt;shiro_not_spring&lt;/a&gt; branch. 

Pull requests are quite welcome as are suggestions for improvement. 

Please let me know if you see anything wrong in the above code.
&lt;/p&gt;

&lt;p&gt;
This work may not find its way into Roller proper, but it plays a part in my the next side-project that I will share: A REST API for Roller with JAX-RS. 
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/talking_usergrid_at_apachecon2014</id>
        <title type="html">Talking Usergrid at ApacheCon 2014</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/talking_usergrid_at_apachecon2014"/>
        <published>2014-03-16T16:10:16+00:00</published>
        <updated>2018-02-16T12:47:05+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="apachecon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="baas" scheme="http://roller.apache.org/ns/tags/" />
        <category term="cassandra" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="usergrid" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://www.apachecon.com/&quot;&gt;
&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/59d5e8f1-074f-4fd2-84a3-0b0a108c089c&quot; align=&quot;right&quot; alt=&quot;ApacheCon 2014&quot;&gt;
&lt;/a&gt;

&lt;p&gt;I&amp;#39;ve been working at &lt;a href=&quot;http://apigee.com&quot;&gt;Apigee&lt;/a&gt; since September 2013 and one of the things I love most about my new job is the fact that I&amp;#39;m actively contributing to open source again. &lt;/p&gt;

&lt;p&gt;I&amp;#39;m working on &lt;a href=&quot;http://usergrid.incubator.apache.org/&quot;&gt;Apache Usergrid&lt;/a&gt; (incubating), an open source &lt;b&gt;Backend-As-A-Service&lt;/b&gt; (BaaS) that&amp;#39;s built on the Apache Cassandra database system. Apigee uses Usergrid as part of &lt;a href=&quot;http://apigee.com/about/content/apigee-edge&quot;&gt;Apigee Edge&lt;/a&gt; (see the &lt;a href=&quot;http://apigee.com/docs/content/build-apps-home&quot;&gt;Build Apps&lt;/a&gt; part of the docs).&lt;/p&gt;

&lt;p&gt;Apigee contributed code for Usergrid to the &lt;a href=&quot;http://apache.org&quot;&gt;Apache Software Foundation&lt;/a&gt; back in October 2013 and Usergrid is now part of the Apache Incubator. The project is working towards graduating from the Incubator. That means learning the Apache way, following the processes to get a release out and most importantly, building a diverse community of contributors to build and maintain Usergrid.&lt;/p&gt;

&lt;p&gt;One on the most important parts of building an open source community is making it easy for people to contribute and and that&amp;#39;s why I submitted a talk to the &lt;a href=&quot;http://www.apachecon.com/&quot;&gt;ApacheCon US 2014&lt;/a&gt; conference (April 7-9 in Denver, CO) titled &lt;a href=&quot;http://events.linuxfoundation.org/events/apachecon-north-america/program/schedule&quot;&gt;How to Contribute to Usergrid&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The talk is intended to be a briefing for contributors, one that will lead you through building and running Usergrid locally, understanding the code-base and test infrastructure and how to get your code accepted into the Usergrid project.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the outline I have so far:&lt;/p&gt;

&lt;h3&gt;How to Contribute to Apache Usergrid&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Motivation
    &lt;ul&gt;&lt;li&gt;Why would anybody want to contribute to Usergrid?&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First steps
    &lt;ul&gt;&lt;li&gt;The basics&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Getting signed up&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Contributing to the Stack
    &lt;ul&gt;&lt;li&gt;Understanding the architecture &amp; code base&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Building the code. Making and testing changes&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Running Usergrid locally via launcher &amp; via Tomcat&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Contributing to the Portal
    &lt;ul&gt;&lt;li&gt;Understanding the architecture &amp; code base&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Building the code. Making and testing changes&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Running the portal locally via node.js&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Contributing to the SDKs
    &lt;ul&gt;&lt;li&gt;Understanding the architecture &amp; code base&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Building the code. Making and testing changes&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Contributor workflow: how to get your code into Usergrid
    &lt;ul&gt;&lt;li&gt;For quickie drive-by code contributions&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;For more substantial code contributions&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;For documentation &amp;  website changes&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Contributing Docs and Website changes
    &lt;ul&gt;&lt;li&gt;Website, wiki and GitHub pages&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;How to build the website and docs&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Roadmap
    &lt;ul&gt;&lt;li&gt;First release&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;New Core Persistence system&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;The two-dot-o branch&lt;/li&gt;&lt;/ul&gt;
    &lt;ul&gt;&lt;li&gt;Other ideas&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&amp;#39;m in the process of writing this talk now so suggestions and other feedback are most welcome.&lt;/p&gt;


</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/roller_and_gsoc_2011</id>
        <title type="html">GSOC 2011: Mobile-enabled themes for Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/roller_and_gsoc_2011"/>
        <published>2011-09-03T16:37:42+00:00</published>
        <updated>2011-11-26T22:22:08+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="google" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gsoc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mobile" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
I&amp;#39;m going to break blog silence now to tell you about Apache Roller and &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Google Summer of Code&lt;/a&gt; 2011, which just wrapped up about a week ago. 
&lt;/p&gt;

&lt;a href=&quot;http://code.google.com/soc/&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/2e6823f1-1b5e-43e2-9396-3d4318699968&quot; alt=&quot;GSOC logo&quot; vspace=&quot;5&quot; hspace=&quot;5&quot;&gt;&lt;/a&gt;

&lt;p&gt;
This year we were very fortunate to get a another highly motivated and smart student, Shelan Perera, and an good proposal as well: Mobile-enabled Templates. Over the summer Shelan designed and implemented a new feature for the Roller blog server, one that enables theme authors to provide an alternative &amp;quot;mobile&amp;quot; template for each page template in a Roller blog theme. You can see a screenshot of the new Edit Template page in Shelan&amp;#39;s blog &lt;a href=&quot;http://rollermobile.blogspot.com/2011/08/how-to-change-template-codes-in-roller.html&quot;&gt;How to change template codes in Roller&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Now, when a page request comes into Roller, Shelan&amp;#39;s code determines if it&amp;#39;s from a mobile device and, if it is, switches to a mobile template, if one is available. There&amp;#39;s also an easy way for template authors to create a button to allow users to switch to the &amp;quot;Standard&amp;quot; site instead of the mobile version. The screenshot on the right, of Roller with a mobile theme comes from Shelan&amp;#39;s most &lt;a href=&quot;http://rollermobile.blogspot.com/2011/08/roller-mobile-themes-is-popping-up.html&quot;&gt;recent blog&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/f5800774-52f9-4f13-bdc4-7efd2e8eb4f0&quot; alt=&quot;screenshot of a mobile Roller theme&quot;&gt;
&lt;/p&gt;

&lt;p&gt;
It was an honor to act as mentor for this project, and fun talking to Shelan via Skype most Fridays. I&amp;#39;m looking forward to getting this on my blog, and getting this cool new feature into an Apache Roller 5.1 release sometime soon. Thanks, Shelan! And, thanks to Google for running the most excellent &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Summer of Code&lt;/a&gt; program.
&lt;/p&gt;


</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/apache_roller_5_0_released</id>
        <title type="html">Apache Roller 5.0 released</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/apache_roller_5_0_released"/>
        <published>2011-05-25T14:06:00+00:00</published>
        <updated>2011-05-25T21:10:31+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;&lt;i&gt;(cross-posted from the Roller project blog)&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;
&lt;p&gt;Here&amp;#39;s some more happy Roller news. Apache Roller 5.0 has been released! 
&lt;/p&gt;
&lt;p&gt;http://rollerweblogger.org/project/mediaresource/3cdaff7b-2745-4dac-89c9-151a3a1ccf26&amp;#39; 
align=&amp;#39;right&amp;#39; style=&amp;#39;padding:1em&amp;#39; /&amp;gt;
&lt;/p&gt;
&lt;p&gt;The major new feature in Roller 5.0 is Media Blogging, a set of enhancements to Roller&amp;#39;s file upload and management capabilities. Also included in 5.0 are simple multi-site support, OpenID and ~OAuth support for Roller&amp;#39;s AtomPub interface. All major dependencies have been updated and Roller now uses Maven for build and dependency management. You can find a summary of &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/What%27s+new+in+Roller+5.0&quot;&gt;Roller 5.0&amp;#39;s new features&lt;/a&gt; on the Roller wiki.
&lt;/p&gt;
&lt;p&gt;The road to Roller 5.0 has been a long one and if you are interested the history, you might want to check Dave Johnson&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://www.slideshare.net/snoopdave/whats-new-in-roller5&quot;&gt;What&amp;#39;s New in Roller 5.0&lt;/a&gt; presentation from ApacheCon US 2009. Roller 5.0 includes contributions from contributors from Google Summer of Code, San Jose State Univ. and the usual case of Roller committers. Thanks to all who contributed to Roller 5.0 over the years.
&lt;/p&gt;
&lt;p&gt;To download Apache Roller 5.0 and documentation, visit the &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org/downloads.html&quot;&gt;Apache Roller download page&lt;/a&gt; at the Apache Software Foundation&amp;#39;s website.
&lt;/p&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/congrats_to_webmink_and_forgerock</id>
        <title type="html">Congrats to Webmink and Forgerock</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/congrats_to_webmink_and_forgerock"/>
        <published>2010-05-10T08:12:16+00:00</published>
        <updated>2010-07-10T17:09:06+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="identity" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Congrats to Simon Phipps on what sounds like a great new job at ForgeRock and on his &lt;a href=&quot;http://www.computerworlduk.com/community/blogs/index.cfm?blogid=41&quot;&gt;new column&lt;/a&gt; in ComputerWorld.UK.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One of the key benefits to customers of the source code becoming open source is that, in the event a product is discontinued by its owner, a group of people from the community can simply pick up the source code and keep on maintaining and improving it. That&amp;#39;s a radical change from proprietary products, which can be killed stone dead with no appeal. With open source, the company may fold but the community carries on.
&lt;/p&gt;

&lt;p&gt;That&amp;#39;s all fine in theory, but does it actually work? I intend to find out. Starting this week, I&amp;#39;m joining &lt;a href=&quot;http://www.forgerock.com&quot;&gt;ForgeRock&lt;/a&gt; as chief strategy officer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;a href=&quot;http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2949&amp;amp;blogid=41&quot;&gt;Read More&lt;/a&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/oracles_social_site_promise</id>
        <title type="html">Oracle: please follow through on Project SocialSite</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/oracles_social_site_promise"/>
        <published>2010-03-27T09:10:46+00:00</published>
        <updated>2010-04-27T03:17:44+00:00</updated> 
        <category term="Social Software" label="Social Software" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="oracle" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsite" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;One year ago on this day I wrote that Sun Microsystems &lt;a href=&quot;http://rollerweblogger.org/roller/entry/the_future_of_project_socialsite&quot;&gt;is willing to contribute Project SocialSite&lt;/a&gt;&amp;quot; to the Apache Software Foundation. My contacts at Sun told me it was OK to make that announcement because a VP approved. One year later, we have &lt;a href=&quot;http://markmail.org/message/4vbv64oy2havjhku&quot;&gt;established&lt;/a&gt; Apache SocialSite (incubating) project, setup user accounts, put up a &lt;a href=&quot;http://incubator.apache.org/projects/socialsite.html&quot;&gt;status page&lt;/a&gt; and setup source code control but we still have no code from Sun.&lt;/p&gt;

&lt;p&gt;Since March 2009 I&amp;#39;ve been exchanging emails with my helpful contacts at Sun and trying to help them move forward with the contribution, but because of the ongoing Oracle/Sun merger things have moved incredibly slowly. Finally in late December 2009, my Sun contacts had permission to actually release the code to Apache, but there was a problem. 

&lt;p&gt;When Sun said that they were willing to contribute the SocialSite code to Apache, I figured that they would do so using the standard &lt;a href=&quot;http://www.apache.org/licenses/software-grant.txt&quot;&gt;Software Grant&lt;/a&gt; agreement that was used for Roller and all other projects entering Apache via the Incubator. Unfortunately, the Sun lawyers did not want to use the standard Software Grant agreement and Apache did and does not want to devise a new legal agreement just to accommodate Sun. That&amp;#39;s where we stand today. Sun committed to contributing SocialSite to Apache and now we&amp;#39;re waiting for Oracle/Sun to follow through on that commitment.&lt;/p&gt;

&lt;p&gt;Meanwhile, others have been making some progress with SocialSite. A major sports brand has launched a SocialSite based network with a million-plus users.  A couple of developers have rewritten the build script to use Maven, others have &amp;quot;ported&amp;quot; to JBoss and there is still interest in and a need for what was Sun&amp;#39;s Project SocialSite. Neither effort has contributed code back to SocialSite-proper and because of legal concerns are waiting for the main code to appear at Apache.&lt;/p&gt;

&lt;p style=&quot;align:center;&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/resource/sfish1.png&quot; alt=&quot;fish1&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/resource/sfish2.png&quot; alt=&quot;fish2&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/resource/sfish3.png&quot; alt=&quot;fish3&quot;&gt;
&lt;/p&gt;

&lt;p&gt;SocialSite is a small project and it will not survive for much longer with resources spread across multiple sites and a community working separately. So, I&amp;#39;m asking again and publicly: &lt;b&gt;Oracle, please follow through on your commitment and grant the Project SocialSite codebase to Apache&lt;/b&gt;.&lt;/p&gt;
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/roller_beginners_guide_available</id>
        <title type="html">Roller Beginner&amp;#39;s Guide available</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/roller_beginners_guide_available"/>
        <published>2010-02-25T07:54:11+00:00</published>
        <updated>2010-04-27T03:24:00+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="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://www.packtpub.com/apache-roller-4-0-beginners-guide/book/mid/270110dldzcj?utm_source=rollerweblogger.org&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002234&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/e481af17-243b-4b18-a6f9-9305739ff217&quot; style=&quot;padding:4px;align:right;&quot; alt=&quot;photo of beginner&amp;#39;s guide to Apache Roller 4.0&quot;&gt;&lt;/a&gt;

&lt;p&gt;I blogged about Alfonso Romero&amp;#39;s Apache Roller 4.0 Beginner&amp;#39;s Guide book before. It&amp;#39;s a great resource for folks who want to get the most out of their Apache Roller-based blogs, and not just beginners. As you can see in the photo on the right, I&amp;#39;ve got my copy. You can get yours directly from Pakt publishing:&lt;/p&gt;

&lt;p&gt; 
&lt;a href=&quot;http://www.packtpub.com/apache-roller-4-0-beginners-guide/book/mid/270110dldzcj?utm_source=rollerweblogger.org&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002234&quot;&gt;Buy a copy of Beginner&amp;#39;s Guide to Apache Roller 4.0&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;To publicize the book, Pakt publishing has been publishing some useful excerpts and even a complete sample chapter online. Here&amp;#39;s summary of the excerpts so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/files/9508-Chapter-9-Advanced-Topics.pdf&quot;&gt;Chapter 9 - Advanced topics (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/working-with-templates-in-apache-roller-4&quot;&gt;Working with Templates in Apache Roller 4.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/uploading-videos-sound-files-posts-using-apache-roller&quot;&gt;Using video and sound files in Roller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/including-google-map-posts-using-apache-roller-4&quot;&gt;Including Google Maps in Roller blog posts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/spicing-blog-uploading-files-images-weblog-apache-roller&quot;&gt;Spicing up your Roller blog with uploaded images&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you&amp;#39;ve been following Roller development you know that &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Apache+Roller+5.0+Release&quot;&gt;Roller 5.0&lt;/a&gt; is on the way. Most of the changes in Roller 5.0 are &amp;quot;under the hood&amp;quot; so 5.0 won&amp;#39;t make Alfonso&amp;#39;s book obsolete. Except for a couple of pages in Chapter 5 &amp;quot;Spicing Up Your Blog&amp;quot; that need updated screenshots, I believe everything in the book applies to Roller 5.0 as well.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/month_of_blogging</id>
        <title type="html">Month of blogging</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/month_of_blogging"/>
        <published>2009-08-02T16:04:33+00:00</published>
        <updated>2009-08-02T23:04:33+00:00</updated> 
        <category term="General" label="General" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="feeds" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" 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="sun" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webdev" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;Crammed into one post...&lt;/p&gt;

After a month of blog neglect, my automatic Latest Links from my Delicious.com account started to pile up. Back in the glory days of this blog, I blogged about things instead just saving links or tweeting about them. I realized that, by adding some commentary/opinion for each, I could turn a month&amp;#39;s worth of links into a month&amp;#39;s worth of blog posts and thus gain total absolution for my sin of going a full month without a post. So that&amp;#39;s what I did. &amp;nbsp;</summary>
        <content type="html">&lt;p&gt;Crammed into one post...&lt;/p&gt;

&lt;p&gt;After a month of blog neglect, the automatic Latest Links posts from my Delicious.com account started to pile up in my blog editor. Back in the glory days of this blog, I blogged about things instead just saving links or tweeting about them and would never have let a month go by without blogging. I realized that, by adding some commentary/opinion for each, I could turn a month&amp;#39;s worth of links into a month&amp;#39;s worth of blog posts and thus gain total absolution for my sin of going a full month without a post. So that&amp;#39;s what I did.&lt;/p&gt;


ul.linkentry&amp;gt;li {margin-bottom:0.5em;}
ul.linkentry&amp;gt;li span {color:gray; font-style: italics}


&lt;p&gt;Category: Blogging&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://bitworking.org/news/2009/07/comment-system-review&quot;&gt;Joe Gregorio: Comment system review&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Comparing Disqus, IntenseDebate and Google Friend Connect.&amp;quot;&lt;/span&gt; Joe Gregorio looked at commenting systems and ended up chosing Intense Debate.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/eclectic/entry/disqus_integration_bsc_roller_weblogger&quot;&gt;Integrating Disqus and Roller Weblogger on blogs.sun.com&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;I&amp;#39;ve recently updated my site to use Disqus the blog comment hosting and conversation site.&amp;quot;&lt;/span&gt; Sun UK CTO Wayne Horkan explains how (and why) to use the Disqus in a Roller, with code and helpful comments from Disqus CEO Daniel Ha.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://googleblog.blogspot.com/2009/07/new-blog-search-tools-feeds-hot-queries.html&quot;&gt;Official Google Blog: New Blog Search tools&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Feeds, Hot Queries and Latest Posts.&amp;quot;&lt;/span&gt; Nice to see Google is still working on blog search despite the rumored death of blogging.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Category: Feeds&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/pubsubhubbub/&quot;&gt;pubsubhubbub - Google Code&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;A simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as an extension to Atom.&amp;quot;&lt;/span&gt; Collaboration between Google and SixApart folks to allow quick notifiation of new content to feed subscribers and reduce load on feed publishers. Hub implementations are underway for AppEngine/Python, Erlang, Python and Ruby. Hmm... no Java?&lt;/li&gt;

&lt;/ul&gt;


&lt;p&gt;Category: General&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://www.johnryding.com/the-ryding-list/&quot;&gt;The Ryding List | Why Not?&lt;/a&gt;&lt;br&gt; &lt;span&gt;&amp;quot;I have found a wealth of great things to do in Raleigh.&amp;quot;&lt;/span&gt; Great list of things to do around Raleigh by newcomer John Ryding, one of my coworkers at IBM.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.allthingsdistributed.com/2007/07/the_different_cto_roles.html&quot;&gt;The Different CTO Roles - All Things Distributed&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;there is no well established definition of what a CTO actually does.&amp;quot;&lt;/span&gt; Of special interest to me now that I work on a CTO&amp;#39;s staff.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.boingboing.net/2009/07/01/life-during-wartime.html&quot;&gt;Life During Wartime video from Stop Making Sense - Boing Boing&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;This is the best concert movie I&amp;#39;ve ever seen.&amp;quot;&lt;/span&gt; Me too.&lt;/li&gt;

&lt;/ul&gt;


&lt;p&gt;Category: IBM&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;https://jazz.net/wiki/bin/view/Main/RtcSdk20&quot;&gt;Integrating and Extending Rational Team Concert 2.0&lt;/a&gt;&lt;br&gt;Great guide and presentation on Team Concert development via the Jazz Server SDK. Referring to this a lot these days.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blog.zvikico.com/2009/06/eclipse-galileo-for-mac-cocoa-or-carbon.html&quot;&gt;Eclipse Galileo for Mac: Cocoa or Carbon?&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Carbon is more mature and thoroughly tested, the new Cocoa implementation offers advantages and improvements.&amp;quot;&lt;/span&gt; And the answer is: 32-bit Cocoa. Yep, I&amp;#39;m paying attention to Eclipse again. It&amp;#39;s really the only way to do Jazz development.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://eclipse.org/e4/resources/e4-whitepaper.php&quot;&gt;Whitepaper: e4 Technical Overview&lt;/a&gt;&lt;br&gt;Lots of detail on the apparently massive changes coming in Eclipse e4 including the ability write Eclipse components in JavaScript and to run &amp;quot;existing SWT applications to be executed on web platforms such as ActionScript/Flash.&amp;quot;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Category: Java&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html&quot;&gt;James Strachan: Scala as the long term replacement for Java&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;if someone had shown me the Programming Scala book back in 2003 I&amp;#39;d probably have never created Groovy.&amp;quot;&lt;/span&gt; I&amp;#39;m sure that sent a lot of folks to Amazon, including me.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/pblaha/entry/google_app_engine_plugin_in&quot;&gt;Google App Engine plugin in NetBeans&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;With a video showing how easy it is to develop Google App Engine application in NetBeans. You can see that Hello World takes just 1 minute. :-)&amp;quot;&lt;/span&gt; Looks good and apparently it&amp;#39;s an open source side-project. Hosted at Kenai.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://fiber-space.de/wordpress/?p=1016&quot;&gt;Trails of EasyExtend: Java Spring - or the Biggus Dickus effect&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Looking at the API alone Spring feels like reading a parody on Java enterprise software.&amp;quot;&lt;/span&gt; Schadenfreude for me; never been a fan and always thought of it as a big grab bag of insidious crap I don&amp;#39;t need.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Category: Open Source&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://www.nytimes.com/2009/07/26/technology/companies/26mozilla.html?src=tp&amp;pagewanted=all&quot;&gt;NYTimes.com: For Mozilla and Google, Group Hugs Are Getting Tricky&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Google pays Mozilla hefty fees in return. The deal accounted for 88 percent of Mozilla&amp;#39;s $75 million in revenue in 2007.&amp;quot;&lt;/span&gt; Makes you wonder about the future of Firefox, Thunderbird, etc.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html&quot;&gt;Official Google Blog: Introducing the Google Chrome OS&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;The software architecture is simple: Google Chrome running within a new windowing system on top of a Linux kernel.&amp;quot;&lt;/span&gt;  Yet another Linux distro. That&amp;#39;s cool with me; I like Linux distros.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.scripting.com/stories/2009/07/08/theJavaWarsContinued.html&quot;&gt;The Java Wars, continued (Scripting News)&lt;/a&gt;&lt;br&gt; &lt;span&gt;&amp;quot;most people want XP on their netbook, not Linux. That was true yesterday and it&amp;#39;s still true today.&amp;quot;&lt;/span&gt; Dave Winer&amp;#39;s take on Google&amp;#39;s Chrome OS. I think he&amp;#39;s probably right at the moment but things are changing rapidly.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Category: Social Software&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/gdata/articles/gdata_gadgets.html&quot;&gt;Creating a Google Data Gadget - Google Data APIs - Google Code&lt;/a&gt;&lt;br&gt; &lt;span&gt;&amp;quot;This article will walk you through creating a Blogger gadget.&amp;quot;&lt;/span&gt; Google and OpenSocial Gadget support for OAuth makes things easier, but it&amp;#39;s still a PITA.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/intl/en/apis/gadgets/docs/oauth.html&quot;&gt;Writing OAuth Gadgets - Gadgets API - Google Code&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;send mail to oauthproxyreg@google.com with the following information to register your OAuth Consumer Secret.&amp;quot;&lt;/span&gt; If you want to write a Gadget that uses OAuth to access Twitter there&amp;#39;s an icky manual registration step involved. Apparently the solution to this problem is for Twitter.com to enhance their &amp;quot;OAuth configuration to accept digital signatures directly from iGoogle.&amp;quot;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Category: Sun&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://www.sdtimes.com/blog/post/2009/07/16/The-End-of-Sun.aspx&quot;&gt;The end of Sun&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;And that is why Schwartz isn&amp;#39;t here, I believe. Because he genuinely loved Sun and its employees.&amp;quot;&lt;/span&gt; A depressing article for former Sun employee to read, or anybody I guess. I do think there is something to this quote about Scwhartz.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.forbes.com/2009/07/25/oracle-sun-ibm-technology-cio-network-oracle.html&quot;&gt;Oracle-Sun Creating Churn - Forbes.com&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Suns loyal customers are defecting in droves.&amp;quot;&lt;/span&gt; Not really very surprising considering the conventional wisdom, which seems to be that Oracle will gut Sun&amp;#39;s software efforts and ditch the hardware entirely.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.computerworld.com/is_oracle_getting_ready_to_kill_opensolaris&quot;&gt;Computerworld Blogs: Is Oracle getting ready to kill OpenSolaris? - &lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Sun, Oracle and third-party sources are telling me that OpenSolaris developers are afraid.&amp;quot;&lt;/span&gt; This article is typical of what I&amp;#39;ve seen from the author: dumb speculation of the mean-spirited variety. &lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.oracle.com/us/corporate/press/020174&quot;&gt;Justice department extends Oracle-Sun probe&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;All that&amp;#39;s left is one narrow issue about the way rights to Java are licensed.&amp;quot;&lt;/span&gt; I don&amp;#39;t there&amp;#39;s a chance in hell that it is, but wouldn&amp;#39;t it be fun if this was all about the Sun-Apache Terms of Use controversy? &lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Web development&lt;/p&gt;

&lt;ul class=&quot;linkentry&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2009/06/Twitter-Architecture&quot;&gt;InfoQ: Twitter, an Evolving Architecture&lt;/a&gt;&lt;br&gt;Brief overview of Twitter architecture, use of caching and message queue technologies.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.freaks-unidos.net/javascript-libraries#my-opinion&quot;&gt;Evaluation of Javascript Libraries&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;jQuery and YUI come out on top, Prototype at the bottom.&amp;quot;&lt;/span&gt; Helped convince me that, now that we have YUI, we don&amp;#39;t really need Prototype and Scriptaculous in Roller.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised&quot;&gt;&amp;quot;MooTools vs JQuery vs Prototype vs YUI vs Dojo revised&lt;/a&gt;&lt;br&gt;&lt;span&gt;&amp;quot;Prototype is among the slowest.&amp;quot;&lt;/span&gt; More justification for ripping out Prototype and Scriptaculous.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;And now, back to your regular schedule of blogging, or not.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/media_blogging_for_roller</id>
        <title type="html">Media Blogging for Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/media_blogging_for_roller"/>
        <published>2009-02-19T12:57:37+00:00</published>
        <updated>2009-02-19T20:58:34+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="atom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mentoring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rss" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">For the past five months I&amp;#39;ve had the pleasure of mentoring two &lt;a href=&quot;http://www.sjsu.edu/&quot;&gt;San Jose State Univ.&lt;/a&gt; graduate students, &lt;a href=&quot;http://www.linkedin.com/pub/dir/ganesh/mathrubootham&quot;&gt;Ganesh Mathrubootham&lt;/a&gt; and &lt;a href=&quot;http://www.linkedin.com/pub/7/71/299&quot;&gt;Tanuja Varkanthe&lt;/a&gt;, who are working on a project for classes CMP 295A and B. They picked one of the projects that I first proposed for Google Summer of Code and then for Glassfish&amp;#39;s student outreach program, Media Blogging for &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. It&amp;#39;s turned out to be a major project and the central new feature in the upcoming Roller 5.0 release.&amp;nbsp;</summary>
        <content type="html">&lt;p&gt;For the past five months I&amp;#39;ve had the pleasure of mentoring two &lt;a href=&quot;http://www.sjsu.edu/&quot;&gt;San Jose State Univ.&lt;/a&gt; graduate students, &lt;a href=&quot;http://www.linkedin.com/pub/dir/ganesh/mathrubootham&quot;&gt;Ganesh Mathrubootham&lt;/a&gt; and &lt;a href=&quot;http://www.linkedin.com/pub/7/71/299&quot;&gt;Tanuja Varkanthe&lt;/a&gt;, who are working on a project for classes CMP 295A and B. They picked one of the projects that I first proposed for Google Summer of Code and then for Glassfish&amp;#39;s student outreach program, Media Blogging for &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. It&amp;#39;s turned out to be a major project and the central new feature in the upcoming Roller 5.0 release.&lt;/p&gt;


&lt;h4&gt;The plan&lt;/h4&gt;

&lt;p&gt;The basic idea is to make it really easy to upload images, audio and video files to Roller, and really easy to include them in Roller blog posts and RSS/Atom feeds. Of course, the devil is in the details and Ganesh and Tanuja really have those covered. They have put together the most detailed and well thought-out plan and design ever for a new Roller feature. You can find the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/rnkB&quot;&gt;proposal page&lt;/a&gt; and the full Media Blogging for Roller Project Plan (PDF, 2mb) on the Roller wiki. Here&amp;#39;s a key excerpt from the project summary:&lt;/p&gt; 

&lt;blockquote&gt;
&lt;p&gt;Roller currently lacks support for the latest blogging features.  Roller does allow 
users to upload any type of content to their blogs and include that content on blog entries as images or podcasts, but lacks tools to make media blogging a seamless experience for bloggers.  Interface to manage uploaded files is not sortable and not page-able. Once the user has uploaded a file, which could be an image or a podcast, he needs to explicitly cut and paste the URL into his blog post.&lt;/p&gt;

&lt;p&gt;Overall, Rollerâ&#128;&#153;s support for media blogs is currently limited to basic file upload functionality, which is cumbersome to use for creating media blogs. This project will revamp the existing file upload interface to incorporate powerful media blogging features into Roller. Also, successful media management websites such as Flickr and YouTube are driven by a public media library, offering different ways for users to search and locate the content of their like. This feature incorporated into a blog server can make it very powerful and we intend to do that as part of this project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To get an idea of what this is all about, let&amp;#39;s take a look at some screenshots/wireframes taken directly from the project plan.&lt;/p&gt;


&lt;h4&gt;New media file upload dialog&lt;/h4&gt;

&lt;p&gt;First up is the new media file upload dialog. There are a couple of interesting things here. We&amp;#39;ll have metadata for each upload, including description, tags and copyright message. We&amp;#39;ll also have the option of including the file in the gallery. We&amp;#39;ll support a media gallery for each blog, and new files added to the gallery are included in a special media feed for the blog.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/mediablogging-upload-1.png&amp;quot;
alt=&amp;quot;screenshot of new upload dialog&amp;quot; /&amp;gt;


&lt;h4&gt;File Uploads browser&lt;/h4&gt;

&lt;p&gt;To make it easy to manage your media files, the proposal includes a new upload browser interface, with a tabular and a hierarchical view. Thumbnails will be automatically generated on upload. Search and filtering controls will make it easy to find and operate on the files you are looking for, based on file metadata.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/mediablogging-browse-1.png&amp;quot; 
alt=&amp;quot;screenshot of new upload browser&amp;quot; /&amp;gt;


&lt;h4&gt;Select media dialog&lt;/h4&gt;

&lt;p&gt;When you are writing a blog post, you&amp;#39;ll be able to browse for and include media files without leaving the blog editor interface. You&amp;#39;ll be able to choose the size and orientation of the image or video in the blog post, as you can see below.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/mediablogging-video-1.png&amp;quot; 
alt=&amp;quot;screenshot of new add media dialog&amp;quot; /&amp;gt;


&lt;br&gt;&lt;br&gt;

&lt;p&gt;Needless to say, I&amp;#39;m pretty excited about these new features, and to looking forward to a major new Roller release, and one where I don&amp;#39;t have to do much of the work. If you want more information on 5.0 then check the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/9aQB&quot;&gt;Apache Roller 5.0 proposal page&lt;/a&gt;. And if you want to help out then join the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/ZYk&quot;&gt;Roller development mailing list&lt;/a&gt; and introduce yourself.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/rome_1_0_rc2</id>
        <title type="html">ROME 1.0 RC2 on the way</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/rome_1_0_rc2"/>
        <published>2009-01-07T08:48:11+00:00</published>
        <updated>2009-01-13T06:56:04+00:00</updated> 
        <category term="Feeds" label="Feeds" />
        <category term="atom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rome" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rss" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;img src=&quot;http://rollerweblogger.org/roller/resource/nicklothian-logo.png&quot; alt=&quot;Nick&amp;#39;s Twitter icon&quot; title=&quot;Go Nick go!&quot; align=&quot;right&quot;&gt;

&lt;p&gt;Good news for &lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;ROME&lt;/a&gt; fans. &lt;a href=&quot;http://nicklothian.com/blog/&quot;&gt;Nick Lothian&lt;/a&gt; picked up the puck and is galloping towards the finish line (sorry, I&amp;#39;m terrible at sports analogies).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://markmail.org/message/5df7knpcceubjug&quot;&gt;Nick Lothian&lt;/a&gt; on ROME dev:&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve gone and built some preview jars for the upcoming ROME 1.0RC2, ROME Fetcher
1.0RC2 and Modules 0.3 release.&lt;/p&gt;

&lt;p&gt;Those jars can be found here:
&lt;a href=&quot;https://rome.dev.java.net/servlets/ProjectDocumentList?folderID=10368&amp;amp;expandFolder=10368&amp;amp;folderID=10368&quot;&gt;https://rome.dev.java.net/servlets/ProjectDoc...&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#39;ve created source and javadoc jars as well as the normal jars - the idea being
that I&amp;#39;ll get them uploaded to some maven repository.&lt;/p&gt;

&lt;p&gt;If you have some spare time, please take a look at these and test them and let
me know of any problems. Assuming there are no big issues found I&amp;#39;d like to do a proper release in a couple of days.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Guess that means I should test &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;Propono&lt;/a&gt; with RC2.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/apache_abdera_graduates</id>
        <title type="html">Atom news: Apache Abdera graduates</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/apache_abdera_graduates"/>
        <published>2008-11-21T15:54:48+00:00</published>
        <updated>2009-01-06T07:04:46+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="atom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="atompub" scheme="http://roller.apache.org/ns/tags/" />
        <category term="feeds" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rome" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;img src=&quot;http://rollerweblogger.org/roller/resource/atom-logo75px.gif&quot; align=&quot;right&quot; alt=&quot;Atom logo&quot; title=&quot;Atom logo&quot;&gt;

&lt;p&gt;Congratulations to the &lt;a href=&quot;http://incubator.apache.org/abdera/&quot;&gt;Apache Abdera&lt;/a&gt; team, who&amp;#39;ve just &lt;a href=&quot;http://mail-archives.apache.org/mod_mbox/incubator-abdera-dev/200811.mbox/%3C4585c4a60811191238t52bd9840q845653578eb0690d@mail.gmail.com%3E&quot;&gt;graduated&lt;/a&gt; to full Apache top level project status. The don&amp;#39;t have the new site at &lt;b&gt;abdera.apache.org&lt;/b&gt; up yet and they&amp;#39;re still not quite at 1.0 yet, but this is a  major milestone. They&amp;#39;ve got the best Atom format and protocol toolkit around, &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_vs_abdera&quot;&gt;in my opinion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;via &lt;a href=&quot;http://asdf.blogs.com/asdf/2008/11/abdera-graduation.html&quot;&gt;Garett&lt;/a&gt; and &lt;a href=&quot;http://www.snellspace.com/wp/?p=979&quot;&gt;James&lt;/a&gt;.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/open_source_days_2008_copenhagen</id>
        <title type="html">Open Source Days 2008 - Copenhagen</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/open_source_days_2008_copenhagen"/>
        <published>2008-10-04T06:42:50+00:00</published>
        <updated>2008-10-04T13:54:41+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="conferences" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;My &lt;a href=&quot;http://rollerweblogger.org/roller/entry/open_source_days_and_k%C3%B8benhavn&quot;&gt;talk&lt;/a&gt; went pretty well yesterday and I&amp;#39;m definitely enjoying both the conference, which is still in progress, and my stay in Copenhagen. I&amp;#39;ll post more photos later, but for now here is a shot of the conference setup at ITU Copenhagen.&lt;/p&gt;

&lt;a href=&quot;http://www.flickr.com/photos/snoopdave/2911940350/&quot; title=&quot;Open Source Days 2008 - Copenhagen by snoopdave, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3282/2911940350_36aa246b1f.jpg&quot; width=&quot;375&quot; height=&quot;500&quot; alt=&quot;Open Source Days 2008 - Copenhagen&quot;&gt;&lt;/a&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/roller_at_open_source_days</id>
        <title type="html">Roller and SocialSite at Open Source Days 2008</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/roller_at_open_source_days"/>
        <published>2008-08-18T18:36:38+00:00</published>
        <updated>2008-08-19T01:36:38+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="conferences" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" 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/" />
        <content type="html">&lt;img src=&quot;http://rollerweblogger.org/roller/resource/OSD-Logo2008_155.png&quot; alt=&quot;Open Source Days 2008 logo&quot; align=&quot;right&quot;&gt;

&lt;p&gt;I&amp;#39;m happy to report that I&amp;#39;ll be traveling to Copenhagen, Denmark to talk about &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; at the &lt;a href=&quot;http://www.opensourcedays.org/2008/&quot;&gt;Open Source Days 2008&lt;/a&gt; conference on Oct. 3-4 this year. I&amp;#39;m going to tell the story of Roller and lessons learned along the way and then talk about blogging in the age of social networks and how to social-enable Roller with the SocialSite widgets. The session is called titled &lt;a href=&quot;http://www.opensourcedays.org/2008/agenda/sessions/DaveJohnson.shtml&quot;&gt;The once and future Roller&lt;/a&gt;.&lt;/p&gt;


</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/roller_status3</id>
        <title type="html">Roller status</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/roller_status3"/>
        <published>2008-08-18T18:27:40+00:00</published>
        <updated>2008-08-19T01:27:40+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;img src=&quot;http://rollerweblogger.org/roller/resource/apachelogo.gif&quot; alt=&quot;feather logo&quot;&gt;

&lt;p&gt;If you want the lowdown on what&amp;#39;s going on with Roller community health, ongoing work and upcoming releases then check out the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/Q2sB&quot;&gt;Apache Roller August 2008 Board Report&lt;/a&gt;.&lt;/p&gt;


</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/latest_links_open_source</id>
        <title type="html">Latest Links - Open Source</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links_open_source"/>
        <published>2008-08-15T12:00:00+00:00</published>
        <updated>2008-08-28T15:25:20+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="google" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javafx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="patents" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://diveintomark.org/archives/2008/08/05/placating&quot;&gt;Placating people with options [dive into mark]&lt;/a&gt;&lt;br&gt;&amp;quot;Google Project Hosting is and has always been a tool to fight license proliferation. It is only incidentally useful&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://redmonk.com/sogrady/2008/08/06/licenseproliferation/&quot;&gt;tecosystems - Google Code vs License Proliferation&lt;/a&gt;&lt;br&gt;&amp;quot;There is room in my philosophy for file based reciprocal licenses such as the CDDL, EPL, and MPL. While they may create islands of code, some of those islands are very large indeed&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://launchpad.net/&quot;&gt;Launchpad, by Canonical&lt;/a&gt;&lt;br&gt;Speaking of FOSS project hosting, LaunchPad looks very cool. Take the tour.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.kodewerk.com/javafx_are_we_there_yet.htm&quot;&gt;JavaFX, are we there yet? [kirk.blog-city.com]&lt;/a&gt;&lt;br&gt;&amp;quot;With this in mind, I&amp;#39;m pretty optimistic that JavaFX, being free and open, will become the preferred choice for building rich clients if...&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://openjfx.dev.java.net/&quot;&gt;OpenJFX: Open Source sidebar&lt;/a&gt;&lt;br&gt;&amp;quot;Sun is committed to delivering enhancements to the JavaFX platform and to this end will continue internal development
 -- hmm...  I don&amp;#39;t understand the logic here&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://radar.oreilly.com/2008/07/open-source-and-cloud-computing.html&quot;&gt;Open Source and Cloud Computing - O&amp;#39;Reilly Radar&lt;/a&gt;&lt;br&gt;&amp;quot;almost all of the software stacks running on cloud computing platforms are open source, for the simple reason that proprietary software licenses have no provisions for cloud deployment&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.patentlyo.com/patent/2008/07/the-death-of-go.html&quot;&gt;Patent Law Blog (Patently-O): The Death of Google&amp;#39;s Patents?&lt;/a&gt;&lt;br&gt;&amp;quot;The Patent and Trademark Office has now made clear that its newly developed position on patentable subject matter will invalidate many and perhaps most software patents&amp;quot;&lt;/li&gt;
&lt;/ul&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/project_socialsite_opens_up</id>
        <title type="html">Project SocialSite opens up!</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/project_socialsite_opens_up"/>
        <published>2008-08-08T15:36:08+00:00</published>
        <updated>2008-08-08T22:43:29+00:00</updated> 
        <category term="Sun" label="Sun" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsite" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;My teammates and I have started a &lt;a href=&quot;http://blogs.sun.com/socialsite&quot;&gt;new blog&lt;/a&gt; over at blogs.sun.com to cover Project SocialSite and to break the big news: we&amp;#39;re open!&lt;/p&gt;

&lt;blockquote&gt;
We are very pleased to announce that &lt;b&gt;source code is now available&lt;/b&gt; for &lt;a href=&quot;https://socialsite.dev.java.net/&quot;&gt;Project SocialSite&lt;/a&gt;
(under a CDDL/GPL license) and the project is now operating as an open
source project following the Glassfish governance policy. We&amp;#39;re working
in the open and welcome contributors of all stripes.
&lt;a href=&quot;http://blogs.sun.com/socialsite/entry/project_socialsite_opens_up&quot;&gt;Read more...&lt;/a&gt;
&lt;/blockquote&gt;
</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/latest_links_misc</id>
        <title type="html">Latest Links - misc</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links_misc"/>
        <published>2008-06-17T19:00:30+00:00</published>
        <updated>2008-06-18T02:00:30+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="glassfish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="memcached" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mysql" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;It&amp;#39;s time to catch up on blogging and I&amp;#39;m going to start by going through my backlog of links and adding some commentary, but not in this post; these are miscellaneous links that don&amp;#39;t fit nicely into my other posts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://tech.slashdot.org/article.pl?sid=08/06/04/2120227&amp;from=rss&quot;&gt;Slashdot | Why Google Should Embrace OpenOffice.org&lt;/a&gt;&lt;br&gt; &amp;quot;If Google really wanted to deliver a knockout punch to Microsoft, it would integrate OpenOffice with Google Docs&amp;quot; -- and pump some money into OOo development&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://headius.blogspot.com/2008/05/power-of-jvm.html&quot;&gt;Headius: The Power of the JVM&lt;/a&gt;&lt;br&gt;&amp;quot;And while JRuby and Groovy will probably spend the next few months one-upping each other, we&amp;#39;ve both proven something far more important: the JVM is an *excellent* platform for dynamic languages. Don&amp;#39;t let anyone tell you it&amp;#39;s not.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blog.springsource.com/main/2008/05/27/open-source-open-strategy-the-springsource-manifesto/&quot;&gt;SpringSource Blog - Open Source, Open Strategy&lt;/a&gt;&lt;br&gt;My 141 char summary: open source good, but we need money. we won&amp;#39;t relicense existing parts, but we&amp;#39;ll GPL the full-stack so we alone can ride it to the bank&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=49227&quot;&gt;Kohsuke Kawaguchi: GlassFish v3 just got embeddable&lt;/a&gt;&lt;br&gt; &amp;quot;GlassFish glassfish = new GlassFish(); glassfish.minimallyConfigure(8080);&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://db.apache.org/derby/docs/10.4/tools/ctoolsimport16245.html&quot;&gt;Derby: Using the bulk import and export procedures&lt;/a&gt;&lt;br&gt; closest thing to mysqldump in Derby land&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php&quot;&gt;Core team statement on replication in PostgreSQL&lt;/a&gt;&lt;br&gt; &amp;quot;it is time to include a simple, reliable basic replication feature in the core system&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.linuxjournal.com/article/7451&quot;&gt;Distributed Caching with Memcached&lt;/a&gt;&lt;br&gt; Nice how-it-works article on memcached.&lt;/li&gt;
&lt;/ul&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/latest_links38</id>
        <title type="html">Latest Links: open source, social networking and etc.</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links38"/>
        <published>2008-03-23T14:00:05+00:00</published>
        <updated>2008-03-24T04:29:31+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialnetworking" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;ul&gt;

&lt;li&gt;&lt;a href=&quot;http://cgwalters.livejournal.com/14310.html&quot;&gt;cgwalters - A software tsunami&lt;/a&gt;&lt;br&gt;&amp;quot;OpenJDK is finally changing that. Now, you can write a library using Java, it can be sensibly integrated with Free operating systems&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.regdeveloper.co.uk/2008/01/11/ibm_project_zero_commercial/&quot;&gt;Countdown for IBM Project Zero | Reg Developer&lt;/a&gt;&lt;br&gt;&amp;quot;bringing the feedback typical of an open source project without any of the obligations to give the resulting technology back to the community.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.regdeveloper.co.uk/2008/03/21/jcp_smoke_filled_rooms/&quot;&gt;Soviet-era JCP needs change, concedes top commissar | Reg Developer&lt;/a&gt;&lt;br&gt; Patrick Curran has reached a firm conclusion on his organization: &amp;quot;We have to change,&amp;quot; he said. &amp;quot;No more smoke-filled rooms.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.gnome.org/gman/2008/03/19/why-our-governance-doesnt-work/&quot;&gt;Glynn Foster: Why Our Governance Doesnâ&#128;&#153;t Work&lt;/a&gt;&lt;br&gt;&amp;quot;Thereâ&#128;&#153;s no substitute to JFDI - or improving our governance model so that it doesnâ&#128;&#153;t get in the way of suitably motivated people who want to contribute.&amp;quot;&lt;/li&gt;

&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://skypejournal.com/blog/2008/03/skype_and_the_social_network_s.html&quot;&gt;Skype Journal: Skype and the Social Network Stack&lt;/a&gt;&lt;br&gt;&amp;quot;We need a new stack to sort out social media&amp;#39;s plumbing&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://chris.pirillo.com/2008/03/23/an-open-letter-to-american-express/&quot;&gt;An Open Letter to American Express ~ Chris Pirillo&lt;/a&gt;&lt;br&gt; &amp;quot;You know, for all the buzz that FaceBook getsâ&#128;¦ I get far more value out of Twitter.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/buddypress/&quot;&gt;buddypress - Google Code&lt;/a&gt;&lt;br&gt;&amp;quot;suite of plugins that will completely transform a vanilla installation of Wordpress MU into a fully functional social network platform&amp;quot;&lt;/li&gt;

&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://apsblog.burtongroup.com/2008/03/looking-for-soa.html&quot;&gt;App Platform Strategies Blog: Looking for SOA success stories&lt;/a&gt;&lt;br&gt;&amp;quot;SOA is not working in most organizations&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.olpcnews.com/software/windows/xp_on_the_xo_in_60_days.html&quot;&gt;OLPC News: Negroponte Says XP on XO in 60 Days&lt;/a&gt;&lt;br&gt;&amp;quot;the end of a dream&amp;quot;. &lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.atlassian.com/developer/2008/03/maven_in_our_development_process_part_4_remaining_issues.html&quot;&gt;Atlassian Dev Blog - Maven in our development process. Part 4.&lt;/a&gt;&lt;br&gt;&amp;quot;Maven users need training.&amp;quot;&lt;/li&gt;

&lt;/ul&gt;


</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/google_summer_of_code_ideas</id>
        <title type="html">Google Summer of Code ideas for Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/google_summer_of_code_ideas"/>
        <published>2008-03-16T13:55:31+00:00</published>
        <updated>2008-03-16T20:55:32+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="google" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I asked for Google Summer of Code (GSOC) ideas for Roller a couple of days ago. Below are links to the proposals I thought were good enough to volunteer as possible mentor for and to submit. The deadline is tomorrow, so you&amp;#39;ve still got time to suggest additions to the list.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-openid&quot;&gt;Roller OpenID&lt;/a&gt;: 
Open ID support for Roller blog server, for user accounts and comments&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-mobile&quot;&gt;Roller Mobile&lt;/a&gt;:
Mobile interface for Roller blog server&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-activities&quot;&gt;Roller Activities&lt;/a&gt;: 
Simple Social Networking for Roller blog server, Twitter-like activities&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-abdera&quot;&gt;Roller Abdera&lt;/a&gt;: 
Abdera-based AtomPub implementation for Roller blog server&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-atomexport&quot;&gt;AtomPub Export&lt;/a&gt;:
AtomPub Export for Roller blog server, export all!&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-shindig&quot;&gt;Roller Shindig&lt;/a&gt;: 
Google Gadget support in Roller blog server themes via Shindig&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-photogallery&quot;&gt;Roller Photo Gallery&lt;/a&gt;:
Better photo and file upload features in Roller blog server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here&amp;#39;s the full list of &lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008&quot;&gt;Apache GSOC proposals&lt;/a&gt;.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/fluffy_little_lambs_vs_goats</id>
        <title type="html">Fluffy little lambs vs. goats in training</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/fluffy_little_lambs_vs_goats"/>
        <published>2008-03-11T08:13:56+00:00</published>
        <updated>2008-03-11T15:13:56+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.generationjava.com/roller/bayard/entry/open-source-recruiting-users-vs-committers&quot;&gt;Henry Yandel&lt;/a&gt;: I continue to grapple with the concept of how to treat users of Open Source projects. Should you be cruel, or kind?&lt;/p&gt;

&lt;p&gt;It sounds like a dumb question - rude hackers who rip users apart for daring to ask a question in a not perfect way are just arseholes who need to get off their high horse. Right?&lt;/p&gt;

&lt;p&gt;Iâ&#128;&#153;m not convinced. And Iâ&#128;&#153;m someone who usually over worries about being polite. Mostly because the voice inside my head is, I suspect, the kind of stormtrooper who after the Death Star blows up for the second time, will be found out of uniform at the Rebel party selling little burgers of â&#128;&#152;forest meat - mind the blaster marks on the furâ&#128;&#153;. &lt;a href=&quot;http://blog.generationjava.com/roller/bayard/entry/open-source-recruiting-users-vs-committers&quot;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

Insightful and fun post from Apache board member Henri Yandell. Worth a read for folks trying to grow an open source community of contributors.

</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/springsource_and_covalent_good_thing</id>
        <title type="html">SpringSource and Covalent: good thing for Apache?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/springsource_and_covalent_good_thing"/>
        <published>2008-01-30T09:27:34+00:00</published>
        <updated>2008-01-30T17:27:36+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" 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.springsource.com&quot;&gt;SpringSource&lt;/a&gt;, the company behind the Spring Framework, has purchased &lt;a href=&quot;http://www.covalent.net/&quot;&gt;Covalent&lt;/a&gt;, a company that provides support for Apache projects. This popped up on my radar because Covalent offers support contracts for Roller and in fact, SpringSource CEO Rod Johnson mentioned Roller specifically when talking about the deal (emphasis mine):&lt;/p&gt;

&lt;blockquote&gt;&amp;lt;a href=
&amp;quot;http://www.informationweek.com/news/showArticle.jhtml?articleID=205920751&amp;quot;&amp;gt;Rod Johnson: &amp;quot;We want to support the open source software that people want to use,&amp;quot; including the Geronimo application server, the Axis Web Services Framework from Apache, and the &lt;b&gt;Apache Roller Blog&lt;/b&gt; multi-user blogging software.&amp;quot;
&lt;/blockquote&gt;

&lt;p&gt;Sounds like a good thing and hopefully it will improve the support story for all Apache products. In fact, it could be a really good thing for Apache projects because Rod&amp;#39;s philosophy is that you can&amp;#39;t support software unless you are one of the software&amp;#39;s creators. &lt;/p&gt;

&lt;blockquote&gt;&amp;lt;a href=
&amp;quot;http://www.infoq.com/news/2007/06/open-source-models&amp;quot;&amp;gt;Rod Johnson: 
&amp;quot;You can&amp;#39;t divorce the process of maintaining software from the process of creating software...That&amp;#39;s not the future of enterprise open source - unless open source has no future&amp;quot;&lt;/blockquote&gt;

&lt;p&gt;Based on that, we can assume that SpringSource will now be paying committers to do creative work on Roller and other Apache projects so that they can provide the best maintenance and support of those same projects. Right? Maybe I&amp;#39;m too naive -- after all, I figured having Roller in Lotus Connections meant IBM would be contributing.&lt;p&gt;
&lt;/p&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/latest_links34</id>
        <title type="html">Latest Links</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links34"/>
        <published>2007-12-18T14:00:07+00:00</published>
        <updated>2007-12-19T05:36:02+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="opensocial" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Today, I&amp;#39;ve got a couple of additions to my powered-by-Roller list:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gmjjavadesigns.com/gmjd/entry/apache_roller_4_0_released&quot;&gt;GMJ Designs : Apache Roller 4.0 Released&lt;/a&gt;&lt;br&gt;&amp;quot;I love the interface and it works great.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.toasttechnology.com.au/roller/&quot;&gt;Toast Technology Blogs : Weblog&lt;/a&gt;&lt;br&gt;
SOA and business portal consultancy blogging with Roller&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.limlom.com/blog/&quot;&gt;Limlom.com company blog&lt;/a&gt;&lt;br&gt;
Business solutions and J2EE consultancy blogging with Roller&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://journal.biblicalrecorder.org/br/&quot;&gt;Biblical Recorder journals&lt;/a&gt;&lt;br&gt;
Blogs and Baptist Planet all powered by Roller&lt;/li&gt;
&lt;/ul&gt;


More about the opening of the Social Networking platforms of the world:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/12/13/SomeThoughtsOnTheOpeningOfTheFacebookPlatformArchitecture.aspx&quot;&gt;Dare Obasanjo: Thoughts on the Opening of the Facebook Platform&lt;/a&gt;&lt;br&gt;
&amp;quot;looks like Facebook plans to assert their Intellectual Property rights on anyone who clones their platform&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://opensocialapis.blogspot.com/2007/12/lets-get-this-shindig-started.html&quot;&gt;OpenSocial API Blog: Let&amp;#39;s get this Shindig started&lt;/a&gt;&lt;br&gt;
&amp;quot;We&amp;#39;re thrilled to tell you the initial commit to the Shindig repository is in&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://factoryjoe.com/blog/2007/12/13/ruminating-on-diso-and-the-public-domain/&quot;&gt;Ruminating on DiSo and the public domain&lt;/a&gt;&lt;br&gt;
&amp;quot;Iâ&#128;&#153;m hopeful about projects like Shindig that call themselves â&#128;&#156;open sourceâ&#128;&#157; and are able to be sponsored by stringent organizations like the Apache foundation. But...&amp;quot;&lt;/li&gt;
&lt;/ul&gt;

And some more about the intersection of corporate interests and community open source:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoworld.com/article/07/12/12/Open-source-and-the-corporate-elephant_1.html?source=rss&amp;url=http://www.infoworld.com/article/07/12/12/Open-source-and-the-corporate-elephant_1.html&quot;&gt;InfoWorld: Open source and the corporate elephant (FOSS.IN coverage)&lt;/a&gt;&lt;br&gt;
Danese Cooper: &amp;quot;Having a well-read blog is the best defense you can have against any problems you may encounter&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.eweek.com/article2/0,1895,2231465,00.asp&quot;&gt;eWeek: Sun Open-Source Support Questioned&lt;/a&gt;&lt;br&gt; 
&amp;quot;The only reason anyone should be surprised by anything Sun does with [the open-source projects] it controls is because that person has fundamentally created an expectation that access to source code meant more than just thatâ&#128;&#148;and that is a flawed assumption.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.regdeveloper.co.uk/2007/12/05/sun_opends_defining_terms/print.html&quot;&gt;Reg Developer: Bruce Perens on the OpenDS spat&lt;/a&gt;&lt;br&gt;
&amp;quot;In general open source is only going to work if you let it be a community led project. Sun has had a hard time learning this, and some of their open source projects have had a hard time getting outside contributors, because Sun has insisted on owning the [project]&amp;quot;&lt;/li&gt;
&lt;/ul&gt;

</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/openqabal</id>
        <title type="html">OpenQabal: a social software platform w/Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/openqabal"/>
        <published>2007-12-04T13:56:55+00:00</published>
        <updated>2007-12-04T21:59:30+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="socialsoftware" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
I&amp;#39;m always happy to see Roller used in new sites, projects and products. 
Here&amp;#39;s an interesting new example that I&amp;#39;ve been meaning to blog for a while now.

Phillip Rhodes is working on building what he calls &lt;a href=&quot;http://openqabal.dev.java.net&quot;&gt;OpenQabal&lt;/a&gt; a  &amp;quot;social software operating system.&amp;quot; The project integrates a set of social software applications, including Roller and JavaBB, via Single Sign-On (SSO), a common look-and-feel and &lt;a href=&quot;http://www.sioc-project.org/&quot;&gt;Semantically-Interlinked Online Communities&lt;/a&gt; (SIOC). 

He explains it all in an lengthy and informative &lt;a href=&quot;http://www.jroller.com/openqabal/entry/so_what_is_openqabal_and&quot;&gt;blog post&lt;/a&gt; on the project&amp;#39;s JRoller.com blog. &lt;/p&gt;

&lt;p&gt;I&amp;#39;d never heard of SIOC before. Here&amp;#39;s the executive summary:&lt;/p&gt;

&lt;blockquote&gt;Semantically-Interlinked Online Communities SIOC or is a framework aimed at connecting online community sites and internet-based discussions. Currently, online communities (boards, blogs, etc.) are like islands - they contain valuable information but are not well connected. SIOC allows us to interlink these sites, and enables the extraction of richer information from various discussion services.&lt;/blockquote&gt;

&lt;p&gt;Sounds like it could be pretty darn useful. 

But then again, I spent a little time exploring the list of SIOC enabled sites with the &lt;a href=&quot;http://sioc-project.org/firefox&quot;&gt;SIOC Firefox plugin&lt;/a&gt; and didn&amp;#39;t really find any examples of interlinked communities or conversations. 

Am I missing something?&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/sun_open_source_project_governance</id>
        <title type="html">Sun open source project governance</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/sun_open_source_project_governance"/>
        <published>2007-12-01T13:57:03+00:00</published>
        <updated>2007-12-01T22:05:52+00:00</updated> 
        <category term="Sun" label="Sun" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Here&amp;#39;s a sampling of governance docs from some of Sun&amp;#39;s many open source projects. I&amp;#39;ve listed them in order of what I feel to be, the most progressive (i.e. community governance) to least progressive (i.e. corporate control). I&amp;#39;ve also listed a key quote from each doc and made a brief comment about each.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.opensolaris.org/os/community/cab/governance&quot;&gt;OpenSolaris governance&lt;/a&gt;: 
&amp;quot;The OpenSolaris Community has the authority and responsibility for all decisions&amp;quot; - seems to approach ASF style governance.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://openjdk.java.net/legal/charter/&quot;&gt;OpenJDK &lt;i&gt;interim &lt;/i&gt;governance&lt;/a&gt;:
&amp;quot;The [board] shall be comprised of [5 and ] shall conduct its affairs in accordance with democratic principles and shall represent the interests of the Community. Two [members] shall be employees of Sun&amp;quot; - not final, but looking good.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://www.netbeans.org/about/os/governance.html&quot;&gt;Netbeans governance&lt;/a&gt;:
&amp;quot;In the case of an irresolvable dispute, there is a governance board of three people, who are appointed for six month terms.&amp;quot; (2 appointed by community, 1 by Sun).&amp;quot; - sounds pretty good, but the doc seems a little vague.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;https://sungrid.dev.java.net/community.html&quot;&gt;SunGrid governance&lt;/a&gt;:
&amp;quot;The Board positions include the Community Leader, the Community Site Manager, and four general members, two Sun members and from the independent developer Community.&amp;quot; - sounds good, again doc seems a little vague.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;https://glassfish.dev.java.net/public/GovernancePolicy.html&quot;&gt;Glassfish governance&lt;/a&gt;:
&amp;quot;The GlassFish project has an overall Project Lead ... appointed by Sun&amp;quot; - Sun has final say.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;https://opensso.dev.java.net/public/about/governance/&quot;&gt;OpenSSO governance &lt;i&gt;(draft)&lt;/i&gt;&lt;/a&gt;:
&amp;quot;Project Managers make the final decision ... are appointed by Sun&amp;quot; - Sun has final say.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;https://opends.dev.java.net/public/docs/dev-docs/OpenDS-Governance.html&quot;&gt;OpenDS governance&lt;/a&gt;:
The OpenDS project has single, overall Project Lead [who is] appointed by Sun Microsystems.&amp;quot; - Sun has final say.&lt;/li&gt;
&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;https://mobileandembedded.dev.java.net/governance.html&quot;&gt;Mobile and embedded&lt;/a&gt;:
&amp;quot;Sun may change its appointed Governance Board members at any time&amp;quot; - Sun has final say.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looks to me like the trend is towards community governance and the most important projects are the ones getting the most attention and the most progressive governance. That&amp;#39;s good and I sincerely hope the trend continues.&lt;/p&gt;

</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/roller_strong_11</id>
        <title type="html">Roller Strong #11</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/roller_strong_11"/>
        <published>2007-11-27T21:04:43+00:00</published>
        <updated>2008-01-04T19:44:43+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I&amp;#39;ve got a couple of Roller related items to blog about, so why not just call it Roller Strong #11.&lt;/p&gt;

&lt;p&gt;First, Lars Trieloff responds to some of the questions I raised about 
&lt;a href=&quot;http://weblogs.goshaky.com/weblogs/lars/entry/jcr_for_roller&quot;&gt;JCR and Roller&lt;/a&gt; 
in my ApacheCon wrap-up post. I left a comment on his blog in response. 
Personally, I think a JCR back-end is a very interesting idea 
and I wish I had some more time to explore it.&lt;/p&gt;

&lt;p&gt;Manchi Leung AKA Thinkboy posted the code for a new &lt;a href=&quot;http://markmail.org/message/gs34nqgkocfpi4g2&quot;&gt;Textile plugin&lt;/a&gt; to the Roller dev list, using 
&lt;a href=&quot;https://textile-j.dev.java.net/&quot;&gt;Textile-J&lt;/a&gt;. Thinkboy says &amp;quot;it supports almost all of the Textile syntax. 
very much the same as &lt;a href=&quot;http://www.atlassian.com/software/confluence/&quot;&gt;Confluence wiki&lt;/a&gt;. Now I can easily sync or copy working notes from Confluence wiki to my personal Roller blog.&amp;quot; Nice. Note to self: I need to fix up some of our existing entry plugins -- I think some of them (e.g. Ekit) still haven&amp;#39;t been updated for Roller 3.1.&lt;/p&gt;

&lt;p&gt;Arun Gupta blogged recently about &lt;a href=&quot;http://blogs.sun.com/arungupta/entry/totd_17_backin_up_your&quot;&gt;Backing up your Roller entries&lt;/a&gt; and explained how to use the Grabber example (now known as BlogBackup in Blogapps 2) from the &lt;a href=&quot;https://blogapps.dev.java.net/&quot;&gt;Blogapps project&lt;/a&gt; to backup your Roller blog. Backing-up your entries, but backing up your uploads is not. Hopefully, blogs.sun,com will turn on Atom protocol someday and that&amp;#39;ll will make it easy for a tool like Grabber backup both entries and uploads. &lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/roller-cartoon-140x126.png&quot; alt=&quot;roller logo&quot; align=&quot;right&quot;&gt;

&lt;p&gt;We&amp;#39;re still waiting on &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/What%27s+New+in+Roller+4.0&quot;&gt;Roller 4.0&lt;/a&gt;, but I sense our wait is soon over. &lt;a href=&quot;http://markmail.org/message/5ccve3y6sgittjo4&quot;&gt;Roller 4.0 RC10&lt;/a&gt; was released one week ago with just a couple of bug fixes. And so far, no critical issues have been found. We&amp;#39;ve got only one +1 vote (thanks &lt;a href=&quot;http://www.busybuddha.org/blog/&quot;&gt;Anil&lt;/a&gt;!) so far so committers please test and vote.&lt;/p&gt;

&lt;p&gt;And finally, I have to mention MarkMail because I&amp;#39;ve been using it throughout this blog post. MarkMail provides a slick interface and excellent facilities for mailing lists of all kinds. They&amp;#39;re indexing all of the Apache mailing lists and providing statis and charts for each. Check the &lt;a href=&quot;http://roller.markmail.org/&quot;&gt;Roller page at MarkMail&lt;/a&gt; for example.&lt;/p&gt;

&lt;p&gt;That&amp;#39;s all I&amp;#39;ve got for this go-round. Keep on rollin&amp;#39;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/latest_links23</id>
        <title type="html">Latest Links: Android, OpenSolaris and misc.</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links23"/>
        <published>2007-11-26T17:00:03+00:00</published>
        <updated>2007-11-27T01:27:11+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensolaris" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;ul&gt;

&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://mail.opensolaris.org/pipermail/ogb-discuss/2007-November/003054.html&quot;&gt;Roy Fielding [ogb-discuss]: please dissolve the Desktop Community&lt;/a&gt;&lt;br&gt;&amp;quot;there is absolutely no reason for this organization to exist if all decisions are going to be made by Sun.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://mail.opensolaris.org/pipermail/ogb-discuss/2007-November/002935.html&quot;&gt;Ian Murdock [ogb-discuss]: re: please dissolve the Desktop Community&lt;/a&gt;&lt;br&gt;&amp;quot;You have to be joking? I don&amp;#39;t even know where to begin.. This is like Robert&amp;#39;s Rules of Order run amok&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/jimgris/entry/two_great_linus_quotes&quot;&gt;Jim Grisanzio: Two Great Linus Quotes&lt;/a&gt;&lt;br&gt;&amp;quot;(1) one person or company shouldn&amp;#39;t control the entire community, and (2) the real value of community development comes over the long term and results from many small contributions, not one big one.&amp;quot;&lt;/li&gt;


&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/Burnette/?p=469&quot;&gt;Ed Burnette: Sun/Google Android â&#128;&#156;fightâ&#128;&#157; overblown&lt;/a&gt;&lt;br&gt; &amp;quot;Iâ&#128;&#153;m here to tell you, itâ&#128;&#153;s all bunk&amp;quot;...&amp;quot;However Google did make one big mistake with Android&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://developers.slashdot.org/article.pl?sid=07/11/17/0223204&quot;&gt;Slashdot: Google, Sun Headed for Showdown Over Android&lt;/a&gt;&lt;br&gt;Pure FUDtastic speculation based on Stefano&amp;#39;s blog post&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://robilad.livejournal.com/22312.html&quot;&gt;robilad: QOTD: Google&amp;#39;s license for the Android SDK&lt;/a&gt;&lt;br&gt; &amp;quot;you may not extract the source code or create a derivative work of the SDK&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.javalobby.org/java/forums/t103315.html&quot;&gt;Javalobby: Is Google the New Microsoft?&lt;/a&gt;&lt;br&gt; Dalibor&amp;#39;s comment: &amp;quot;Google will keep Android as proprietary as they can for as long as they can, while letting people believe something else&amp;quot;&lt;/li&gt;


&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jroller.com/heffel/entry/eclipse_veteran_tries_and_keeps&quot;&gt;David Heffelfinger: Eclipse Veteran Switches To NetBeans&lt;/a&gt;&lt;br&gt;&amp;quot;NetBeans has now surpassed Eclipse in usability. Count me in as a new convert.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jroller.com/rickard/entry/reloaded_the_continuing_adventures_of&quot;&gt;Stuck in the middle : Weblog&lt;/a&gt;&lt;br&gt; Rickard Oberg is blogging at JRoller.com again&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/alanbur/entry/how_to_leave_facebook&quot;&gt;Alan Burlison&amp;#39;s Blog: How to leave Facebook&lt;/a&gt;&lt;br&gt;&amp;quot;try mailing them, quoting the clear precedent they have set by closing my account&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.symphonious.net/2007/11/14/why-support-opensocial/&quot;&gt;Symphonious  Â» Why Support OpenSocial?&lt;/a&gt;&lt;br&gt;&amp;quot;However, if OpenSocial gets support outside social networks it has the possibility of attracting developers who actually care about their users, not just their advertising profits and install count&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=7107&quot;&gt;ZDNet: Firefox 3 Beta 1 has landed&lt;/a&gt;&lt;br&gt;&amp;quot;Improved performance with more than 300 memory leak fixes.&amp;quot;&lt;/li&gt;

&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/glassfish_at_unc_chapel_hill</id>
        <title type="html">Glassfish at UNC-Chapel Hill</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/glassfish_at_unc_chapel_hill"/>
        <published>2007-07-03T21:41:01+00:00</published>
        <updated>2007-07-04T04:43:41+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="glassfish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="triangle" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;img src=&quot;http://blogs.sun.com/stories/resource/unc/gf_license-250_127px.png&quot; alt=&quot;Glassfish NC license tag&quot; align=&quot;right&quot;&gt;
&lt;p&gt;Via &lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/glassfish_at_unc&quot;&gt;the Aquarium&lt;/a&gt;, there&amp;#39;s a nice Java EE and Glassfish &lt;a href=&quot;http://blogs.sun.com/stories/entry/unc&quot;&gt;adoption story&lt;/a&gt; over in Chillboro:&lt;/p&gt;

&lt;blockquote&gt;&lt;a href=&quot;http://kmdev.atn.unc.edu/roller/adamc/&quot;&gt;Adam Constabaris&lt;/a&gt;:
A fundamental question for us in building this application was whether to use Tomcat and &amp;quot;soup it up&amp;quot; by using Spring to add services Tomcat doesn&amp;#39;t provide itself, or whether to use a full Java EE container.  We could have made it work with the servlet container approach, since our application isn&amp;#39;t heavily &amp;quot;enterprisey&amp;quot; and we were initially reluctant to pay the complexity price of EJBs.  After looking at the Java EE 5 specification, though, we saw a lot of ways we could simplify and standardize things, such as using JSF 1.2 and coding to the Java Persistence API rather than using Hiberrnate APIs directly.
&lt;/blockquote&gt;

&lt;p&gt;Hey! I know that guy. Hi Adam.&lt;/p&gt;

&lt;p&gt;Is there a trend towards full app servers and away from plain old Tomcat? Is it because of strong open source Java EE offerings from Sun, JBoss and Apache? I don&amp;#39;t know, but I sure hope so.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/covalent_announces_support_for_roller</id>
        <title type="html">Covalent announces support for Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/covalent_announces_support_for_roller"/>
        <published>2007-02-08T17:32:54+00:00</published>
        <updated>2007-02-09T01:32:54+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Somehow I missed the &lt;a href=&quot;http://blog.covalent.net/roller/covalent/date/20070122&quot;&gt;Jan. 22, 2007 announcement&lt;/a&gt;, which was made on Covalent&amp;#39;s Roller-based blog. According to the announcement, Covalent will support Roller, eleven other Apache and Spring on a &amp;quot;per incident basis.&amp;quot;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/despotism_at_jboss_org</id>
        <title type="html">Despotism at JBoss.org</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/despotism_at_jboss_org"/>
        <published>2007-02-08T09:51:33+00:00</published>
        <updated>2007-02-08T17:51:33+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="jboss" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="redhat" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;And I mean that in the nicest way possible, i.e. the &lt;a href=&quot;http://codehaus.org/Manifesto&quot;&gt;Codehaus way&lt;/a&gt;.&lt;/p&gt;&lt;blockquote&gt;&lt;a href=&quot;http://www.fnokd.com/2007/02/07/the-metamorphosis/&quot;&gt;Bob McWhirter&lt;/a&gt;: Ultimately all open-source survives and grows based upon goodwill.
Tending to the community is required, else you risk alienating your own
users. I aim to use my experiences from a variety of open-source
projects and communities to make sure the JBoss community is one of
which Iâ&#128;&#153;m proud to be a member.&lt;/blockquote&gt;&lt;p&gt;Congrats Bob. Sounds like a great new job. This mean you&amp;#39;ll be coming to Raleigh more often?&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/voting_for_roller_graduation</id>
        <title type="html">Voting for Roller graduation</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/voting_for_roller_graduation"/>
        <published>2007-02-05T13:02:13+00:00</published>
        <updated>2007-02-05T21:02:13+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">The Roller team voted last week for graduation to top-level project status. The next step is to call for a vote on the Apache Incubator mailing list. I&amp;#39;m hopeful that the nearly two year journey that started when Danese Cooper sent me off to ApacheCon US 2004 in Vegas is nearly over. So far, life at Apache has been great for Roller and it can only get better with graduation. Wish us luck...</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/raible_wants_to_know_what</id>
        <title type="html">Raible wants to know: what&amp;#39;s it like to work at Sun?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/raible_wants_to_know_what"/>
        <published>2007-02-01T08:38:11+00:00</published>
        <updated>2007-02-01T16:38:11+00:00</updated> 
        <category term="Sun" label="Sun" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Matt Raible has been talking to folks at Sun (including me) about working for Sun. Now he&amp;#39;s using his blog as part of the interview process. He asks:&lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;For those folks out there that have worked for Sun - what&amp;#39;s it like? Is
it a good place to work these days? Would you recommend it for a
passionate open source developer like myself that likes to make
contractor rates and take lots of vacation?&lt;/blockquote&gt;&lt;p&gt;I&amp;#39;ve already talked to him and told him what I think. We didn&amp;#39;t talk about vacation, which is a disappointing two weeks for a new employee, but other than that I think Sun is a &lt;i&gt;great&lt;/i&gt; place to work for a passionate open source developer. If you work at Sun or worked at Sun, leave a &lt;a href=&quot;http://raibledesigns.com/page/rd?entry=roller_as_a_photoblog&quot;&gt;comment on Matt&amp;#39;s blog&lt;/a&gt; or send him an &lt;a href=&quot;http://raibledesigns.com/contact.jsp&quot;&gt;email&lt;/a&gt; and tell him about your Sun experience.&amp;nbsp;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/open_source_ghetto_at_javaone</id>
        <title type="html">Open source ghetto at JavaOne?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/open_source_ghetto_at_javaone"/>
        <published>2007-01-12T12:57:17+00:00</published>
        <updated>2007-01-12T20:57:57+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javaone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Geir&amp;#39;s got a &lt;a href=&quot;http://blogs.codehaus.org/people/geir/archives/001484_can_we_please_have_an_open_source_ghetto_at_javaones_pavilion.html&quot;&gt;great idea&lt;/a&gt; for JavaOne. Hope it&amp;#39;s not too late for 2007.</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/new_job</id>
        <title type="html">New job at Sun</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/new_job"/>
        <published>2007-01-05T17:14:40+00:00</published>
        <updated>2007-01-06T01:15:58+00:00</updated> 
        <category term="Sun" label="Sun" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I mentioned that I&amp;#39;ve got a new job at Sun and it begins Monday, so I guess it&amp;#39;s time to explain. &lt;/p&gt;&lt;p&gt;Since I &lt;a href=&quot;http://rollerweblogger.org/roller/entry/full_time_roller&quot;&gt;joined Sun&lt;/a&gt; two years ago I&amp;#39;ve been working in the .Sun Engineering organization, the team that runs sun.com and &lt;a href=&quot;http://blogs.sun.com&quot;&gt;blogs.sun.com&lt;/a&gt;. In that time we&amp;#39;ve taken &lt;a href=&quot;http://rollerweblogger.org/project&quot;&gt;Roller&lt;/a&gt; through three major releases, made massive improvements to the Roller code-base, helped grow the Roller community at Apache and delivered new features and improvements on a monthly basis. It&amp;#39;s been a truly wonderful experience and I&amp;#39;ve learned a lot from Will Snow&amp;#39;s amazing team, but now that Roller has matured and stabilized I&amp;#39;m ready to start working in some new directions.&lt;br&gt;&lt;/p&gt;&lt;p&gt;On Monday I&amp;#39;ll move to the Java EE organization (under Tony Ng) where Sun&amp;#39;s working on some very interesting and very cool technologies from server-side scripting with &lt;a href=&quot;https://phobos.dev.java.net/&quot;&gt;Phobos&lt;/a&gt; and &lt;a href=&quot;http://www.headius.com/jrubywiki/index.php/JRuby_on_Rails&quot;&gt;JRuby on Rails&lt;/a&gt;, &lt;a href=&quot;https://wadl.dev.java.net/&quot;&gt;RESTful approaches&lt;/a&gt; to web services and client-side UI goodness with &lt;a href=&quot;https://ajax.dev.java.net/&quot;&gt;JMaki&lt;/a&gt;. I&amp;#39;m very excited about the move and getting a chance to get involved with those technologies, but I can&amp;#39;t talk yet about the specific product(s) I&amp;#39;ll be working on. I can say this: I&amp;#39;ll continue to be very closely involved with Roller development and I&amp;#39;ll continue my work with RSS/Atom, &lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;ROME&lt;/a&gt; and the &lt;a href=&quot;https://blogapps.dev.java.net/&quot;&gt;Blogapps&lt;/a&gt; project. And, of course, I&amp;#39;ll continue blogging Roller so stay tuned.&lt;br&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/opensolaris_in_2007</id>
        <title type="html">OpenSolaris in 2007</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/opensolaris_in_2007"/>
        <published>2007-01-02T09:03:00+00:00</published>
        <updated>2007-01-02T17:03:00+00:00</updated> 
        <category term="Sun" label="Sun" />
        <category term="opensolaris" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;blockquote&gt;&lt;a href=&quot;http://blogs.zdnet.com/Murphy/?p=763&quot;&gt;Paul Murphy&lt;/a&gt;: By the end of the year the OpenSolaris community will be widely
recognised as larger and more active than the Linux community - and
every competing OS developer community except Microsoft&amp;#39;s will have
copied the key ideas including its organisational structure, the core
provisions in the community development license, and Solaris specific
technologies including ZFS and Dtrace.&lt;/blockquote&gt;&lt;p&gt;That&amp;#39;s a nice way to start the new year. No doubt plenty of &lt;a href=&quot;http://blogs.sun.com&quot;&gt;Sun bloggers&lt;/a&gt; will be linking to Paul&amp;#39;s predictions.&lt;br&gt;
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/planet_in_a_mind_map</id>
        <title type="html">Roller-Planet mind map</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/planet_in_a_mind_map"/>
        <published>2006-12-22T22:16:15+00:00</published>
        <updated>2006-12-24T04:20:07+00:00</updated> 
        <category term="Blogging" label="Blogging" />
        <category term="atom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="planet" 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/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I&amp;#39;m glad I was able to help &lt;a href=&quot;http://blogs.sun.com/webmink/entry/blogger_downgrade%20&quot;&gt;Simon&lt;/a&gt; get his personal planet back online yesterday. And I&amp;#39;m glad the task was fairly easy. All Simon needed as a new version of &lt;a href=&quot;https://blogapps.dev.java.net/&quot;&gt;Blogapps&lt;/a&gt; &lt;a href=&quot;https://blogapps.dev.java.net/java/ch11/readme.html&quot;&gt;PlanetTool&lt;/a&gt; updated to use &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_0_9_beta_is&quot;&gt;ROME 0.9&lt;/a&gt; and I was planning on doing that anyway. &lt;/p&gt;&lt;p&gt;What&amp;#39;s PlanetTool you wonder? PlanetTool is a command-line program which reads a set of RSS/Atom newsfeeds and then uses a set of templates to generate a planet site with HTML, RSS, Atom, OPML and other representations. Simon uses it to bring together his personal blog, Sun blog, del.icio.us links and Flickr.com photos into a single webpage and a single feed. If you subscribe to that feed, you&amp;#39;ll get just about everything that Simon publishes to the web. &lt;/p&gt;&lt;p&gt;If you&amp;#39;re interested in learning more about PlanetTool, here are some of my previous posts on the topic:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/try_planet_tool_it_s&quot;&gt;Try PlanetTool, it&amp;#39;s easy!&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_texen_planet_roller&quot;&gt;ROME + Texen = PlanetTool&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/planet_roller_internals&quot;&gt;PlanetTool internals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;It&amp;#39;s also covered in Chapter 11 of &lt;a href=&quot;http://manning.com/dmjohnson&quot;&gt;RSS and Atom in Action&lt;/a&gt;.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The above title &lt;i&gt;Try PlanetTool, it&amp;#39;s easy!&lt;/i&gt; is a little misleading, but it brings me to my point. PlanetTool is only easy if you&amp;#39;re a developer or a power-user; somebody who can handle running Java on a server, editing an XML config file and setting up a cron job. Simon could handle it, but I&amp;#39;d like to make planets easier.&lt;br&gt;&lt;br&gt;In fact, I&amp;#39;d like to make it as easy to create a planet as it is to create a blog. This past week, I&amp;#39;ve been thinking about how to do that by taking the simple ROME powered Roller-Planet code, which is found in both Roller and PlanetTool, and build it into a multi-user planet server -- kinda like Roller, but for planets instead of blogs. To get my thoughts into digital form I worked up a little &lt;a href=&quot;http://freemind.sourceforge.net/wiki&quot;&gt;FreeMind&lt;/a&gt; mind-map on the topic, dumped it to text, added some wiki syntax and some screen-shots. The result is this: a &lt;a href=&quot;http://rollerweblogger.org/wiki/Wiki.jsp?page=RollerPlanetMindMap&quot;&gt;RollerPlanetMindMap&lt;/a&gt; that outlines ideas for the future development of Roller-Planet. &lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/java_is_free</id>
        <title type="html">Java is free!</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/java_is_free"/>
        <published>2006-11-13T12:02:17+00:00</published>
        <updated>2006-11-13T20:07:02+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://www.sun.com/software/opensource/java/getinvolved.jsp&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.sun.com/software/opensource/java/img/dukesource180.gif&quot; style=&quot;margin:8px;&quot; alt=&quot;Get the Source&quot; title=&quot;OpenSourceJava&quot;&gt;&lt;/a&gt;
&lt;p&gt;
By now, everybody&amp;#39;s heard the &lt;a href=&quot;http://www.sun.com/software/opensource/java/&quot;&gt;good news&lt;/a&gt; that Java[1] is being released under the &lt;a href=&quot;http://www.gnu.org/copyleft/gpl.html&quot;&gt;General Public License&lt;/a&gt; (GPL v2), the same free software license used by Linux. A dual-license arrangement will allow Sun to continue to offer commercial licenses. Sun&amp;#39;s Java EE implementation and developer tools, which had already been released as open source under Sun&amp;#39;s MPL-based &lt;a href=&quot;http://www.sun.com/cddl/cddl.html&quot;&gt;CDDL&lt;/a&gt; license are being relicensed under a triple license of GPL, CDDL and commercial licenses.&lt;br&gt;&lt;br&gt;The usual &amp;quot;how&amp;#39;s this good for Joe Java developer?&amp;quot; and &amp;quot;how&amp;#39;s Sun gonna survive?&amp;quot; questions are coming up on the forums and blogs. The &lt;a href=&quot;http://www.sun.com/software/opensource/java/faq.jsp&quot;&gt;Open Source Java FAQ&lt;/a&gt; answers those questions very well, but here&amp;#39;s my take. A truly free/open source Java is good for Java developers and what&amp;#39;s good for Java developers is good for Sun. GPL is a good choice because it&amp;#39;s truly and undeniably free/open source and the viral nature of GPL drives innovation back to the center, which prevents closed source forks of Sun&amp;#39;s Java implementations. &lt;br&gt;&lt;br&gt;So, how&amp;#39;s this good for Java developers? Finally, Linux distros can bundle what is arguably most popular/well known, high-quality, high-performance, multi-platform and well-supported Virtual Machine there is. And that&amp;#39;s not just good for Java developers, &lt;a href=&quot;http://jruby.codehaus.org/&quot;&gt;JRuby&lt;/a&gt; is starting to look pretty &lt;a href=&quot;http://www.infoq.com/news/jruby-team-making-progress&quot;&gt;good too&lt;/a&gt;. That will result in more developers choosing the Java VM, more ISP/hosting providers supporting Java and more users using Java. That&amp;#39;s good for Java&amp;nbsp; developers.&amp;nbsp; And and it&amp;#39;s good for Sun -- if Sun, the ultimate experts in Java, can&amp;#39;t make mo&amp;#39;money from mo&amp;#39;Java then I just don&amp;#39;t know what to say.&lt;br&gt;&lt;br&gt;Why is GPL a good choice? GPL and dual-licensing gives Sun the best of both worlds. GPL means Java is truly free/open source, which satisfies the free/open source community and the growing number of governments and orgs that are mandating open source. The viral nature of GPL guarantees that innovation is driven back to the center, i.e. you can modify the Java VM and redistribute it, but you must release your mods free for all under the GPL (and trademark law says you can&amp;#39;t call it Java). And the other world I referred to? Licensees who don&amp;#39;t want GPL can keep on licensing under commercial-friendly terms and most probably will.&lt;/p&gt;&lt;p&gt;So it&amp;#39;s all good and big congratulations to &lt;a href=&quot;http://danesecooper.blogs.com/divablog/2006/11/the_people_who_.html&quot;&gt;all the folks&lt;/a&gt; who worked to make open source Java possible!&amp;nbsp;&lt;/p&gt;&lt;p&gt;[1] By which I mean Java(TM) technology and include Java SE, ME, EE, etc.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/latest_links4</id>
        <title type="html">Latest links</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/latest_links4"/>
        <published>2006-10-27T00:00:39+00:00</published>
        <updated>2006-10-27T07:19:07+00:00</updated> 
        <category term="Links" label="Links" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sun" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.eweek.com/article2/0,1759,2035539,00.asp&quot;&gt;OpenSolaris distributions show promise | eWeek&lt;/a&gt;&lt;br&gt; &amp;quot;these distributions point to intriguing new directions for Solaris&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.eweek.com/article2/0,1759,2035516,00.asp&quot;&gt;New file system boosts the already excellent Solaris 10 | eWeek&lt;/a&gt;&lt;br&gt; &amp;quot;One of the most impressive things about ZFS is how easy it is to use&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoworld.com/article/06/10/26/HNsunnarrowsloss_1.html?source=rss&amp;url=http://www.infoworld.com/article/06/10/26/HNsunnarrowsloss_1.html&quot;&gt;Sun narrows loss significantly | InfoWorld&lt;/a&gt;&lt;br&gt; &amp;quot;Stronger sales of its Solaris 10 operating system helped...&amp;quot;&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.blojsom.com/blog/david/blojsom/2006/10/26/Blojsom-Google-Maps-Template-Mashup&quot;&gt;blojsom/Google Maps template mashup&lt;/a&gt;&lt;br&gt; &amp;quot;You&amp;#39;re looking at blog entries &amp;#39;rendered&amp;#39; on a map of the earth&amp;quot;&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://developers.sun.com/prodtech/portalserver/reference/techart/open-src-overview.html&quot;&gt;Open-Source Portal Initiative at Sun, Part 1: Overview&lt;/a&gt;&lt;br&gt; Overview of plans to transition Sun&amp;#39;s portal server to an open source project at Java.Net&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developers.sun.com/prodtech/portalserver/reference/techart/portlet-repository.html&quot;&gt;Open-Source Portal Initiative at Sun, Part 2: Portlet Repository&lt;/a&gt;&lt;br&gt; Overview of Open Source Portlet Repo, which includes RSS feed viewing and blog editing portlets&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://scottmace.typepad.com/imanager/2006/10/the_dictators_f.html&quot;&gt;The dictator&amp;#39;s free cookie day?&lt;/a&gt;&lt;br&gt; Opening Move podcast with Simon Phipps, David Van Couvering and yours truly&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471785431.html&quot;&gt;Wiley::Professional Apache Geronimo&lt;/a&gt;&lt;br&gt; by Bruce &amp;quot;this one time, at band camp&amp;quot; Snyder, Jeff Gerender and Sing Li&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webreference.com/reviews/rss_atom_action/index.html&quot;&gt;RSS and Atom in Action: Newsfeed Formats&lt;/a&gt;&lt;br&gt; Excerpts from Chapter 4 of RSS and Atom in Action, at WebReference.com&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/apachecon_us_2006_highlights</id>
        <title type="html">ApacheCon US 2006 highlights</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/apachecon_us_2006_highlights"/>
        <published>2006-10-15T23:16:11+00:00</published>
        <updated>2006-10-16T07:29:15+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">


I&amp;#39;m finally back home after a week in Austin, TX attending ApacheCon during the weekdays and exploring the city with Andi over the weekend. I always find ApacheCon an enjoyable and very productive conference. Here are some highlights from my point of view.&lt;br&gt;&lt;br&gt;Getting to know the Struts, MyFaces and Shale teams. I got to spend some time with the Struts, Shale and MyFaces folks at the hackathon and at the various parties. It&amp;#39;s really cool how well the teams get along and even contribute to each other&amp;#39;s projects, despite the fact that they&amp;#39;re working on competing Java web application frameworks.&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.us.apachecon.com/html/archive.html#WE9&quot; target=&quot;_self&quot;&gt;Don Brown&amp;#39;s talk&lt;/a&gt;.
Don gave a very professional and persuasive talk on Struts 2.0. His
coverage of themes and plugins and the new tags convinced me that I&amp;#39;ve
got to give Struts 2.0 a closer look before I go any farther with JSF. &lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.us.apachecon.com/html/archive.html#FR29&quot; target=&quot;_self&quot;&gt;Stefano Mazzocchi&amp;#39;s talk&lt;/a&gt;
on &amp;quot;patterns in community building for open development projects&amp;quot; drawn
from his 9 years of involvement at the ASF was wonderful and full of
lots of useful tips and memorable analogies. I&amp;#39;d read about the &amp;quot;good
ideas and bad code&amp;quot; pattern before (&lt;a href=&quot;http://mail-archives.apache.org/mod_mbox/incubator-general/200407.mbox/%3C40F2A04E.5010602@apache.org%3E&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.openp2p.com/pub/a/p2p/2003/01/07/lazyweb.html&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt;) and it was interesting to hear Stefano explain it himself.&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Clifford_Stoll&quot; target=&quot;_self&quot;&gt;Clifford Stoll&lt;/a&gt;
put on quite a show in the opening keynote. He frantically raced and
hopped around the room firing lasers through beam splitters and Crayola
Markers at monkeys and actually measured the speed of light and the
speed of sound right there in the room with amazing accuacy -- lots of
thought provoking fun. He also stole Craig McClannahan&amp;#39;s coffee, drank it up and claimed it was chocolate milk. Unfortunately, I missed the &lt;a href=&quot;http://www.benetech.org/&quot; target=&quot;_self&quot;&gt;Benetech&lt;/a&gt; keynote. &lt;br&gt;&lt;br&gt;The Sun UnBOF/open source smack down between Tom Marble and Gier
Magnusson got off to a shaky start, but once other folks joined in it
started to work, at least for me. It wasn&amp;#39;t really a smackdown and
there wasn&amp;#39;t really a concrete outcome, but it was definitely an
interesting discussion of open source community and licensing issues. &lt;br&gt;&lt;br&gt;Getting to know my Sun co-workers. I work remotely, so I really enjoy spending time with Sun folks and getting to know my co-workers despite the fact&amp;nbsp; that they&amp;#39;re from different areas of Sun. This time around, I spent time with the open source and Java DB teams.&lt;br&gt;




</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/java_libre</id>
        <title type="html">Java Libre</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/java_libre"/>
        <published>2006-10-10T09:40:01+00:00</published>
        <updated>2006-10-10T21:43:53+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">


I got together with Sun co-worker &lt;a href=&quot;http://blogs.sun.com/tmarble/&quot; target=&quot;_self&quot;&gt;Tom Marble&lt;/a&gt; (and &lt;a href=&quot;http://tomtreo.blogspot.com/&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt;) for dinner last night. We went to a nice Cuban restaurant called &lt;a href=&quot;http://cubalibreaustin.com/&quot; target=&quot;_self&quot;&gt;Cuba Libre&lt;/a&gt; only a short walk from the hotel. Shortly after we arrived, we just happened to run into &lt;a href=&quot;http://incubator.apache.org/harmony/&quot; target=&quot;_self&quot;&gt;Apache Harmony&lt;/a&gt; folks &lt;a href=&quot;http://blogs.codehaus.org/people/geir/&quot; target=&quot;_self&quot;&gt;Geir Magnusson&lt;/a&gt; and &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=35418&quot; target=&quot;_self&quot;&gt;Tim Ellison&lt;/a&gt; (from IBM Hursley). A little later Sara Dornsife showed up. We had
a nice dinner and enjoyed the mojitos. If you know Tom and Gier, then
you can probably guess the #1 topic of conversation. We talked about
the pros and cons of various open source licenses for Java, the Linux
ecosystem vs. the Java ecosystem, secret sauce and fair playing fields.
All-and-all a very interesting conversation, but good grief, it&amp;#39;s a complex issue -- I&amp;#39;m glad I&amp;#39;m not the one making that decision.&amp;nbsp;




</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/made_it_to_apachecon</id>
        <title type="html">Made it to ApacheCon</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/made_it_to_apachecon"/>
        <published>2006-10-09T17:11:39+00:00</published>
        <updated>2006-10-10T00:42:34+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">


I didn&amp;#39;t bring my normal assortment of carry-on sauces, lotions, juices and pastes today so air travel was no problem at all. I made it to Austin and &lt;a href=&quot;http://www.us.apachecon.com/&quot; target=&quot;_self&quot;&gt;ApacheCon&lt;/a&gt; around two, checked in and made myself comfortable in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hackathon&quot; target=&quot;_self&quot;&gt;hackathon&lt;/a&gt;. Within minutes I was talking tech; bitching about my recent JSF experience with one of the MyFaces developers and discussing the upcoming Velocity release with members of the Velocity team. And hey look, there&amp;#39;s the afternoon beer delivery. This is gonna be fun.&lt;br&gt;


</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/this_blog_is_not_open</id>
        <title type="html">This blog is not open source</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/this_blog_is_not_open"/>
        <published>2006-09-20T16:12:56+00:00</published>
        <updated>2006-09-20T23:20:53+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">
&lt;blockquote&gt;&lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2006/09/19/Licensing-Modes&quot; target=&quot;_self&quot;&gt;Tim Bray&lt;/a&gt;:
I wonder if Iâ&#128;&#153;m weird, because I discover that my attitudes towards code and,
non-code are different.  The notion of restricting anyone from &lt;em&gt;using&lt;/em&gt;
code I contribute to feels entirely foreign, and if they want to use it
to make some money, good on â&#128;&#153;em.  But I have &lt;em&gt;strong&lt;/em&gt; negative feelings
about other people making money from my words or pictures without involving
me.&lt;/blockquote&gt;I don&amp;#39;t think that&amp;#39;s weird at all. I feel the same way and almost without thinking I chose the Creative Commons &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot; target=&quot;_self&quot;&gt;by-nc-sa&lt;/a&gt; license for my blog, but for my code I prefer the Apache license, which is just about the most commercial friendly license there is.&lt;br&gt;&lt;br&gt;I agree with &lt;a href=&quot;http://diveintomark.org/archives/2006/09/15/cc-by-nc&quot; target=&quot;_self&quot;&gt;Mark Pilgrim&lt;/a&gt; that chosing a license with a no-commercial-use restriction is by &lt;a href=&quot;http://opensource.org/docs/definition.php&quot; target=&quot;_self&quot;&gt;definition&lt;/a&gt; more restrictive than chosing an open source license, but I wouldn&amp;#39;t say it&amp;#39;s &lt;span style=&quot;font-style:italic;&quot;&gt;overly&lt;/span&gt; restrictive. And I hold no grudge against Creative Commons. Writers, artists and musicians should be free to choose the license terms they like and that&amp;#39;s why &lt;a href=&quot;http://creativecommons.org/&quot; target=&quot;_self&quot;&gt;Creative Commons&lt;/a&gt; is a good thing -- it helps folks to do just that.&lt;br&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/socialtext_open_good_but_under</id>
        <title type="html">Socialtext Open good, but under the MPL?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/socialtext_open_good_but_under"/>
        <published>2006-07-25T20:30:30+00:00</published>
        <updated>2006-10-27T08:03:11+00:00</updated> 
        <category term="General" label="General" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wiki" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">I&amp;#39;m glad to hear that &lt;a href=&quot;http://www.socialtext.com/node/88&quot; target=&quot;_self&quot;&gt;Socialtext Open&lt;/a&gt; is now the first &amp;quot;commercial open source&amp;quot; wiki and I&amp;#39;m interested to see how the Socialtext move plays out. I do wonder why they choose MPL instead of &lt;a href=&quot;http://www.sun.com/cddl/&quot; target=&quot;_self&quot;&gt;CDDL&lt;/a&gt;, which is basically MPL plus bug fixes (see the &lt;a href=&quot;http://www.sun.com/cddl/CDDL_why_summary.html&quot; target=&quot;_self&quot;&gt;summary of changes&lt;/a&gt;).&lt;br&gt;&lt;br&gt;Tags: topic:[CDDL], topic:[Open Source], topic:[wiki]&lt;br&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/switch_again</id>
        <title type="html">Switch again?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/switch_again"/>
        <published>2006-06-05T22:22:01+00:00</published>
        <updated>2006-06-06T05:24:41+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">
&lt;br&gt;I&amp;#39;m in the market for a new laptop and I&amp;#39;ve been thinking about doing the very same thing that &lt;a href=&quot;http://diveintomark.org/archives/2006/06/02/when-the-bough-breaks&quot; target=&quot;_self&quot;&gt;Mark Pilgrim just did&lt;/a&gt;, switching from a Mac to a Linux laptop. I wasn&amp;#39;t thinking about &lt;a href=&quot;http://www.gnu.org/philosophy/free-sw.html&quot; target=&quot;_self&quot;&gt;Freedom 0&lt;/a&gt; so much as I was thinking about my lap and my wallet. I don&amp;#39;t want to burn a hole in either one. I&amp;#39;ve read too many blog entries about Mac Books running too hot, too loud or not running at all. And all the while, I&amp;#39;ve been seeing rave reviews of Ubuntu everywhere I look. &lt;br&gt;&lt;br&gt;I don&amp;#39;t want to give up on Macs altogether. I like the multimedia stuff like iMovie, iDVD, iPhoto and GarageBand, but I don&amp;#39;t necessarily need those on my laptop. I can buy a Mac Mini for that stuff. I use my laptop for work and everything I need for development would run just fine on Ubuntu or maybe even Solaris/x86 (see Sun&amp;#39;s &lt;a href=&quot;http://www.sun.com/bigadmin/hcl/data/sol/systems/views/all_laptops_certified.page1.html&quot; target=&quot;_self&quot;&gt;HCL&lt;/a&gt; and the one at &lt;a href=&quot;http://www.bolthole.com/solaris/x86-laptops.html&quot; target=&quot;_self&quot;&gt;Bolthole.com&lt;/a&gt;). What I need is speed, Java, Netbeans and sometimes Open Office (which I &lt;span style=&quot;font-style:italic;&quot;&gt;know&lt;/span&gt; will run better on Linux). Clearly I need to do some research. Are the Mac Books really too hot and flakey? Will be savings be significant? Will wifi and sleep-mode work as flawlessly on Linux as with Mac OS, what about Solaris? Will I be able to live without NetNewsWire?&lt;br&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/apachecon_eu_early_bird_discount</id>
        <title type="html">ApacheCon EU early bird discount ends tomorrow (June 6th)</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/apachecon_eu_early_bird_discount"/>
        <published>2006-06-05T15:25:26+00:00</published>
        <updated>2006-06-05T22:25:26+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;blockquote&gt;&lt;a href=&quot;http://blog.apachecon.com/apachecon-europe-sign-up-now-and-save/&quot; target=&quot;_self&quot;&gt;ApacheCon.com blog&lt;/a&gt;: Itâ&#128;&#153;s only a few days left until June 6th, the deadline for the Early Bird Discount! Sign up today and save 220 EUR to be part of the ultimate Apache experience in Europe.&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.eu.apachecon.com/&quot; target=&quot;_self&quot;&gt;ApacheCon Europe 2006&lt;/a&gt; will be held at the Burlington Hotel in Dublin, Ireland, June 26-30, 2006. The conference offers more than 70 top-quality sessions and 20 tutorials covering the whole spectrum of Apache projects and technologies.&lt;br&gt;&lt;br&gt;We look forward to seeing you in Dublin.&lt;/blockquote&gt;

</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/status_cc_world8</id>
        <title type="html">Status, CC: World</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/status_cc_world8"/>
        <published>2006-06-01T23:13:14+00:00</published>
        <updated>2006-06-03T07:38:26+00:00</updated> 
        <category term="Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;br&gt;It&amp;#39;s been a while since my last status, CC:World post, so here&amp;#39;s an update on the things I&amp;#39;m working on these days.&lt;br&gt;&lt;br&gt;&lt;a style=&quot;font-weight:bold;&quot; href=&quot;http://manning.com/dmjohnson&quot; target=&quot;_self&quot;&gt;RSS and Atom in Action&lt;/a&gt;. Because I added those two new chapters on Windows RSS and ROME, Manning had to renumber about 3/4 of the book. That took a bit longer than expected, but now the work is done and I&amp;#39;ve got the whole book in one big PDF file. I&amp;#39;ll do one final review this weekend and, if we can quickly wrap up the loose ends and the index, we&amp;#39;ll be off to the printers before the end of June.&lt;br&gt;&lt;br&gt;&lt;a style=&quot;font-weight:bold;&quot; href=&quot;http://blogapps.dev.java.net/&quot; target=&quot;_self&quot;&gt;Blogapps&lt;/a&gt; is the Java.Net project that I started to manage and support the Java and C# example code for RSS and Atom in Action. Now that the book is essentially done, it&amp;#39;s time for the Blogapps 1.0 release. I&amp;#39;ll create a 1.0 branch so that I can do bug fix releases like 1.0.1, 1.0.2, etc. -- but the code in that 1.0 branch will always match the code in the book. &lt;br&gt;&lt;br&gt;Once Atom protocol is complete, I&amp;#39;ll make the changes necessary to support it in a separate branch of the Blogapps project, because those changes may diverge significantly from the code in the book. Perhaps I&amp;#39;ll call that branch Blogapps 1.5 or even 2.0 depending on how different the new code is. After that, I hope to continune to improve the apps but making use of newer releases of ROME and perhaps Abdera.&lt;br&gt;&lt;br&gt;&lt;a style=&quot;font-weight:bold;&quot; href=&quot;http://incubator.apache.org/projects/roller.html&quot; target=&quot;_self&quot;&gt;Roller@Apache&lt;/a&gt;. &lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;/span&gt;Roller has been
in the Apache Software Foundation (ASF) incubator for almost a year now. We&amp;#39;ve been in limbo because Roller depends on a 3rd party library (Hibernate) that is licensed under the LGPL and ASF doesn&amp;#39;t like LGPL, but it&amp;#39;s still not clear if that LGPL dependency will prevent Roller fom graduating from the incubator. Recently, our ASF mentors told us that we can temporarily depend on LGPL components, but we cannot ship them. So we removed Hibernate from the release, added instructions to the installation guide explaining how download Hibernate separately and, thanks to Craig Russell, we&amp;#39;ve got the beginnings of a plan to eventually replace Hibernate with either JDO or EJB3/JPA. &lt;br&gt;
&lt;br&gt;&lt;a href=&quot;http://www.eu.apachecon.com/&quot; target=&quot;_self&quot;&gt;&lt;img src=&quot;http://www.rollerweblogger.org/resources/roller/apachecon-eu-2006.gif&quot; style=&quot;padding:0pt 7px 0px 0px;&quot; align=&quot;left&quot; border=&quot;0&quot;&gt;&lt;/a&gt;Apache Roller 2.3 (incubating). We&amp;#39;ve been trying to get the 2.3 release out for quite a while, ever since 2.2 in fact. Now that we&amp;#39;ve removed Hibernate from our release, we&amp;#39;ve been cleared to release 2.3 via Apache infrastructure (i.e. make the release files avialable on an apache.org site). That should happen very soon.&lt;br&gt;
&lt;br&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Apache Roller 3.0 (incubating)&lt;/span&gt;. The 3.0 release isn&amp;#39;t due for deployment or release until July, but this week I&amp;#39;ve been working like crazy to get the new Atlas frontpage stuff into a usable state so we can get some early feedback. Tomorrow is my self-imposed deadline and I&amp;#39;m just about ready to put together a test build.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a href=&quot;http://www.eu.apachecon.com/&quot; target=&quot;_self&quot;&gt;ApacheCon EU 2006&lt;/a&gt;&lt;/span&gt;. I&amp;#39;m giving a talk titled &lt;span style=&quot;font-style:italic;&quot;&gt;Roller: an open source blog server&lt;/span&gt;, which is essentiually a primer for new Roller users and developers. It&amp;#39;s the same talk I gave at ApacheCon US 2005, but I&amp;#39;m going to update it to cover the major changes in Roller since then (and fast, the slides were due last week).&lt;br&gt;
</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/jboss_sanitized_blogs_before_aquisition</id>
        <title type="html">JBoss sanitized blogs before aquisition?</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/jboss_sanitized_blogs_before_aquisition"/>
        <published>2006-04-10T13:01:28+00:00</published>
        <updated>2017-12-12T16:29:07+00:00</updated> 
        <category term="Blogging" label="Blogging" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jboss" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;br&gt;Back in 2004 I &lt;a target=&quot;_self&quot; href=&quot;http://rollerweblogger.org/roller/entry/fleury_on_open_source_girly&quot;&gt;linked&lt;/a&gt; to a blog post authored by JBoss exec Mark Fleury that called Red Hat &amp;quot;open source wannabes&amp;quot; and &amp;quot;girly men.&amp;quot; According to my referrers, people are looking for that old post using those keywords. Apparently, they&amp;#39;re not finding it because it&amp;#39;s been &lt;a target=&quot;_self&quot; href=&quot;http://jboss.org/jbossBlog/blog/mfleury/?permalink=5B557AB3231FE396D5C675A1367254DB.txt&quot;&gt;removed&lt;/a&gt; (but not from the &lt;s&gt;Google Cache&lt;/s&gt; Wayback Machine). I wonder why.&lt;br&gt;</content>
    </entry>
</feed>

