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:
- 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.
- Weblog Editor UI Plugin (Interface:
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.
- Weblog Entry Plugin (Interface:
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.
- Weblog Entry Comment Plugin (Interface:
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.
- Comment Authenticator Plugin (Interface:
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.
- Comment Validator Plugin (Interface:
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.
- Renderer Plugin (Interfaces:
- Request Mapper Plugin (Interface:
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.
- Cache system Plugin (Interfaces:
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.
- Repeatable Task (Classes to extend:
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.