Blogging Roller

Dave Johnson on open web technologies, social software and software development


Roller 2.1-dev

Roller 2.1 is still under development but it's essentially feature complete. I'm running the latest build on this site, so you may see some quirks.

Tags: Roller

Ocadia

I ported another one Rebecca Wei's beautiful Wordpress themes to Roller, Ocadia You can see the results on Carl's blog. It was an easy port because the underlying HTML is almost identical to that in Almost Spring.

Comments are back, by the way.

Tags: Roller

Porting Wordpress themes to Roller

It's really not that hard to do, but a couple of new Roller macros would make it a lot easier. After an hour or so, I ported Almost Spring to Roller. It's running on Otto's blog. I think I'm going to try a couple more.

I case you're wondering, most Wordpress themes are licensed under GPL. That means we can't include them in Roller (since Roller is Apache licensed), but somebody could offer a separately downloadable theme-pack.

One thing I noticed during this exercise is that Wordpress themes are dangerous. They're written in PHP, so you don't want Joe average user to edit them. As the Wordpress.com FAQ says templates are "untrusted code that we haven’t verified" so template editing and importing are banned. Contrast that with Roller, where templates are written in Velocity and are therefore safe for end-user customization.

Tags: Roller

Roller 2.0 ships!



Roller 2.0 is now available on Roller's Java.Net download space. Roller 2.0 is a major release that includes:

  • Full support for group blogging. Users can have multiple blogs and can invite other users to join group blogs with three permission levels and simple workflow.
  • Web user interface redesign. The entire UI has been reworked to support group blogging, simplify and enhance the user experience.
  • Additional database support. Database creation scripts added for Apache Derby, IBM DB2 and Oracle (in addition to existing MySQL, PostgreSQL and HSQL-DB support).
  • Superusers. Global administrators can now admin and edit any blog in the system.
  • And lots more!. The release also includes numerous bug fixes and small improvements, see CHANGES.txt for the full list of changes.

This is a new release, but the Roller 2.0 codebase has been in use for weeks at a number of production sites, including blogs.sun.com and this site. Here are links to the updated documentation:

  • User Guide
  • Macro Reference
  • Installation Guide
  • Upgrade Guide - how to upgrade Roller 1.x to Roller 2.0
  • Configuration Guide
  • Javadocs

As usual, if you run into installation or upgrade problems, please seek assistance on the Roller mailing lists. Please report bugs and enhancement requests to Roller's JIRA based issue tracker.

Happy Thanksgiving everybody and a big thanks to everybody who helped out with this release!

Enjoy.

Tags: Roller

Roller 2.0 ready for release

We've got the final build and the votes needed to release, so expect the Roller 2.0 release in the next couple of days.

Update: Thursday, Nov. 24, 2005 -- Happy thanksgiving!
   bash-3.00$ svn copy \
   https://svn.apache.org/repos/asf/incubator/roller/trunk \
   https://svn.apache.org/repos/asf/incubator/roller/tags/roller_2.0 \
   -m "Tagging Roller 2.0 release"

   Committed revision 348727.
   bash-3.00$
Tags: Roller

Status, CC: world


It's been a while since I did a status report, so here are some updates on the public projects I'm working on at work and in my off-hours.

Roller 1.3 released: it's been announced on the project blog and is now available on Java.Net. It's a minor bug fix release and I expect that most sites will want to wait for Roller 2.0 instead of installing 1.3.

Roller 2.0 release on the way: blogs.sun.com has been running a Roller 2.0-based build for a couple of weeks now, but the Roller project still hasn't packaged up a final release. We've been testing a release candidate of Roller 2.0, doing final testing and debugging. We may be able to release 2.0 within the next week, depending on how testing goes. Unfortunately Javalobby is running into some problems will the upgrade process and they may turn out to be 2.0 bugs. Want to know more about Roller 2.0? Check the Roller 2.0 documentation summary page.

Roller 2.1 development starting: it will focus on spam prevention/management and performance improvements, for details check the Roller 2.1 proposal page.

