Ruchira Wageesha /GSoC

Google Summer of Code 2008 – Project Proposal


AtomPub Export for Roller blog server


Wageesha M. B. R.

Email (IM)


Apache Roller is the open source Java blog server that drives Sun Microsystem's employee blogging site, IBM DeveloperWorks blogs, and hundreds of other blogs world wide. Roller supports all of the latest weblogging features such as group blogging, RSS and Atom news feeds, rich-text editing, customizable page templates, comments, trackbacks, referrers, blogroll management and provides Atom Publishing Protocol and XML-RPC interfaces for blogging clients.

This project targets to extend the Roller's AtomPub implementation (which currently uses ROME Propono) to create, edit, update and retrieve all the Roller data such as comments, bookmarks, templates, categories, weblog settings etc. via AtomPub collections using Apache Abdera.


The Atom Publishing Protocol is an HTTP-based approach for content publishing and management. It is designed fundamentally around the idea of using the basic operations of the HTTP protocol such as GET, PUT and DELETE to pass around instances of Atom Feed and Entry documents that represent things like blog entries, podcasts, wiki pages, calendar entries and so on. Roller currently use ROME Propono for it's AtomPub implementation. But Apache Abdera provides a much stronger foundation for building the AtomPub services that Roller needs.

As Abdera's Atom feed parser uses STAX, it consumes less memory and is faster than ROME. Abdera's Atom feed support is more comprehensive than ROME's due to several reasons. So the usage of Abdera is concerned rather than ROME to implement AtomPub collections as it supports signatures, encryption, Atom to JSON, extensions for Threading, Paging, GeoRSS, OpenSearch, GoogleLogin, etc.

Updating the Abdera-based AtomPub implementation for Roller 3.X which is developed by James Snell, to support Roller 4.X and implementing the Roller's AtomPub implementation (which currently supports only blog entries and file uploads with ROME Propono) to create, edit, update and retrieve all the Roller data via AtomPub collections (using Apache Abdera) is the main idea of this project. By defining Collection Adapters which bridge Abdera to Roller, the implementation of AtomPub could be done using Apache Abdera. Defining some Atom format extensions to hold Roller specific setting such as blog entry plugins, comment rules, etc. is also done.

The ultimate goal of this project is to solve the whole blog data portability problem while getting the other blog venders' support to it as well. Then anyone could very easily expose and manage their data from Roller. Finally it is tested with Tim Bray's Atom Protocol Exerciser (APE) and all AtomPub-supporting blog clients.


Project Plan

April 14 - May 25

This month is dedicated to "Community Bonding Period".

May 26 - June 20

Updating Abdera-based AtomPub implementation from 3.X to 4.X.

Note: If James Snell could not get the needed approvals by the last week of May then I will have to go through the basics too of Abdera-based AtomPub implementation with the help of Snell. Project was scheduled considering the worst case. So if Snell gets the needed approvals I will be able to finish it little bit earlier than in the timeline.

June 21 - July 7

Atom format extension and implementation of AtomPub to expose all Roller data using Abdera

July 8

Submitting the project for mid term evaluation

July 10 - August 10

Extending AtomPub implementation to create, edit and update Roller data

August 11 - August 25

Bug fixing, Testing and Documenting


I am a third year student specializing Computer science and Engineering for my B.Sc. Engineering degree at University of Moratuwa, Sri Lanka. I am new to Open source software development but I am very interested in enrolling with Open Source Developments. I have done several Web Services projects in the university and during my internship as well. One of the projects I have done during my internship could be referenced at It is a WSDL 2.0 generator for Web Forms which is done using XSLT and Java (source code I have a good experience in JAVA, JSP, REST, XML, WSDL, Web Services, XSLT, XPath and Web Syndication (Atom, RSS).