« RSS best practices... | Main | ConvergeSouth 2007,... »

Ten types of plugins supported by Roller 4.0

Roller 4.0 logo I'm working on documenting the Roller plugin system, comparing it to similar systems (e.g. Wordpress and Confluence) and coming up with some proposals for improvements. As part of that work, I've come up with a list of the plugin types supported by Roller 4.0:

  1. Page Model Plugin (Interface: PageModel)
    Allows you to make new objects available to Roller page templates, providing a way to display external data in the blog pages and feeds generated by Roller.
  2. Weblog Editor UI Plugin (Interface: WeblogEntryEditor)
    Plugin your own Rich Text or other type of editor into the New/Edit Entry page in the Roller web UI. Roller comes with two such plugins: a plain-text editor and a rich-text editor based on Xinha.
  3. Weblog Entry Plugin (Interface: WeblogEntryPlugin)
    Allows you to transform weblog entry content at the time it is displayed in a weblog page or a feed. Once you've installed your entry plugin, blog authors can enable and disable it on a per entry basis. For example, if you've got the Wiki Plugin installed then bloggers can choose to blog using wiki syntax and the plugin will transform the wiki syntax to HTML on display.
  4. Weblog Entry Comment Plugin (Interface: WeblogEntryCommentPlugin)
    Allows you to transform comment content at the time it is displayed in a weblog page or feed. By default, Roller uses a link-markup plugin to turn URLs into clickable links, an auto-format plugin to add paragraph breaks and a safe-subset plugin to strip out all but the safest HTML tags. You can add new comment formatter plugins or replace the existing ones.
  5. Comment Authenticator Plugin (Interface: CommentAuthenticator)
    Plugin your own comment authenticator to replace the math-question test used in most Roller blogs. Allows you to add some additional HTML to the comment form and some server-side logic for authenticating comment posts. You could add a CAPTCHA test this way, but I'm not sure there's enough pluggability to support OpenID authentication.
  6. Comment Validator Plugin (Interface: CommentValidator)
    Allows you to add additional comment spam filters to Roller. Your filter can examine each comment posted and report to Roller whether it appears to be spam or not. Roller includes an Akismet validator, a too-many-links validator and a trackback validator.
  7. Renderer Plugin (Interfaces: RendererFactory and Renderer)
    Allow you to plugin a renderer for a specific template language name. Roller's stock templates and theme all use the Velocity template language, but by plugging in your own renderer you can author templates in whatever JVM based language you wish. For example, plugins exist for authoring Roller templates in JavaScript, JRuby and Groovy Server Pages (GSP) languages.
  8. Request Mapper Plugin (Interface: RequestMapper)
    Allows you to plugin to Roller's URL structure and request handling system, like adding a Servlet but not requiring you to edit web.xml.
  9. Cache system Plugin (Interfaces: CacheFactory and Cache)
    Plugin your own cache system to replace or augment Roller's in-memory cache system. For example, you might want to plugin memcached as your distributed page/feed cache as Sun does for blogs.sun.com.
  10. Repeatable Task (Classes to extend: RollerTask or RollerTaskWithLeasing)
    Roller runs a number of tasks behind the scenes and you can add your own tasks and configure when they start and how often they run. There's also a lease-system for working in a distributed environment.

UPDATE: The Advanced Roller presentation from ApacheCon EU 2008 covers many of the different types of plugins above and gives examples, configuration tips, etc.


Sounds like time for me to play with this. Where should discussions / calls for help happen? - eduard/o

Posted by Eduardo Pelegri-Llopart on October 17, 2007 at 12:47 PM EDT #

Don't worry, we'll come looking for you Eduard/o. Look me up in Namefinder if you want to chat by phone before then. - Dave

Posted by Dave Johnson on October 18, 2007 at 02:09 AM EDT #

A simple google analytics plugin would be cool.

Posted by Thorleif Wiik on October 18, 2007 at 07:07 PM EDT #


What features would you want from a Google Analytics plugin? Would it simply help folks add the correct HTML/JS code to blog pages or is there something else it could do?

- Dave

Posted by Dave Johnson on October 19, 2007 at 12:31 AM EDT #

to use Google Analytics, you've to add a tracking code to each web page. To track downloads (pdf, etc.) and external links, there's also a JavaScript Onclick Action.
It would be cool, to have something similiar like the wordpress plugins on the net. That's more easy for users than modify templates.

Posted by Thorleif Wiik on October 21, 2007 at 11:50 AM EDT #

A Star rating pluin (ex: Jquery rating plugin for Wordpress ..) :) will be a best to rate entries....

Posted by Maruti on April 17, 2008 at 05:20 AM EDT #

Hi, I can't find any documentation regarding initialization and packaging of plugins. Simple HOW-To would suffice. I need to write a RequestMapper plugin, but where do I hook it up ?? web.xml, properties file etc...thanks

Posted by khalid on July 16, 2008 at 11:01 PM EDT #

Hiya, I've been trying to install the example plugin called AuthenticatedUserModel plugin given the instructions and using that to retrieve an authenticated user's email address. I wanted to use this to populate the email field on a comment form. However, I don't get anything back. Upon checking the logs I saw a null pointer exception. Now, I put a log just after the request is retrieved in init(Map params). It seems the request returned is null. Any ideas where I can go from there? I was counting on the HttpServletRequest object being there in the params.get("request") and using that to do all sorts of other stuff but doesn't look like I can get access it. Any help in this regard would be much appreciated. Sarwar

Posted by Sarwar Bhuiyan on December 04, 2008 at 02:15 PM EST #

Post a Comment:
  • HTML Syntax: NOT allowed

« RSS best practices... | Main | ConvergeSouth 2007,... »


This is just one entry in the weblog Blogging Roller. You may want to visit the main page of the weblog

Related entries

Below are the most recent entries in the category Roller, some may be related to this entry.