The Roller@Apache move: Roller has been in the Apache Software Foundation (ASF) Incubator for about five months now. Roller code is in ASF's Subversion repository, a status page is in place, dev/user discussions take place on the ASF mailing lists and our ASF mentors are listening in and advising us. The Roller dev community seems to be growing, thriving and recently, really pulling together to get 1.3 and 2.0 out the door. That's all good, but there have been some hold-ups.

Nothing is holding up Roller development, but we've been waiting for ASF's new LGPL license policy. We will eventually have to deal with our LGPL dependency, but until ASF announces its new LGPL policy, we won't know exactly what we need to do.

Recently there was some question about whether we should be allowed to make the Roller 1.3 and Roller 2.0 releases, since they contain and depend on LGPL licensed components (most notably Hibernate). We resolved that bit of controversy and are now cleared to release Roller 1.3 (which we did) and Roller 2.0 (coming soon). Since we're in the ASF Incubator, our releases are not official/endorsed ASF releases.

RSS and Atom in Action still in limbo: the book is delayed because the Atom protocol is not complete. Draft 06 wasn't bad, but it was missing important pieces, like category support. Unfortunately, Atom protocol is not just incomplete, it's also in flux. The working group is having a very hard time dealing with introspection and discovery. So, I can't finish Chapter 8, but we've have been moving the rest of the chapters through production.

Blogapps project born: I started a Java.Net project called Blogapps for the RSS and Atom in Action examples and uploaded the code, but I haven't made a release yet. I hope to release the examples bundle and the Blogapps Demo Server, which is a super easy-to-install blog/wiki server based on Tomcat, HSQLDB, Roller and JSPWiki.

Note that this blog is my personal blog and I don't claim to speak for my employer, my publisher, the Roller project or the ASF.

Tags: Roller

Today's links [November 12, 2005]

Tags: Roller

Roller-based geo-aggregator under development

Migs Paraz has got some interesting ideas about building a geo-aware blog community aggegator, based in part on the Recovery 2.0 call to convene post and thread at Jeff Jarvis's site. And what's more, he's started a proof-of-concept site, based on Roller's built-in <a href= "http://www.rollerweblogger.org/wiki/Wiki.jsp?page=AdministrationGuide_1.x#ref-AdministrationGuide_1.x-4"> planet aggregator, Google Maps API and the GeoInfo RSS module. It didn't work in all my browsers, so here's a screen-shot:

<img src="http://static.flickr.com/24/62061761_0c4c0d97ed_m.jpg" alt="Roller with geo-aggregation via Google maps integration" />

Tags: Roller

Thanks Max

Max Rudman just submitted a patch for Oracle support in Roller. It looked very safe, so we added it into the Roller 2.0 code base. I don't believe any of the Roller developers run Oracle at this time. That means we really can't support it very well unless Max is about, but the code is there, so there's hope for those who wish to run Roller with Oracle. Thanks Max!

Tags: Roller

Atom protocol draft 06 for Roller, Atom format 1.0 for ROME

It took most of the weekend, but I implemented both an Atom protocol draft 06 client and a server. I committed the client to the Blogapps project and the server to Roller trunk (in the sandbox of course). Along the way, I updated my Atom 1.0 patch for ROME to support relative URI parsing and multiple authors per feed and entry. I sent that to the ROME dev list.

I hope to put together a Blogapps release this week containing both client and server. Anybody up for Atom protocol interop testing?

Tags: Roller

Scripting Roller with Groovy

A Roller developer who's just getting started wrote in with the question "what I'd like to know is what Roller API we should use for doing each of the following":

  • creating a new blog
  • creating a blog entry
  • entry comments
  • categories and blogroll

I don' really like the term "Roller API" because Roller is an application, not a toolkit. With the possible exception of a couple of plugin interfaces, we don't really promise to support a stable API from release to release. So, I'll show you how to use the Roller classes to do the things you want to do, but keep in mind that those classes are likely to change in future Roller releases.

If there is a Roller API, it's gotta be the manager interfaces in org.roller.model and the POJOS in org.roller.pojos. And if you want to learn how to use the API, the best places to look for examples are the Struts actions in all those packages under org.roller.presentation and the JUnit tests under the tests directory. I know its a pain to tromp around somebody else's code trying to figure out what's going on, so I'll give you some easy to follow examples. But I'm gonna have some fun; I'm going to present the examples in Groovy.

Get ready to groove#

First, you'll need to install Groovy, which you can get at the Codehaus. I'm using groovy-1.0-jsr-03 and I've got it installed in the directory /Applications/Java/groovy-1.0-jsr-03. Next, you'll need to install Roller 2.0. Since Roller 2.0 has not been released yet, you'll need to get it from Subversion repository and build it yourself. Follow the instructions in the Roller Developer Guide.

To prepare to run Groovy with Roller, create a directory and put the script and config files below into it. You can find examples of the files below in the Resources section at the end of this article.

  • run-groovy: UNIX sh script that adds Roller jars and Roller classes to the Groovy classpath and then runs Groovy. You'll need to edit this file to set ROLLER_HOME, GROOVY_HOME and JDBCJAR.
  • hibernate.cfg.xml: same as the Hibernate config that comes with Roller, except it contains JDBC DriverManager connection parameters instead of a JNDI DataSource reference. You'll have to add your database connection parameters in this time (i.e. username, password and connection URL).
  • ehcache.xml: just a dummy config to satisfy ~EHCache.
  • log4j.properties: just a dummy config to satisfy ~Log4J.

It may be possible to avoid that run-groovy script, but you'll probably have to the Roller jars to a ~/.groovy/lib directory or some such thing. If you want to go that route, check the docs on Running Groovy.

Once you've got those files in place, you're ready to groove with Roller.

Example #0: Connecting to Roller#

First, let's test our ability to connect to Roller. Open up a command-prompt window, cd to the directory where those config files live and create the following Groovy script with the name rollertest1.gy:

rollertest1.gy

println "\nCreating Roller instance... "
t0 = System.currentTimeMillis();
roller = org.roller.model.RollerFactory.getRoller();
t1 = System.currentTimeMillis();
println "   Created Roller implementation in " + (t1-t0)/1000 + " seconds";
println "Number of users in system: " + roller.getUserManager().getUsers().size();

That's a simple little script that will create a Roller instance, get the user manager and print the number of users in the system. I put the calls to System.currentTimeMillis() so we can measure the startup time. Now, let's run it with ./run-groovy rollertest1.gy. When you run it you should see something like this:

$ ./run-groovy rollertest1.gy

Creating Roller instance... 
   Created Roller implementation in 7.388 seconds
Number of users in system: 1
$ _

That's what it looks like when it works. Startup time sucks, doesn't it? I think we can blame most of the statup time on Hibernate. It might be possible to speed things up a bit with pre-compiled mapping files. Anyhow, if the example doesn't work and you see a gigantic stack trace instead, then you've got something wrong in run-groovy and/or hibernate.cfg.xml. You'll need to get this simple example working, or none of the following examples will work either.

Example #1: Creating a new blog#

You need a user to create a blog, so we'll create both. First, the user creation script. I'm going keep things simple and set the user creation parameters up front. After defining the variables, we create a UserData object and set the username, password and other parameters. We get the Roller object from the RollerFactory, begin a transaction as the SYSTEM_USER, call the UserManager.addUser() method to complete user creation, and commit the transaction. Finally, we verify that things worked by fetching the new user and printing its name and id.

Here's a script that creates a user account for Jamaican recording artist Lee "Scratch" Perry. As with example #0 you can run script with ./run-groovy.

createuser.gy

username =    "scratch;
password =    "jam342down";
fullName =    "Lee Perry";
email =       "lee.perry@upsetter.net";
locale =      "en_GB";
timeZone =    "America/Jamaica";

user = new org.roller.pojos.UserData();
user.setUserName(username);
user.setPassword(password);
user.setFullName(fullName);
user.setEmailAddress(email);
user.setLocale(locale);
user.setTimeZone(timeZone);
user.setDateCreated(new java.util.Date());

roller = org.roller.model.RollerFactory.getRoller();
roller.begin(org.roller.pojos.UserData.SYSTEM_USER);
roller.getUserManager().addUser(user);
roller.commit();

user = roller.getUserManager().getUser(username);
println "Created user ${user.userName} with id ${user.id}";

When you run that, you'll see something like this:

$ ./run-groovy createuser.gy
Created user scratch with id 402881e40751c5ec010751c5f7cd0001
$ _

To create a blog, use the UserManager's createWebsite() method. "Website" you wonder? That's historical: Roller weblogs have always been represented by WebsiteData objects and stored in the website table in the database. That's enough teary eyed reminiscence. Below is a script that rolls up a nice fresh blog for Mr. Perry. First, we define the blog creation parameters. After that we get the Roller object, begin a transaction as the SYSTEM_USER, fetch Perry's user object, call UserManager.createWebstite() to create the website and commit the transaction. Finally, we verify that creation worked by fetching the blog and print its name and id.

createblog.gy

username =    "scratch";
blogname =    "Technomajikal";
description = "Who put the voodoo pon reggae";
handle =      "scratchblog";
theme =       "basic";

roller = org.roller.model.RollerFactory.getRoller();
roller.begin(org.roller.pojos.UserData.SYSTEM_USER);
user = roller.getUserManager().getUser(username);
website = roller.getUserManager().createWebsite(
   user, 
   null, // hmm... this argument needs to go away 
   handle, 
   blogname,
   description,
   user.getEmailAddress(),
   theme,
   user.getLocale(),
   user.getTimeZone());
roller.commit();

blog = roller.getUserManager().getWebsiteByHandle(handle);
println "Created blog ${blog.name} with id ${blog.id}";

Example #2: Creating a blog entry#

Now let's create a blog entry in Mr. Perry's blog. After setting up the paramters, we get the Roller object, start a transaction as the SYSTEM_USER, fetch the objects we need, user, blog and category. Next we create the WeblogEntryData object and set the require properties, including entry title and text. Finally, we save and commit the new entry. Easy as pie, but I'll admit the Timestamp fields are a bit annoying.

createentry.gy

username = "scratch";
handle =   "scratchblog";
title =    "Test post";
text =     "Testing 1 2 3 <em>Hello World!</em>";
catpath =  "/General";
 
roller = org.roller.model.RollerFactory.getRoller();
roller.begin(org.roller.pojos.UserData.SYSTEM_USER);

user = roller.getUserManager().getUser(username);
blog = roller.getUserManager().getWebsiteByHandle(handle);
category = roller.getWeblogManager().getWeblogCategoryByPath(blog, null, catpath);

entry = new org.roller.pojos.WeblogEntryData();
entry.setWebsite(blog);
entry.setCreator(user);
entry.setCategory(category);
entry.setPubTime(new java.sql.Timestamp(new java.util.Date().getTime()));
entry.setUpdateTime(new java.sql.Timestamp(new java.util.Date().getTime()));
entry.setTitle(title);
entry.setText(text);
entry.setStatus(org.roller.pojos.WeblogEntryData.PUBLISHED);
entry.save();

roller.commit();

Example #3: Creating entry comments#

Creating a comment is just as easy as creating an entry. Create the object and save it. The only trick here is that we use the entry anchor to fetch the entry to be commented. Each entry has an anchor, which is a unique ID for the entry within the weblog. We assume that you ran example #2 and therefore an entry exists with anchor "test_post".

createcomment.gy

handle =  "scratchblog";
name =    "Dave Johnson";
email =   "dave@example.com";
url =     "http://example.com";
anchor =  "test_post";
email =   "test@example.com";
content = "Testing 1 2 3 <em>Hello World!</em>";
 
roller = org.roller.model.RollerFactory.getRoller();
roller.begin(org.roller.pojos.UserData.SYSTEM_USER);
blog = roller.getUserManager().getWebsiteByHandle(handle);
entry = roller.getWeblogManager().getWeblogEntryByAnchor(blog, anchor);

comment = new org.roller.pojos.CommentData();
comment.setWeblogEntry(entry);
comment.setName(name);
comment.setUrl(url);
comment.setPostTime(new java.sql.Timestamp(new java.util.Date().getTime()));
comment.setContent(content);
comment.setNotify(Boolean.FALSE);
comment.save();

roller.commit();

Example #4: Creating categories and blogroll#

This Groovy Roller thing grown tiresome, so I'm going to short-change you here. Anyways, you don't really need to know how to create a blogroll for your new blogs, because Roller does that for you. The UserManager.createWebsite() method creates the bookmarks specified by the configuration property newuser.blogroll. It also creates the categories specified by newuser.categoies. Take a look at the Roller Configuration Guide to learn how to override those properies in your Roller installation.

Resources#

Example configuration files needed for running Groovy Roller examples.

run-groovy This one is setup for my computer. You'll have to edit those first three export statements to set your Grooovy and Roller homes and the path to your JDBC driver jar. Make the file executable with chmod +x run-groovy. And of course, if you're using Windows then you'll have to convert this thing to a DOS BIATCH file, or whatever it's called.

#!/bin/sh
export GROOVY_HOME=~/groovy
export ROLLER_HOME=~/roller_2.0/build/roller
export JDBCJAR=~/tomcat/common/lib/postgresql.jar

export CLASSPATH=.:\
${GROOVY_HOME}/embeddable/groovy-all-1.0-jsr-03.jar:\
${GROOVY_HOME}/lib/commons-cli-1.0.jar:\
${ROLLER_HOME}/WEB-INF/lib/rollerbeans.jar:\
${ROLLER_HOME}/WEB-INF/lib/rollercontrib.jar:\
${ROLLER_HOME}/WEB-INF/lib/rollerweb.jar:\
${ROLLER_HOME}/WEB-INF/classes:\
${JDBCJAR}:\
${ROLLER_HOME}/WEB-INF/lib/hibernate3.jar:\
${ROLLER_HOME}/WEB-INF/lib/dom4j-1.6.jar:\
${ROLLER_HOME}/WEB-INF/lib/ehcache-1.1.jar:\
${ROLLER_HOME}/WEB-INF/lib/jta.jar:\
${ROLLER_HOME}/WEB-INF/lib/cglib-2.1.jar:\
${ROLLER_HOME}/WEB-INF/lib/asm.jar:\
${ROLLER_HOME}/WEB-INF/lib/asm-attrs.jar:\
${ROLLER_HOME}/WEB-INF/lib/jdom.jar:\
${ROLLER_HOME}/WEB-INF/lib/rome-0.7.jar:\
${ROLLER_HOME}/WEB-INF/lib/rome-fetcher-0.7.jar:\
${ROLLER_HOME}/WEB-INF/lib/log4j-1.2.4.jar:\
${ROLLER_HOME}/WEB-INF/lib/commons-logging.jar:\
${ROLLER_HOME}/WEB-INF/lib/commons-collections.jar:\
${ROLLER_HOME}/WEB-INF/lib/commons-lang-2.0.jar
java -classpath ${CLASSPATH} groovy.lang.GroovyShell $1 $2 $3

hibernate.cfg.xml This one's configured for PostgreSQL with username/password scott/tiger. You'll have to edit it to set your database connection parameters.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost/rollerdb_20</property>
        <property name="hibernate.connection.username">scott</property>
        <property name="hibernate.connection.password">tiger</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <mapping resource="org/roller/business/HitCountData.hbm.xml" />
        <mapping resource="org/roller/pojos/BookmarkData.hbm.xml" />
        <mapping resource="org/roller/pojos/CommentData.hbm.xml" />
        <mapping resource="org/roller/pojos/EntryAttributeData.hbm.xml" />
        <mapping resource="org/roller/pojos/FolderAssoc.hbm.xml" />
        <mapping resource="org/roller/pojos/FolderData.hbm.xml" />
        <mapping resource="org/roller/pojos/WeblogTemplate.hbm.xml" />
        <mapping resource="org/roller/pojos/PingCategoryRestrictionData.hbm.xml" />
        <mapping resource="org/roller/pojos/AutoPingData.hbm.xml" />
        <mapping resource="org/roller/pojos/PingQueueEntryData.hbm.xml" />
        <mapping resource="org/roller/pojos/PingTargetData.hbm.xml" />
        <mapping resource="org/roller/pojos/RefererData.hbm.xml" />
        <mapping resource="org/roller/pojos/RoleData.hbm.xml" />
        <mapping resource="org/roller/pojos/RollerConfigData.hbm.xml" />
        <mapping resource="org/roller/pojos/UserData.hbm.xml" />
        <mapping resource="org/roller/pojos/UserCookieData.hbm.xml" />
        <mapping resource="org/roller/pojos/WeblogCategoryData.hbm.xml" />
        <mapping resource="org/roller/pojos/WeblogCategoryAssoc.hbm.xml" />
        <mapping resource="org/roller/pojos/WeblogEntryData.hbm.xml" />
        <mapping resource="org/roller/pojos/WebsiteData.hbm.xml" />
        <mapping resource="org/roller/pojos/RollerPropertyData.hbm.xml" />
        <mapping resource="org/roller/pojos/PermissionsData.hbm.xml" />
        <mapping resource="org/roller/pojos/PlanetConfigData.hbm.xml" />
        <mapping resource="org/roller/pojos/PlanetGroupData.hbm.xml" />
        <mapping resource="org/roller/pojos/PlanetEntryData.hbm.xml" />
        <mapping resource="org/roller/pojos/PlanetSubscriptionData.hbm.xml" />
        <mapping resource="org/roller/pojos/PlanetGroupSubscriptionAssoc.hbm.xml" />
    </session-factory>
</hibernate-configuration>

log4j.propeties No need to edit this unless you want to change loggging levels.

log4j.rootCategory=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} | %C{1}:%M | %m%n
log4j.category.org.roller=ERROR
log4j.category.org.hibernate=ERROR
log4j.category.org.apache.struts=ERROR
log4j.category.org.apache.velocity=FATAL

ehcache.xml No need to change this either, unless you know something about EHCache.

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        overflowToDisk="true"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        />
</ehcache>

Tags: Roller

Roller 2.0 goes live on blogs.sun.com

Linda Skrocki: Dave and Allen just promoted Roller 2.0 to blogs.sun.com. A couple of the hot new features are group blogging (one weblog - multiple authors) and lots of user interface enhancements that Josef (UI/UE guru) helped the team iterate.

Kudos to Dave, Allen, Josef & the rest of the Roller development team!
And there was much rejoicing! You'll hear more about Roller 2.0 as we try to coax a release out of the Apache Incubator.
Tags: Roller

State of spam prevention in Roller

I've started a proposal for improving spam prevention measures in Roller. I posted the first part of the proposal on the Roller wiki, which covers the state of spam prevention in Roller (as of Roller 2.0, which is just about ready for release). Later this week, I'll propose specific features and bug fixes to address Roller's limitations in this area.

Tags: Roller

What the Flock!?!

David Czarnecki explains why Flock's blog editor doesn't work with Drupal, Blojsom, Roller and (probably) many other blog servers. Flock is sending an integer for the publish parameter when it should be sending a boolean. Here's the bug report.

Tags: Roller

Back to Roller

Raible's got a timely find on this first morning of BlogOn 2005, a happy Roller user who writes (and I'm picking the same except that Raible did):

Roller, on the other hand, uses things like Hibernate to abstract away queries from the underlying DB implementations, and Velocity to separate out the display logic from the business logic. And blogging software does have business logic, or a model; blog entries and categories and tags and authentication and the manipulation thereof are not simple. As a result, I see features being added to Roller that I'm surprised to see happening so quickly.

There's a surprising (or perhaps not so surprising) number of PHP programs, intricate ones at that, that have developers who didn't bother to abstract away the database layer, and wrote DB-vendor-dependent queries. That's a pretty horrible thing to do, since it ties you quite firmly down to one DB (in many cases MySQL). The SQL code is often very tightly integrate with the display code; it's bad enough in the business layer, but the view layer as well? Good gods.

Very nice. Architecture is only one of the many reasons you should consider Roller for any large or "enterprise blogging" installation. And it's only one of the reasons that Roller is advancing so quickly; some great developers have joined the team recently (Allen Gilliland and Elias Torres for example) and we've got demanding bloggers at both Sun Microsystems and IBM pushing us along.

Tags: topic:{technorati}[BlogOn], topic:{technorati}[BlogOn2005], topic:{technorati}[Roller Weblogger], topic:{technorati}[Enterprise Blogging], topic:{technorati}[Sun Microsystems], topic:{technorati}[IBM]

Tags: Roller

Roller 2.0 user guide, first draft available

I updated the Roller User Guide for Roller 2.0 today. The new user interface and group blogging features are documented with plenty of screenshots. Comments, corrections and suggestions for improvement are welcome.

Tags: roller

Mildly historic moment

I don't want to brag of course, but it appears that Roller has the most complete Atom Protocol 04 implementation around. As Tim Bray notes, my server was the only one on the air for yesterday's Atom interopathon. We tested post, put and delete of entries and my implementation was a little brittle in places, but it held up. Roller's Atom implementation is in the sandbox and won't be included in Roller 2.0 because the protocol is not yet done. I'm hoping for Protocol 05 real soon now.

Why do I care so much about Atom Protocol? Simple. I can't finish my book without it.

Here's the mildly historic moment that Tim mentioned:

screenshot of an IRC chat session
Tags: Roller

Elias Torres joins the Roller team

Welcome to Elias, who brings the Roller committer count up to seven (in chronological order: Dave, Matt, Lance, Anil, Henri, Allen, and now Elias). Elias runs one of the biggest Roller installs in the world at IBM and he's got lots of cool feature ideas and practical suggestions for improving Roller.

Mailing-list traffic and interest in Roller really seems to have picked up recently. I'm not sure if that's due to interest in Roller 2.0 or the ongoing move to Apache, but either way that's a good thing for Roller developers and users alike.

Tags: Roller

Powered by roller_2.0

As of now, this site is running the very latest code from the roller_2.0 branch in the Apache Incubator's Subversion repository.

I also setup a new JSPWiki theme called roller2, which you can see on the Roller wiki, and a new Roller theme called roller2, which you can see on the Roller project blog. Both themes need a little work because it is not as easy as it should be to navigate around the site.

Tags: Roller

IBM helping with Roller

When I found out about the big Roller installation inside IBM, I urged the IBM guys to move to Roller 1.0 and to help out with Roller development. Well now, looks like that's happening (tho they're probably going to skip straight to Roller 2.0). IBM blogger Elias Torres has been participating on the Roller list, submitting patches (for Apache Derby and IBM DB2 support) and showing great interest in further contributions. So, I just want to say: thanks Elias!

Wondering what's going on with Roller and Derby? Elias has submitted a couple of patches, but Derby support is not quite there yet. I think there's a pretty good chance we'll be able to work out the issues in the 2.0 timeframe. One of the reasons I upgraded Roller to use Hibernate3 yesterday (the 2.X to 3.0 migration was quite a pain, BTW) was to help Elias along. He may have to fine-tune Hibernate's Derby and he'd much rather do that with a modern version of Hibernate (we were on Hibernate 2.1.4 before).

Tags: Roller

« Previous page | Main | Next page »